Да именно так..Chip115 писал(а):Должно быть на оборот...с диодов считывать . так?
Ты просто торопишься.. мя-же те написал про возвратные линии, а возвратные, это с которых считывается состояние матрицы клавиатуры..
Ничего, не тушуйся..
Да именно так..Chip115 писал(а):Должно быть на оборот...с диодов считывать . так?
Про сопротивления не забудь..Chip115 писал(а):Сча правлю код )

Код: Выделить всё
P1MDOUT = 0x38; // P1.3-1.5 POut
Что-то где-то не так. Мне кажется, неверный подход в присваении Р1, а потом в проверке его же значения — МК может взять значения из выходного буфера, а не считывать входной. Надо выставить единицы и нули на порте1 там, где это надо для сканирования SB3 (я не до конца понял где), а потом проверять конкретную ногу. Причём можно назначить ей имя и проверять, например, так: if(SB3 == 0)...Chip115 писал(а):например хочу отследить нажатие кнопки SB3.
Выставляю на порт P1=0x08; // 001000
и проверяем условие
if (P1==0x0C) // нажата sb3? 001100
{
}
Проблема в том что при нажатии на кнопку, на P1.2 приходит 1,3 В. В момент нажатия напруга проседает на P1.4 до 2 В.
вот как я порт инициализировалКод: Выделить всё
P1MDOUT = 0x38; // P1.3-1.5 POut
Совершенно согласен с пушистым Gudd-Head-ом..Gudd-Head писал(а): потом проверять конкретную ногу.
Приветствую, пушистый..BOB51 писал(а):не забывайте про "антидребезг"
Ну дык, и я про то же. Это какие должны быть жёсткие наводки, чтобы вместо "1" — "0" читалсяChip115 писал(а):В общем действительно проблема с кодом опроса клавы...
Про дребезг не забудь..Chip115 писал(а):Буду просто проверять флаги .
Первая, самая жёсткая - сопля на питание, а вторая - на корпус..Gudd-Head писал(а):то какие должны быть жёсткие наводки
Код: Выделить всё
35 $MOD8F300
****----------------------------^-^---------^
****ERROR #1: Illegal character
****ERROR #10: Illegal or missing expression
****ERROR #1: Illegal characterЭто только ошибки? Наверное, нужен полный листинг.МитяРа писал(а):Кто нить с подобными ругательствами сталкивался?
Код: Выделить всё
1 ;-----------------------------------------------------------------------------
2 ; F30x_ADC0
3 ;-----------------------------------------------------------------------------
4
5 $MOD8F300
****----------------------------^-^---------^
****ERROR #1: Illegal character
****ERROR #10: Illegal or missing expression
****ERROR #1: Illegal character
6 $TITLE(F300_ADC)
7 $PAGEWIDTH(132)
8 $NOPAGING
9
5FB4 10 SYSCLK EQU 24500 ; SYSCLK frequency in kHz
11
12
13
0000 14 org 0
15
0000 16 ADC0_Init:
0000 75E802 17 mov ADC0CN, #02h ; ADC0 disabled, normal
18 ; track mode, ADC0 conversions
19 ; initiated by overflow of
20 ; Timer2
0003 75BBF8 21 mov AMX0SL, #0f8h ; select temp sensor as ADC0 input
22
23 ; ADC conversion clock <= 7.5 MHz
0006 75BC18 24 mov ADC0CF, #((SYSCLK / 7500) SHL 3)
25
0009 43BC02 26 orl ADC0CF, #02h ; PGA gain = 2
27
000C 75D10E 28 mov REF0CN, #0eh ; enable temp sensor; VREF = VDD;
29 ; bias generator is on
000F 43E604 30 orl EIE1, #04h ; enable ADC0 End of Conversion
31 ; Interrupt
0012 22 32 ret
33
34 ;-----------------------------------------------------------------------------
35 ; End of file.
36
37 END
VERSION 1.2h ASSEMBLY COMPLETE, 3 ERRORS FOUND
ERROR SUMMARY:
Line #5, ERROR #1: Illegal character
Line #5, ERROR #10: Illegal or missing expression
Line #5, ERROR #1: Illegal character
ADC0CF . . . . . . . . . . . . . D ADDR 00BCH PREDEFINED
ADC0CN . . . . . . . . . . . . . D ADDR 00E8H PREDEFINED
ADC0_INIT. . . . . . . . . . . . C ADDR 0000H NOT USED
AMX0SL . . . . . . . . . . . . . D ADDR 00BBH PREDEFINED
CPT0CN . . . . . . . . . . . . . D ADDR 00F8H PREDEFINED
EIE1 . . . . . . . . . . . . . . D ADDR 00E6H PREDEFINED
EIP1 . . . . . . . . . . . . . . UNDEFINED NOT USED
IE . . . . . . . . . . . . . . . D ADDR 00A8H PREDEFINED
IP . . . . . . . . . . . . . . . D ADDR 00B8H PREDEFINED
PCA0CN . . . . . . . . . . . . . D ADDR 00D8H PREDEFINED
PSW. . . . . . . . . . . . . . . D ADDR 00D0H PREDEFINED
REF0CN . . . . . . . . . . . . . D ADDR 00D1H PREDEFINED
SCON0. . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SMB0CN . . . . . . . . . . . . . D ADDR 00C0H PREDEFINED
SYSCLK . . . . . . . . . . . . . NUMB 5FB4H
TCON . . . . . . . . . . . . . . D ADDR 0088H PREDEFINED
TMR2CN . . . . . . . . . . . . . D ADDR 00C8H PREDEFINED Код: Выделить всё
EIP1 . . . . . . . . . . . . . . UNDEFINED NOT USED Ничего в этом не понимаю, я писал в Silicon Laboratories IDE с КЕЙЛовским (?) компилятором СИ. У меня есть лекарство на снятие всех ограниченийМитяРа писал(а):Напомню, что IDE-шник не SiLabs-кий, а Cygnal-овский, версии 1.3 - он шёл с Металинковским АСМом безо всяких ограничений..
А начиная с версии 1.4 уже был "кастрированный" КЕЙЛ..
Ты вроде написал, что на АСМе пишешь..Gudd-Head писал(а):компилятором СИ
И там же я написал, что для СиЛаба пришлось фигачить на СИ. Кстати, я для того и попросил уважаемую администрацию сделать отдельную прикреплёную тему " Вопросы по С/С++ (СИ)", не привязаную к АВРовским компиляторам, т.к. с СиЛабами тут практически никто не работает.МитяРа писал(а):Ты вроде написал, что на АСМе пишешь..![]()