Visits: 1133
Вариант формирование единичного нажатия и формирования сигнала удержания клавиши.
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.
Это может быть интересно
- Индикатор кода – RC-5 Protocol PhilipsVisits: 976 Индикатор кода – RC-5 Protocol Philips При конструировании дистанционного управления на инфракрасных лучах для контроля удобно иметь индикатор кодов передаваемых пультом. Плата ch-c3000 позволяет изготавливать устройства с возможностью …
- УКВ – радиоприем, часть 2Visits: 6185 Пришло свободное время решил вторую часть проекта реализовать (правда есть мысль и третью с использование цветного OLED и функцией ch-светомузыки, но это только задумка… Для понимания функций интегрального …
- AD9833 – Programmable Waveform Generator – part twoVisits: 1662 Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в …
- Мультимедийная сеть – AVC-LAN TOYOTAVisits: 5678 AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. …
- HVLD модуль на примере PIC24FJ128GA204Visits: 618 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …
- Униполярный шаговый двигатель – часть 2Visits: 793 В этой части только итог и версия 2.0 универсальной, которая позволяет управлять шаговым двигателем во всех трех режимах и 3.0 специальной библиотеки только для одного полушагового режима. В …
- Ultrasonic Level Meters – ULM –53LVisits: 707 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …
- MPLAB® Code Configurator and EncoderVisits: 1400 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
- Проект с использованием MCC часть 08Visits: 1005 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …
- Регулятор влажностиVisits: 1365 Регулятор ILLISSI-CH-1000 предназначен для контроля и регулировки относительной влажности в диапазоне от 0 до 100%. Регулятор позволяет работать как в режиме осушения, так и увлажнения. Для измерения возможно …