Views: 1218
Вариант формирование единичного нажатия и формирования сигнала удержания клавиши.
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.
Это может быть интересно
NeoPixel LED и PIC18Views: 1922 Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …
AD9833 – Programmable Waveform Generator – part twoViews: 1959 Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в …
MPLAB® Harmony – или как это просто! Часть 4.Views: 2420 Часть четвертая – это может показаться немного сложно. Структура проекта. Для облегчения конфигурирования проекты MPLAB Harmony обычно структурированы таким образом, чтобы изолировать код, необходимый для настройки «системы», от …
I2C MODULE – PIC18F25K42 Device ID Revision = A001Views: 1206 I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все …
Проблемы классической светомузыкиViews: 2194 Светомузыка – что это такое? Определение: Светомузыка (жаргонное: цветомузыка) — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название …
CLUBBEST-50-LightViews: 473 CLUBBEST-50-LIGHT Зміст Короткий опис проекту. 1 Опис схемотехніки візуалізатора музики. 2 Аудіо вхід. 3 MCU. 4 Цифровий вихід. 5 Схема живлення MCU. 6 Складання пристрою. 7 Список …
PIC32MZ – Core Timer (библиотека)Views: 588 Переработанные файлы от Microchip, библиотека для работы с Core Timer.
Temperature measurement with NTC thermistor.Views: 721 Проекты в которых присутствовало измерение температуры начинал с цифровых датчиков, т.к. в них все просто и не надо ничего преобразовывать и вычислять. При использовании цифровых датчиков ты получаешь …
Акриловый корпус для платы ch-4000Views: 871 Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус …
Просто о структурах и объединениях в СиViews: 2384 Какие задачи нам позволяют решать структуры и объединения? Для разработчика встроенных систем эффективность и компактность кода всегда на первом месте. Если программировании на Ассемблере ты сам определяешь как …