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

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.



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


  • Мультимедийная сеть – AVC-LAN TOYOTAМультимедийная сеть – AVC-LAN TOYOTA
    Views: 5924 AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. …
  • Development Boards PIC18F47Q84Development Boards PIC18F47Q84
    Views: 8466 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Views: 10319  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …
  • CLUBBEST – reasoning on the visualization of music.CLUBBEST – reasoning on the visualization of music.
    Views: 362 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ.     Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
  • Проект с использованием MCC часть 15Проект с использованием MCC часть 15
    Views: 1768 EUSART – Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter, UART) — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами. … читать на вики. Внесем изменения в нашу схему, …
  • WiFi ESP8266 – AT команды связанные с функцией Wi-FiWiFi ESP8266 – AT команды связанные с функцией Wi-Fi
    Views: 5809 AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание  1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Views: 1675 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
  • ch-светомузыка от теории до реализацииch-светомузыка от теории до реализации
    Views: 957 Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического …
  • 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: 553 Назвемо цей варіант поновлення для професіоналів і не тільки. Що нового? 1. Повністю змінено структуру параметрів бази даних компонента. Це дозволило повноцінної роботи Актив ВОМ. Ви відразу отримуєте …
  • Сенсорный выключатель светаСенсорный выключатель света
    Views: 16545 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …



 

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