Как обычно это делается
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 22 ноября 2004 г. 12:53
В ответ на: Клавиатурный интерфейс??? отправлено User_Atmel 22 ноября 2004 г. 12:28

1) Определение состояния клавиш Key. Обычно путем опроса по таймеру с интервалом 20..100мс чтобы подавить дребезг. Старое состояние запоминается.
2) Определение нажатия клавиши - flag = flag |((lastKey xor Key)and Key) - флаг устанавливается по факту нажатия клавиши. Обычно делается там же, где и опрос. Программа опроса только устанавливает флаг.
3) В основной программе проверяется флаг и, если установлен, выполняется необходимое действие и сбрасывается флаг.
4) Если нужен автоповтор действия, то в программе опроса если кнопка нажата некоторое время через определенный интервал времени снова выставляется флаг. Обычно задается 2 параметра - время начала автоповтора AutoStart(0.5..2c) и интервал автоповтора AutoInterval (0.2..1с). Делается с помощью счетчика в программе опроса:
Если кнопка не нажата счетчик устанавливается в AutoStart.
Счетчик уменьшается на 1.
Если счетчик==0, формируется флаг и счетчик устанавливается в AutoInterval. Если допускается автоповтор только на 1 кнопку, счетчик делается 1 на все клавиши.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru