Авторизация


...

Кто на сайте?

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

  • magierskadal
  • sundbarr

Статистика

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

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

  Плата питания

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

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

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

 


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

 

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

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

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

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

Prev Next

Подключаем LCD SSD1963 к STM32 по FSMC_16bit +Touch

23-05-2016 Александр Беглецов

Подключаем LCD SSD1963  к STM32 по FSMC_16bit +Touch

 В данной статье автор реализовал подключение TFT дисплея диагональю  7” дюймов  на контроллере SSD1963 к микроконтроллеру STM32F407VGT посредством FSMC шириной 16 бит. Скорость заливки экрана одним цветом у автора получилось приблизительно  60 кадров/сек (1000 кадров за 16,518 секунд) при тактовой...

Доработка логического анализатора цифровых сигналов LOGIC-U

11-09-2011 Александр Милевский

Доработка логического анализатора цифровых сигналов LOGIC-U

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

Сводная таблица команд семейства PIC18XXXX.

24-12-2012 Super User

    Мнемоника Краткое описание Циклов 16-ти битный код Изменяет флаги БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ ADDWF f,d,a Сложение W и f 1 0010 01DA FFFF FFFF C, DC, Z, OV, N ADDWFC f,d,a Сложение W и f с использованием флага переноса 1 0010 00DA FFFF FFFF C, DC, Z, OV, N ANDWF f,d,a Поразрядная операция И W и f 1 0001 01DA FFFF...

ADDWF

02-02-2012 Super User

ADDWF Сложение W и f Синтаксис: [label] ADDWF f,d,a Операнды: 0 <= f <= 255d Е [0,1]a Е [0,1] Операция: (W) + (f) -> (dest) Изменяет флаги: C, DC, Z, OV, N Код: 0010 01da ffff ffff Описание: Сложение содержимого регистров W и f. Если d=0 - то результат сохраняется в регистре W,...


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

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