Авторизация


...

Кто на сайте?

Сейчас 144 гостей и 2 зарегистрированных пользователей на сайте

  • inmiernikwesto

Статистика

-Посетители : 23739
-Материалы : 209

Пользователь сайта продает...

  ENC28J60

Пользователь сайта покупает...

Обработка клавиатуры в прерывании

Автор: Александр Милевский Просмотров: 2574

 


Схема такая же, как и в предыдущей статье на 4 кнопки.

 

Возможно еще увеличить до  8 и 16 кнопок с минимальными изменениями  в опросе клавиатуры и увеличении используемых выводов мк. Как это сделать - в предыдущей статье.  Кнопки подключаются на те же выводы порта, куда подключена шина данных жк индикатора. Конечно, можно и не подключать жк, это, как говорится, лишний бонус.

Предлагаемая клавиатура работает по своему основному назначению, определяет нажатую кнопку, подтверждает нажатие звуковым сигналом, частотой 0,5КГц, определяет длительное нажатие кнопки, включает задержку, и, после её завершения,  выставляет флаг этого состояния. По логике основной программы, когда необходимо, следует опросить этот флаг  и выполнить задуманное действие. Например, при вводе цифр ускорить ввод и т.д.   
 
      Программа  разбита на две функциональные части.
- опроса кнопок, анализа их состояния
- обработчика прерываний  
В обработчике прерываний формируется меандр 0,5КГц на выводе порта ( если разрешено) и идет счет антидребезговой задержки нажатой кнопки.
Прерывания происходят через 1 мс от  таймераTMR0.
Используется пять регистров памяти данных. Их количество постоянно и не зависит от  количества кнопок.
  Определение длительного нажатия кнопки происходит по сравнению регистра получившего предыдущий код кнопки с текущим кодом нажатой кнопки.
 Задержка длительного нажатия, после которого выставляется флаг этого состояния,  привязан только к количеству подтвержденного нажатия кнопки.
Т.е. если программа определила, что нажата кнопка S1, а при следующем опросе опять S1 ( c учетом антидребезговой задержки 40мс и времени между опросами клавиатуры в основной программе ), то включается программный счетчик, который при подтверждении 10 таких совпадений установит флаг длительного нажатия.
 Программа обработки клавиатуры очень проста, не содержит никаких программных трюков и работает надежно.
 Включение звука можно выполнить также  при других условиях  и на другое время. Так же легко звук отключить, когда это необходимо. Например, при вводе цифр происходит ускоренный перебор, совершенно не нужно непрерывного писка при удержании кнопки.
Текст программы с комментариями  можно скачать

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

Емкостной измеритель уровня ГСМ в емкостях.

18-04-2015 Александр Маюнов

Емкостной измеритель уровня ГСМ в емкостях.

Каждый хозяйственный человек хранит в своих подсобках закрома, которые не надо видеть никому кроме него, наверно я из таких. Речь пойдет о двухсотлитровых бочках с топливом и о средствах измерения уровня ГСМ в них. Стародедовский способ измерения уровня топлива палкой...

Сторожевой таймер WDT.

08-08-2011 Super User

Сторожевой таймер (WDT) есть во всех микроконтроллерах 18 серии. Задействован в  основном в тех приложениях, где требуется производить  "перезагрузку"  микроконтроллера в случае возникновения сбоев при выполнении программы. В приложениях, где задействован сторожевой таймер, необходимо с определенным интервалом времени сбрасывать таймер WDT,...

Организация памяти программ контроллеров среднего семейства. Выполнени…

03-04-2013 Александр Милевский

Организация памяти программ контроллеров среднего семейства. Выполнение вычисляемого перехода и перехода между страницами.

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

Получение синусоидального сигнала с ЦАП микроконтроллера.

14-01-2016 Николай Викторов

Получение синусоидального сигнала с ЦАП микроконтроллера.

В некоторых микроконтроллерах есть встроенные модули DAC(цифро-аналоговый преобразователь) в частности PIC12F1822  о котором далее пойдет речь  и хотя в данном МК разрядность модуля не велика, но все равно можно получить относительно неплохой синусоидальный сигнал. Вообще сам метод применим и к...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru