Views: 1220
Вариант формирование единичного нажатия и формирования сигнала удержания клавиши.
char KLAV02 (void) //
{
if (button02==0) // проверяем, кнопка нажата? уровень низкий?
{
_delay(10000); // подождем 10 мСек. задержка для устранения "дребезга"
if (button02==0) // и еще раз проверим, кнопка нажата
{
if (!timerpovtor02&&!button02DOUN) // проверяем бит, кнопка была нажата до этого?
{
timerpovtor02=DLITUD; // таймер задежки на время удержание клавиши
return 1; // одно нажатие
}
else
{
timerpovto02r--; //
if(!timerpovtor02) //
{
timerpovtor02=DLITUD; //
button02DOUN=1; //
return 2; // удержание кнопки
}
return 0; // ожидание отработки таймера
}
}
}
button02DOUN=0; // сброс бита сигнал удержания сформирован
timerpovtor02=0;
return 0;
}
Эта функция при нажатии на кнопку button02 функция возвращает один раз 1 при обращении к этой функции. Через количество обращений равное DLITUD функция будет возвращать значение 2.
Для описания кнопки button02 используйте
#define button02 RC3 // привязка имя к конкретному порту
Для описания количество обращений для формирования кода удержания/авто повтора (2)
#define DLITUD 25 // длительность удержания клавищи для выдачи кода удержания/автоповтор
Для вызова и обработки клавиши, функцию надо вставить в главный цикл программы и контролировать при помощи условия, например:
if(KLAV02()==1)
{
.....
}
if(KLAV02()==2)
{
.....
}
Для нескольких кнопок можно использовать несколько функций изменение имя и добавив соответствующие биты контроля состояния, например:
char KLAV01 (void); char KLAV02 (void); char KLAV03 (void); char KLAV04 (void); #define button01 RA4//выбор окна #define button02 RC5//функция кнопок #define button03 RC4//volum_P #define button04 RC3//volum_M bit button01DOUN,button02DOUN,button03DOUN,button04DOUN; char timerpovtor01, timerpovtor02, timerpovtor03, timerpovtor04;
Пример актуален без изменений для компилятора MPLAB® XC8 Compiler.
Это может быть интересно
USB K-L-line адаптерViews: 4780 USB K-L-line адаптер предназначен для связи персонального компьютера с диагностической шиной автомобиля – интерфейс ISO-9141. Этот проект предназначен для сборки недорого устройства с использованием специально для этой цели …
Altium Designer my setup system and project structure V23.3Views: 466 Оновлення бази даних та шаблонів від березня 2023 року. Updating the database and templates from March 2023. Altium Designer my Libraries, Project templates, System settings by Catcatcat. Дивись …
Toyota Auto Fader – Модуль включения усилителяViews: 2133 Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить …
Проект с использованием MCC часть 10Views: 1131 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …
OLED RET012864E/REX012864JViews: 1607 RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как …
Проект с использованием MCC часть 14Views: 1122 С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем …
Простой цифровой вольтметр ch-c3200Views: 2687 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …
CLUBBEST – reasoning on the visualization of music.Views: 393 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ. Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
I2C MODULE – PIC18F25K42 Device ID Revision = A001Views: 1207 I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все …
NeoPixel LED and PIC24Views: 782 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …