Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.09.13 10:50. Заголовок: Обработчик кнопки
Есть МК на одной ноге у нее кнопка без фиксации. Нужно в программе отслеживать ее нажатия по такому алгоритму: нажатие (и ее удержание в нажатом состоянии) менее 200 мс игнорировать. нажатие до ~1300 - короткое нажатие нажали и удержали на 1300 и более удержание кнопки (долгое нажатие). Как-то вот так я это сделал: цитата: | ...... Label WaitReleaseButton; procedure Proc; var N: Byte; begin for N:= 1 to 3 do begin Func; Delay_ms(3000); end; end; //--------------------- Main ------------------------- var N: Word; begin while True do begin ......... if Button(PORTA, 0, 200, 0) then begin .......... //Тут код при кратковременном нажатии for N:= 1 to 1500 do begin if not Button(PORTA, 0, 1, 0) then Break; end; if Button(PORTA, 0, 1, 0) then begin Proc; // Это вызывается при удержании кнопки на ~1,5 сек goto WaitReleaseButton; end; .......... WaitReleaseButton: //приостановить программу пока не отпустили кнопку while not PORTA.B0 do nop; end; end; end. |
| При долгом удержании вызывается подпрограмма Proc; которая может и должна выполнятся долгое время ВОПРОС: Как мне это переделать или доделать или предложите свои вариант А нужно чтобы во время выполнения Proc обработка кнопки на короткое нажатие осталась. Т.е. если выполняется Proc а мы во время ее выполнения нажимаем кнопку и удерживаем более 200 мс и тогда нужно сразу прервать код Proc; и вернуться в главный цикл программы.
|
|
|
Ответов - 1
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 28.09.13 09:13. Заголовок: Для начала забыть па..
Для начала забыть паскаль как страшный сон . А там глядишь и озарение снизойдет.
|
|
|