Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

Закрытая тема
Опции темы
Непрочитано 15.01.2014, 10:55   #21
shurik_ss
Гражданин KAZUS.RU
 
Регистрация: 15.02.2011
Адрес: Витебск, Беларусь.
Сообщений: 547
Сказал спасибо: 484
Сказали Спасибо 606 раз(а) в 214 сообщении(ях)
shurik_ss на пути к лучшему
По умолчанию Re: Несколько функций на одной кнопке

Возможно, извлечете что-то полезное из моей процедуры опроса клавиатуры (для ATtiny2313):

PHP код:
...

.
def Beep R27    ;длительность звукового сигнала (мс) ("0" выкл.)
.
def Kbd R28    ;состояние клавиатурысчетчик задержки "длинного нажатия"
.def Command R29    ;команды и событиябиты0-сигнал на входе1-длинное нажатие2-короткое нажатие3-...

...

start:
...
        
ldi    Kbd,0xFF
        ldi    Command
,0
        ldi    Beep
,0

...

//----------Опрос клавиатуры
get_kbd:    cpi    kbd,0xFF
        breq    get_kbd_1
        cpi    kbd
,0
        breq    get_kbd_4
        sbis    PIND
,6
        rjmp    get_kbd_3
        ldi    kbd
0xFF
        sbr    Command
4
        ret
get_kbd_4
:    sbic    PIND,6
        ldi    kbd
0xFF
        ret
get_kbd_3
:    dec    kbd
        brne    get_kbd_2
        ldi    beep
0xFF
        sbr    Command
2
get_kbd_2
:    ret
get_kbd_1
:    sbic    PIND,6
        ret
        ldi    beep
0x80
        ldi    kbd
0x14            
        ret 
Процедура вызывается из обработчика прерывания таймера Т1 (обеспечивает счет реального времени) 10 раз в секунду (т.е. автоматическая защита от дребезга). В момент нажатия генерится короткий звуковой сигнал (это делает обработчик таймера Т0, отвечающий за звук. В регистре Beep хранится время в мс, оставшееся до окончания генерации звука). При отпускании кнопки ("короткое нажатие") или окончании задержки "длинного нажатия" (кстати, кнопка одна, висит на линии 6 порта D) в регистр Command заносится код команды (биты 1 и 2). Дальнейшая его обработка - асинхронная в теле программы. Кроме того, если нажатие было длительным, при окончании задержки генерится длинный звуковой сигнал. Автоповтора нет (т.е. нажали, держим, через секунду сработало "длинное нажатие", дальше можно держать сколько угодно - ничего не будет). Для работы требуется один регистр (kbd) в монопольное пользование. Как видно, здесь нет циклов и задержек, поэтому опрос клавиатуры существенно не влияет на %
Реклама:

Последний раз редактировалось shurik_ss; 15.01.2014 в 11:44.
shurik_ss вне форума  
Сказали "Спасибо" shurik_ss
ua3rad (17.01.2014)
Непрочитано 21.01.2014, 13:55   #22
ua3rad
Временная регистрация
 
Регистрация: 04.02.2013
Сообщений: 78
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ua3rad на пути к лучшему
По умолчанию Re: Несколько функций на одной кнопке

Всем большое спасибо за помощь!!!
ua3rad вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Интересный вопрос - два усилителя к одной нагрузке eCAH Аудиотехника 45 14.10.2010 01:23
Триггер на несколько секунд rewacom Электроника средств транспорта 9 30.06.2009 11:47
Несколько мобильных операторов на одной SIM карте Angelus Автоматика и аппаратура связи 7 05.03.2007 11:26


Часовой пояс GMT +4, время: 20:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot