Чтение кнопок 2 – простая функция удержания клавиши

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.



Это может быть интересно


  • Стробоскоп для автомобиляСтробоскоп для автомобиля
    Views: 2257 Одним из популярных решений светового тюнинга автомобиля, мотоцикла или скутера стал эффект –  “полицейский стробоскоп“. На база платы ch-c0050 реализовано несколько проектов. В этой статье приводятся две версии …
  • NeoPixel LED and PIC24NeoPixel LED and PIC24
    Views: 782 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …
  • CLUBBEST – reasoning on the visualization of music.CLUBBEST – reasoning on the visualization of music.
    Views: 393 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ.     Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
  • WiFi ESP8266 ESP-202 (ESP-12F)WiFi ESP8266 ESP-202 (ESP-12F)
    Views: 8042 Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать …
  • Интерактивные LedИнтерактивные Led
    Views: 633 Тема проекта   продолжение следует…. Это может быть интересно
  • ESP32-первое знакомствоESP32-первое знакомство
    Views: 7322 Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как …
  • Проект с использованием MCC часть 07Проект с использованием MCC часть 07
    Views: 1278 Модуль PWM – широтно импульсная модуляция (ШИМ). ПИК контроллеры часто на борту имеют модули ШИМ. На их основе строятся многие узлы управления электро приводами. В нашем варианте мы …
  • Altium Designer my Libraries, Project templates, System settings by Catcatcat V24.0 PROAltium Designer my Libraries, Project templates, System settings by Catcatcat V24.0 PRO
    Views: 556 Назвемо цей варіант поновлення для професіоналів і не тільки. Що нового? 1. Повністю змінено структуру параметрів бази даних компонента. Це дозволило повноцінної роботи Актив ВОМ. Ви відразу отримуєте …
  • My libraries for Altium DesignerMy libraries for Altium Designer
    Views: 4495 Attention, this version of the database is outdated today. See updates in articles https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure  and https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure-v23-2/    My libraries for Altium designer  (Updated V – 29/05/2022) (c) 2021 …
  • Проект с использованием MCC часть 03Проект с использованием MCC часть 03
    Views: 1743 Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки …



 

Поделись этим!