Составители:
250
Рис. 140. Граф конечного автомата определения: нажата или отпущена клавиша? (а), временная
диаграмма работы автомата (б)
Клавиша может находиться только в двух состояниях (рис. 140, а): клавиша
нажата (FSM_KEY_PRESSED) и клавиша не нажата (FSM_KEY_RELEASED).
Сначала в обработчике прерывания от таймера выполняется опрос клавиши на
предмет ее замкнутости/разомкнутости. В процессе этого опроса счетчик
нажатий клавиши key_count инкрементируется или декрементируется
соответственно. Далее в виде конечного автомата реализуется алгоритм
определения нажатия/отпускания клавиши
на основе значения счетчика
нажатий клавиши: если значение key_count превышает порог нажатия клавиши
KEY_PRESSED_COUNT, то фиксируется ее нажатие (записывается сообщение
MSG_KEY_PRESSED в буфер клавиатуры); если значение key_count падает
ниже порога отпускания клавиши KEY_RELEASED_COUNT, то фиксируется ее
отпускание (записывается сообщение MSG_KEY_RELEASED в буфер
клавиатуры). Таким образом используется свойство гистерезиса: любой шум
(дребезг), любые помехи с амплитудой
, меньшей величины
(KEY_PRESSED_COUNT – KEY_RELEASED_COUNT), отсекаются, а
Страницы
- « первая
- ‹ предыдущая
- …
- 249
- 250
- 251
- 252
- 253
- …
- следующая ›
- последняя »
