Привествую Всех. Кто как опрашивает кнопки в Протоне??? У меня стоит 3 кнопки (програмирование, плюс+ и минус-). Как их правильно опрашивать чтобы небыло задержек и дребезгов?
Функция Button что то не очень нравится, возможно неправильно пробывал. Нужно так: нажимаю на кнопку "Прог" ничего не происходит. Если нажать и подержать 2-3 сек. входим в меню. С кнопками + и - если нажали один раз добовляет/убовляет значение. Если кнопку удерживать добовляется быстрее.
У кого какие идеи?
Сообщение отредактировал
aftaev - Ср, 21.10.2009, 22:16
Какой процессор, какие таймеры? Идея такая: по прерыванию от таймера, допустим TMR0, опрашиваются состояния кнопок и ставятся соответствующие флаги. По флагу запускается второй таймер, который отсчитывает длительность нажатия. После чего выполняются определенные действия, в зависимости от потребностей. Это для одной кнопки. Используйте флаги!!!
aftaev, слушайте, какая помеха, какие ложные срабатывания на "0'', что за устройство, что вы вообще хотите получить? Везде на всех форумах действует принцип "КАКОВ ВОПРОС, ТАКОВ И ОТВЕТ". Хотите чтобы Вам дали полный, компетентный и удовлетворяющий Вас ответ, ФОРМУЛИРУЙТЕ КОРРЕКТНО И ПОЛНО Ваш вопрос, так чтобы Вас понимали. Здесь же вы задали вопрос:
Quote (aftaev)
Кто как опрашивает кнопки в Протоне??? У меня стоит 3 кнопки (програмирование, плюс+ и минус-). Как их правильно опрашивать чтобы небыло задержек и дребезгов?
Я Вам посоветовал как. Лично я так делаю. В коде if PORTB.0= 0 Then DelayMS 50 после ТHEN работает пауза в 50 милисекунд, которая является антидребезговой защитой, в течении этого времени ничего не проскочит ни 0 ни единица.
Если есть какие-то ограничения в алгоритме работы вашего устройства, нужно было подробно описать их тоже.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Я с кнопками делаю так (считаю что нажатие кнопки длится не менее 0,2сек): count1 - счетчик1 count2 - счетчик2 . lop1: . if PORTB.0= 0 Then INC count1: DelayMS 20 . if PORTB.0= 0 Then INC count2 . if count1<10 then goto lop1 ' Eсли 7 раз из 10 обнаружили кнопку нажатой, . if count2>=7 then knopka nazata ' считаем что она действительно была нажата.