// Считывание состояний клавиатуры
unsigned char HARD::GetKey(void)
{
unsigned char BLow = 0x00; // Обнуляем слова состояния кнопок
//--------------------------------------------------
// Считываем состояние кнопок
if(!(PINC & BIT(HARD::SBReceipt))) BLow |= BIT(HARD::BReceipt);
if(!(PINC & BIT(HARD::SBReset))) BLow |= BIT(HARD::BReset);
if(!(PINC & BIT(HARD::SBChecking))) BLow |= BIT(HARD::BChecking);
//--------------------------------------------------
// Обработка кнопок однократного нажатия
LBT[2] = LBT[1]; // Сдвигаем очередь состояний
LBT[1] = LBT[0];
LBT[0] = BLow; // Сохраняем в очередь состояний
BLow = BLow & LBT[1] & ((~LBT[2]) & 0x07);
//--------------------------------------------------
return BLow;
};
Функция вызывается через 20-25 мс, срабатывание кнопок однократное.
Для срабатывания состояние контакта должно быть Р-З-З.