Авторизация


...

Кто на сайте?

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

  • thamohmedsaman

Статистика

-Посетители : 28065
-Материалы : 210

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

  VM111

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

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

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

 


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

 

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

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

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

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

Prev Next

Замена контроллера на плате конденсатора для автозвука.

29-04-2011 Альберт Бикбулатов

Замена контроллера на плате конденсатора для автозвука.

Столкнулся с парой случаев, когда потребовалось заменить контроллер на плате конденсатора типа PROLOGY CAP или CAD. В одном случае для ремонта, а в другом, для расширения функций. Поскольку родной контроллер не перепрошивается, в обоих случаях потребовалась замена. По распиновке и...

Алгоритм работы с плавающей запятой. Часть первая

11-02-2012 Александр Милевский

Алгоритм работы с плавающей запятой. Часть первая

1.Общие понятия Сразу хочу объяснить, а зачем все это нужно? Прежде всего точность вычислений, а она порой, ой как нужна. Различают две формы представления двоичных чисел: «с фиксированной запятой» и «с плавающей запятой». С фиксированной запятой, надеюсь, эту форму уже многие знают, но...

Моторизованный регулятор громкости + селектор входов + пульт ДУ

02-02-2017 Александр Беглецов

Моторизованный регулятор громкости + селектор входов + пульт ДУ

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

Программирование c нуля в AVRStudio 5 (ч.4)

26-02-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.4)

Мы научились включать и выключать светодиоды, а как сделать, чтобы они сами заморгали? Понятно, что после того, как их включили, нужно сделать паузу, затем выключить, снова выждать паузу и снова включить. А как сделать паузу?Есть конечно, команда NOP, которая...


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

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