|
// пусть все подключено на порт2, p2.0...p2.2 - столбцы, p2.3 - p2.6 - строки
union {
unsigned short int keys;
char KEY_0 : 1;
char KEY_1 : 1;
char KEY_2 : 1;
char KEY_3 : 1;
char KEY_4 : 1;
char KEY_5 : 1;
char KEY_6 : 1;
char KEY_7 : 1;
char KEY_8 : 1;
char KEY_9 : 1;
char KEY_A : 1;
char KEY_B : 1;
} key_state;void main () // это все в прерывание INT0 засунуть
{
char row, col;
key_state.keys = 0;
key_state.KEY_0 = 1;
for (row = 0; row < 4; row++) {
P2 = 0xff & ~ (1 << row);
// тут неплохо бы паузу для перезарядки емкостей линий
for (col = 0; col < 3; col++) {
if (!(P2 & (1 << col))) {
key_state.keys |= (row << 2 + 1 << col);
}
}
}
}
E-mail: info@telesys.ru