[an error occurred while processing this directive]
|
//проверка нажатия клавиш, если не нажата, то 0
//иначе порядковый номер слева направо сверху вниз
//начиная с 1
// 1 2 3 отмена
// 4 5 6 пусто
// 7 8 9 ввод
// пусто 0 . старт/стоп
void check_keys(void)
{
for (i=0; i<4; i++)
{if((PINA&(1<<(ScanCount&0b00000011)))==0)
{ScanCode=ScanCount+1;}
ScanCount++;
}
KeyMask<<=1;
if(ScanCount==16)
{KeyMask=0b11101111;ScanCount=0;
if (ScanCode==OldScan)
{
if (GuardCount==2)
{KeyCode=recode_to_sym[ScanCode];}
else
{GuardCount++;}
}
else
{GuardCount=0;}
OldScan=ScanCode;
ScanCode=0;
}
PORTA=0xff; //against slow discharge input lines
DDRA=0xff;
DDRA=0xf0;
PORTA=(KeyMask|0x0f);
}
//-------------------------------------