Здравствуйте!
Это мое первое сообщение на этом форуме. Недавно начал пользоваться баскомом .
Подскажите пожалуйста корректный код для обработки короткого и длинного нажатия кнопки.
Надо чтобы по короткому нажатию программа переходила на подпрограмму_1, а при длительном нажатии на подпрограмму_2.
Обработка короткого и длинного нажатия кнопки
Сообщений 1 страница 10 из 10
Поделиться12011-03-13 14:37:58
Поделиться22011-03-13 17:26:52
самое простейшее:
сделай цикл, в нем манюсенькую задержку, и инкрименируй переменную, при этом проверяй не отпустили ли кнопку. Если кнопку отпустили - выходи из цикла. По значению переменной вычислишь задержку. Ставишь условие - если переменная меньше скольких то.. переходим туда то, иначе - туда то...
но можно и заморочится с прерываниями и таймерами..
Поделиться32011-08-24 10:37:44
Весь и-нет перерыл и все образно так и пишут.
Может пример кода с комментариями выложите?
Так было бы нагляднее и доходчивее
Поделиться42011-08-24 11:04:46
Все это уже здесь проходили: Двойной "клик" на конопке. Как?
Поделиться52011-08-24 22:16:36
Надо чтобы по короткому нажатию программа переходила на подпрограмму_1, а при длительном нажатии на подпрограмму_2
Для такой задачи проще сделать так:
Если нажата кнопка, ждём, скажем 600 милисек. После проверяем, если всё ещё нажата, переходим на пп2, если нет- на пп1
Поделиться62011-08-25 12:19:36
проще сделать так:...
пытался вот так
Config PORTD.1 = Input Config PORTB.1 = Output Config PORTB.2 = Output Btn Alias PORTD.1 'кнопка Green Alias PORTB.1 'статус1 при коротком нажатии Red Alias PORTB.2 'статус2 при долгом нажатии 'При инициализации светодиоды не светят Red = 0 Green = 0 Do If Btn = 1 Then 'кнопка нажата, тогда Waitms 300 'ждем 300мс if Btn = 1 Then 'кнопка нажата, тогда Red = 1 'включаем красный светодиод, если долгое нажатие Else ' в противном случае Green = 1 'включаем зеленый, если было одиночное End If Loop End
не пашет
ругается на if then expected; end if expected
Хотя, они у меня есть
Кто скажет, где ошибка
Поделиться72011-08-25 15:13:31
Условий у Вас два , а "end if" один. Добавьте ещё один "end if" всё будет ОК.
Поделиться82011-08-25 16:52:13
Добавьте ещё один "end if" всё будет ОК.
Добавил. При компилляции ошибок нет.
А вот в протеусе нажимаю на кнопку, вообще ничего не работает 
Поделиться92011-08-25 17:01:37
Надо так
Config PIND.1 = Input Btn Alias PIND.1 'кнопка
Отредактировано MACTEPok (2011-08-25 17:02:33)
Поделиться102011-08-25 17:08:07
Вот я балда!
Совсем забыл, что чтение порта это PIN
И как я мог ее не заметить. Заработался совсем!
Спасибо, MACTEPok!