|
Дребезг на клаве, Need your help ! |
|
|
|
Jul 19 2006, 19:02
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Понимаю что вопрос тупой, но всё таки ... Упростил пример до невозможного, а он опять не работает Цитата int main( void ) { byte t1,t2; DDRB=0x0F; // b0-b3 : outputs b4-b7 : inputs DDRD=0xFF; // d0-d7 output
PORTB=0x01;; for(;;) { __delay_cycles(160000); // Пихните куда надо t1=PORTB; t2=0x10; t1=t1 & t2;
if (t1==t2) PORTD=0xFF; else PORTD=0x00; } } Хочу чтоб загорелся диод на PORTD после нажатия клав. "1" на 4x4 клавиатуре. Помогите плииииис !!!
Сообщение отредактировал dio - Jul 19 2006, 19:03
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jul 19 2006, 21:34
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Цитата(impuls-v @ Jul 20 2006, 00:01)  схемку нарисуй. Нет никакой схемки. Использую мегу8, т.к. в клавиатуре задействована только одна клавиша, считайте что это простой вутон, который одним концом идет к B0 (через R=4k7), а другим к B4. Так же ставлю светодиод на одну из ног PORTD. Вооот !!!
|
|
|
|
|
Jul 19 2006, 21:58
|
Знающий
   
Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768

|
Цитата(dio @ Jul 20 2006, 00:34)  Цитата(impuls-v @ Jul 20 2006, 00:01)  схемку нарисуй.
Нет никакой схемки. Использую мегу8, т.к. в клавиатуре задействована только одна клавиша, считайте что это простой вутон, который одним концом идет к B0 (через R=4k7), а другим к B4. Так же ставлю светодиод на одну из ног PORTD. Вооот !!! Читайте внимательно доку ! Раздел дейташита I/O Ports -> Introduction сразу под фигурой 21. У АВР порт имеет _ТРИ_ регистра : DDRx - регистр направлениея данных, PORTx - регистр данных, PINx - порт входных пинов. Первые два доступны на чтение / запись, последний только чтение. При попытке чтения PORTх возвращается _ЗАПИСАННОЕ_РАНЕЕ_ в него значение. Вам надо читать регистр PINB.
|
|
|
|
|
Jul 19 2006, 22:03
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(dio @ Jul 20 2006, 03:34)  Нет никакой схемки. Использую мегу8, т.к. в клавиатуре задействована только одна клавиша, считайте что это простой вутон, который одним концом идет к B0 (через R=4k7), а другим к B4. Так же ставлю светодиод на одну из ног PORTD. Вооот !!! Если используете Bit0 для ввода, то почему маску для Bit4 накладываете? Строка Код t2=0x10; должна выглядеть как Код t2=0x01; А вообще если у вас матрица кнопок, то где у вас процедура ее сканирования?
|
|
|
|
|
Jul 19 2006, 22:24
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Цитата Если используете Bit0 для ввода, то почему маску для Bit4 накладываете? Вообще то B0 это выход, а B4 для ввода, как я понимаю, исправте меня если это не так. Цитата А вообще если у вас матрица кнопок, то где у вас процедура ее сканирования? Полная версия кода лежит отдельно, сначала хочу проверить на одной клавише. Цитата PINx - порт входных пинов. ... последний только чтение. ... Вам надо читать регистр PINB. Если честно, с PINx не знаком пока, надо разобраться. Спасибо !!!
|
|
|
|
|
Jul 19 2006, 22:37
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(dio @ Jul 20 2006, 04:24)  Цитата Если используете Bit0 для ввода, то почему маску для Bit4 накладываете? Вообще то B0 это выход, а B4 для ввода, как я понимаю, исправте меня если это не так. ОК. Согласен. Был невнимателен. Цитата(dio @ Jul 20 2006, 04:24)  Цитата А вообще если у вас матрица кнопок, то где у вас процедура ее сканирования? Полная версия кода лежит отдельно, сначала хочу проверить на одной клавише. Дык потому вас и просили схему нарисовать, чтобы понять что к чему. А то непонятно куда притянут входной пин и почему сканирование лог. 1 делается? Цитата PORTB=0x01;
|
|
|
|
|
Jul 19 2006, 22:43
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Цитата Чтобы его программа пошла, ему достаточно строку : > t1=PORTB; заменить на t1 = PINB; Я всё понял, пробую сейчас же !!! Огромное спасибо Tiro p.s. надеюсь __dellay_cycles(160000); всунул правильно
|
|
|
|
|
Jul 19 2006, 23:55
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Цитата(rezident @ Jul 20 2006, 02:18)  а светодиод зажигается подачей лог. 0 Прежде чем все начать я видел что и другие так делали (через лог. 0) и подумал : " А почему 0 а не 1", и решил сделать свою версию. Я не использую pull-up, скорей всего в этом и проблема. Наверное всетаки перейду на общепринятую версию. Премного благодарен за уделённое Вами мне время !!! Kalinixta !!!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|