Авторизация


...

Кто на сайте?

Сейчас 120 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 244
-Материалы : 214

Обработка клавиатуры в прерывании (асм PIC)

Категория: 2. Обработчики клавиатуры
Автор: MAZ Просмотров: 3083

alt   Продолжение статьи описанный на сайте chipmk.ru
«Вариант создания клавиатуры без прерываний»
Вариант без прерываний не оптимален, так как требует ждать время фиксированных задержек, программа ничего полезного в это время не делает.
Для многих программ это не критично, но так делать просто неудобно и не оптимально.
  Предлагаемый вариант клавиатуры гибче, практически не занимает время основного цикла программы.  Основная обработка очень короткая, а счет антидребезговой задержки идет в прерывании.

 


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

 

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

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

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


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

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