
Views: 1163
Вариант формирование единичного нажатия и формирования сигнала удержания клавиши.
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.
Это может быть интересно
ESP8266 процедура получение данных даты и времени от серверов точного времени.
Views: 5984 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени, если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …MAX7219/21 и 8х8 LED дисплеи
Views: 957 MAX7219, MAX7221 предназначены для вывода информации на 8 разрядов семисегментного индикатора, но на нем легко организовать вывод на светодиодные индикаторы 8х8. продолжение следует…. Это может быть интересноAD9833 – Programmable Waveform Generator – part two
Views: 1789 Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в …CCP модуль для декодирования ИК-кодов пультов ДУ
Views: 1096 Множество изготовителей для своих пультов дистанционного управления на ИК лучах используют принцип широтно-импульсной модуляции. В таких кодах бит единицы представляется импульсом большой длительности, а ноль импульсом короткой длительности. …PIC32MZ – Core Timer (библиотека)
Views: 547 Переработанные файлы от Microchip, библиотека для работы с Core Timer.PIC18 – модуль DMA
Views: 1220 Введение Модуль прямого доступа к памяти (DMA) предназначен для обслуживания передачи данных непосредственно между различными областями памяти без вмешательства процессора. Исключив при этом необходимость в интенсивной обработки …Тестирование модуля генератора
Views: 901 Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый …DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-сервер
Views: 1042 Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети …TM1650 драйвер LED семисегментного индикатора
Views: 18024 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd. Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …Просто о внешних переменных
Views: 820 Часто возникает задача когда необходимо предавать данные между модулями программы. Например, передать данные между файлами, или управлять работой модулей. Для этого создаем заголовочный файл и описываем наши переменные как …