Обработка Нажатия Кнопки

15-09-2013, 15:59 От: admin Посмотрели: 927
Есть МК PIC16F630 на одной ноге у нее кнопка без фиксации. Нужно в программе отслеживать ее нажатия по такому алгоритму:

нажатие (и ее удержание в нажатом состоянии) менее 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
if not Button(PORTA, 0, 1, 0) then Break;

if Button(PORTA, 0, 1, 0) then begin
Proc; // Это вызывается при удержании кнопки на ~1,5 сек
goto WaitReleaseButton;
end;
..........
WaitReleaseButton:
while not PORTA.B0 do nop;
end; // if Button
end; // while True do begin
end.



При долгом удержании вызывается подпрограмма Proc; которая может и должна выполнятся долгое время



ВОПРОС: Как мне это переделать или доделать или предложите свои вариант

А нужно чтобы во время выполнения Proc обработка кнопки на короткое нажатие осталась.

Т.е. если выполняется Proc а мы во время ее выполнения нажимаем кнопку и удерживаем более 200 мс и тогда нужно

сразу прервать код Proc; и вернуться в главный цикл программы.

Не судите строго, только начинаю изучать МК, а микропаскаль потому что с Delphi знаком.
Раздел: Алгоритмы

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Обработка Нажатия Кнопки все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930