реклама на сайте
подробности

 
 
> Клавиатура 8x8, Есть какие нить примерчики
BlauTood
сообщение Mar 16 2005, 08:30
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



Собственно subj:


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Mar 16 2005, 09:15
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А что собственно нужно?
Я реализую клаву так - обработчик по таймеру которые в очередь кидает коды нажатых клавишь (так и в PC сделано очередь проще всего и сделать как она в биосе была реализована еще под ДОСОМ)

Антидребезг проще всего делать не на каждую кнопку а целиком на байт (8 кнопок)

я делаю примерно так

typedef struct {
BYTE Current;
BYTE Count;
BYTE Prev;
} KbdRow;

static KbdRow KbdData[KBD_ROW_COUNT];

void KbdRowCheck(KbdRow* Row, BYTE RowVal, BYTE Code)
{
BYTE Prev;

Prev=Row->Prev;
if (RowVal==Prev) goto Skip;

if (Row->Current!=RowVal) {
Row->Count=KBD_SAME_COUNT;
Skip:
Row->Current=RowVal;
return;
}

if (!--Row->Count) {
Row->Prev=RowVal;
Prev^=RowVal;
do {
if (Prev & 1) {
FifoPut(KBD, (RowVal & 1) ? Code : Code | 0x80 );
}
Code++;
RowVal>>=1;
} while(Prev>>=1);
}
}

осталсь только вызвать KbdRowCheck на каждую строку матрицы
примерно так

static void KbdHandler(void)
{
BYTE Code;
KbdRow* Row;
Row_PORT=0xFE;
Row=KbdData;
Code=0;
do {
BYTE Tmp;
KbdRowCheck(Row,Key_PORT,Code);
Tmp=(Row1_PORT<<1)|1;
Row1_PORT=Tmp;
Row++;
Code+=8;
} while(Tmp!=0xFF);
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BlauTood   Клавиатура 8x8   Mar 16 2005, 08:30
- - -Tумблер-   Цитата(BlauTood @ Mar 16 2005, 11:30)Собствен...   Mar 16 2005, 09:41
|- - Alexandr   Цитата(-Tумблер- @ Mar 16 2005, 13:...   Mar 16 2005, 11:04
|- - -Tумблер-   Цитата(Alexandr @ Mar 16 2005, 14:04)проводим...   Mar 18 2005, 12:40
|- - Alex_St   Цитата(-Tумблер- @ Mar 18 2005, 15:...   Mar 18 2005, 16:38
|- - -Tумблер-   Цитата(Alex_St @ Mar 18 2005, 19:38)Диоды ста...   Mar 19 2005, 13:51
- - SPS   Мне попадалась клавиатура которая при нажатии на к...   Mar 16 2005, 10:23
- - BlauTood   мне нужно сделать анализ нажатия двух кнопок однов...   Mar 16 2005, 10:39
- - arttab   Может чего не понял, но все просто: матрица 8 на 8...   Mar 17 2005, 16:20
- - Георгий   Цитата".. Ничего то ты не понял, Иван......   Nov 21 2005, 07:21
- - Rash   Код возбми как советовали из AVR240.pdf. Только п...   Nov 21 2005, 07:40
- - &-rey   Если еще нужно могу предложить свой вариант 4x4, в...   Nov 21 2005, 08:22
- - Георгий   Я уточняю вопрос: каким кодом клавиатура включает ...   Nov 21 2005, 12:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 00:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016