А вот еще обработка клавиши, с автоповтором
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено vet 09 июня 2004 г. 13:45
В ответ на: Прошу совета по AVR отправлено suhum 09 июня 2004 г. 11:46

Дело происходит в обработчике прерывания от таймера

 [pre]

#define TIMER_PERIOD 10 /* мс - тик таймера */
/* задержки */
#define PRE ( 40/TIMER_PERIOD) /* перед 1-й сработкой */
#define REPDEL (800/TIMER_PERIOD) /* перед 2-й сработкой */
#define REPPER (160/TIMER_PERIOD)

char fKey1, /* флаг нажатия */
fHoldKey1; /* вспомогательный флаг автоповтора */


//а вот обработчик
if (iKey1!=0) iKey1--;

if (KEY1_PRESSED) {
if (iKey1==0) {
fKey1 = TRUE;
if(!fHoldKey1) {fHoldKey1 = TRUE; iKey1 = REPDEL;} //50 мс после нажатия - ген.событие
else iKey1 = REPPER; //50+800мс и далее через кжд.200мс - ген.событие
}
}
else {fHoldKey1 = FALSE; iKey1 = PRE;} //если нажаты обе или ни одной - сбросить сч-ки

[/pre]



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

Ответы



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

E-mail: info@telesys.ru