|
Удержание кнопки 6 секунд |
|
|
|
Apr 3 2009, 07:13
|
Группа: Участник
Сообщений: 4
Регистрация: 25-05-08
Пользователь №: 37 799

|
Подскажите с алгоримом удержания кнопки 6 секунд. Опрос кнопок реализован, оталось сделать что бы при нажатии выводилась уставка прибора, а при удержании 6 секунд войти в меню, прибора. Я пока сделал, что при нажатии сразу в меню попадаю, но требуют вывод уставки и 6 секунд.
|
|
|
|
|
 |
Ответов
|
Apr 3 2009, 12:02
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата MrYuran не нужно никаких флагов, состояние клавиатуры однозначно определяется текущим и предыдущим состоянием битов клавиш и счетчиком текущего состояния (антидребезг, задержка и автоповтор получаются автоматически) : CODE kbd_buf[1] = kbd_rd(); // читаем текущее сост.клавиш
if (kbd_buf[2] != kbd_buf[1]) { // сравнение с предыдущим - не равно kbd_buf[2] = kbd_buf[1]; // запомнить тек.состояние kbd_pr_cnt = 0; // обнулить счетчик } else { // состояние не изменилось - обработать if (kbd_pr_cnt < KBD_PR_MAX) kbd_pr_cnt++; // нет переполнения - увеличить счетчик U8 kbd_co = kbd_buf[1]; // код клавиш - в локальную переменную для ускорения сравнений
if ((kbd_pr_cnt >= KBD_PR_EXIT)&&(kbd_co == KBD_CO_NONE)) { // кнопки долго не нажимались - авто возвр. в пред.сост.индикации ind_param = 0; } else if ((kbd_pr_cnt == KBD_PR_SHORT)&&(kbd_co == KBD_CO_UP)) { // кнопка +, короткое нажатие - увеличить параметр if (ind_param == (IND_PA_MAX_NORMAL - 1)) ind_param = 0; else ind_param++; } else if ((kbd_pr_cnt >= KBD_PR_SHORT)&&(kbd_co == KBD_CO_CORR)) { // кнопка коррекции, короткое нажатие cli(); if (rtc.min > 30) { rtc.sec = 59; rtc.min = 59; } else { rtc.sec = 0; rtc.min = 0; } sei(); ind_param = 0; } else if ((kbd_pr_cnt == KBD_PR_SHORT)&&(kbd_co == KBD_CO_SETUP)) { // кнопка настройки, короткое нажатие - перейти в режим настройки ind_param = 0; ind_mode = IND_MO_SETUP; } else if ((kbd_pr_cnt == KBD_PR_SETUPEXT)&&(kbd_co == KBD_CO_SETUP)) { // кнопка настройки, длинное нажатие - перейти в режим расширенной настройки } else if ... { // и так далее.... } } }
Причина редактирования: Уменьшение размера цитаты исходника.
|
|
|
|
Сообщений в этой теме
decsal Удержание кнопки 6 секунд Apr 3 2009, 07:13 Stanislav_S Цитата(decsal @ Apr 3 2009, 11:13) Подска... Apr 3 2009, 07:28 ukpyr можно завести счетчик нажатия и запоминать предыду... Apr 3 2009, 08:55 Herz По-моему, по нажатию кнопки просто следует запуска... Apr 3 2009, 09:40 ukpyr ЦитатаИ только после отжатия принимать решение о п... Apr 3 2009, 10:00 Herz Цитата(ukpyr @ Apr 3 2009, 12:00) и польз... Apr 3 2009, 10:05 MrYuran да...
пора уже коллекцию ФАКов собирать...
или ссы... Apr 3 2009, 10:10 Herz Цитата(MrYuran @ Apr 3 2009, 12:10) Ага, ... Apr 3 2009, 10:46  adc Цитата(Herz @ Apr 3 2009, 13:46) Не знаю ... Apr 3 2009, 11:18   Stanislav_S Цитата(adc @ Apr 3 2009, 15:18) По отпуск... Apr 3 2009, 12:04    _Pasha Цитата(Stanislav_S @ Apr 3 2009, 15:04) С... Apr 4 2009, 14:54     Stanislav_S Цитата(_Pasha @ Apr 4 2009, 18:54) Этот м... Apr 4 2009, 21:07 rezident Внесу свои 5 копеек. Поскольку как я понял у топик... Apr 4 2009, 21:02 C.S. Ребят, а подскажите, как лучше сделать обработку д... May 7 2009, 09:52 MrYuran Цитата(C.S. @ May 7 2009, 13:52) У меня п... May 7 2009, 10:36 C.S. Значит, я мыслю верно, но туплю насчёт моментов на... May 7 2009, 11:45 MrYuran Цитата(C.S. @ May 7 2009, 15:45) В общем ... May 7 2009, 12:19 C.S. Посмотрите пожалуйста алгоритм, если не сложно, на... May 7 2009, 12:55 Genadi Zawidowski в аттаче - файл keyboard.c все Ваши проблемы там р... May 7 2009, 17:49 C.S. Цитата(Genadi Zawidowski @ May 7 2009, 21... Jun 7 2009, 18:36 C.S. Спасибо! Сейчас посмотрю, поразбираюсь. May 7 2009, 17:56 C.S. 2Genadi Zawidowsk...
А можно один вопросик? У нас ... May 10 2009, 00:46 Genadi Zawidowski Цитата(C.S. @ May 10 2009, 04:46) 2Genadi... May 10 2009, 06:10 Genadi Zawidowski Цитата(C.S. @ May 10 2009, 04:46) 2Genadi... May 10 2009, 23:24 C.S. Да, конечно. Интересно это всё на асм переводить %... May 11 2009, 14:45 Genadi Zawidowski Цитата(C.S. @ May 11 2009, 18:45) Да, кон... May 11 2009, 17:49 C.S. *стало стыдно* Я делаю для себя. Знаю, что на проф... May 12 2009, 07:59 MrYuran Цитата(C.S. @ May 12 2009, 11:59) думаю, ... May 12 2009, 12:39 Genadi Zawidowski ЦитатаЯ делаю для себя
Если Вы заметили, этот прое... May 12 2009, 09:24 VladimirYU Цитата(Genadi Zawidowski @ May 12 2009, 13... May 12 2009, 09:58  Genadi Zawidowski Цитата(VladimirYU @ May 12 2009, 13:58) Е... May 12 2009, 15:06 C.S. Вас понял. В следующих девайсах попробую на СИ. Хо... May 12 2009, 09:36 rezident Сообщение модератора. Уважаемые, пользователи... May 12 2009, 16:41 ukpyr ЦитатаПока вожусь на Меге8 (то, что было) - думаю,... Jun 7 2009, 19:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|