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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 06.04.2007, 14:26  
bobdenis
Частый гость
 
Регистрация: 03.01.2007
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
bobdenis на пути к лучшему
По умолчанию

Вот код который я использую.
;************************************************* *********************
;
; Вход: Key_Clok - флаг входа -каждые 0.02 сек
; Выход: New_Key - нажатая клава
; : Key_On - флаг нажатия клавиши
;
; Пока нажатая клавиша не будет обработана - не будет опрашиватся
; следующая клавиша. После обработки нажатой клавиши , надо
; сбросить флаг нажатия клавиши KEY_OK в данном случае
;************************************************* ****
Scan_Key
bcf Key_Clok ;сброс флага входа в подпрограмму

btfsc KEY_OK ;
return
movf PORTB1,W ;считали порт
andlw b'00011111' ;маска для клавиш
movwf Old_Key ;сохранили временно
movlw b'00011111' ;проверяем нажата ли хоть 1 клавиша
xorwf Old_Key,W ;
btfsc STATUS,Z ;если не нажато то выход
goto Set_Varabl ;
;нажата и проверяем в течение 5 циклов чтобы была одна и та же клавиша
btfss Scan_Flag ;первый раз выставляем флаг ,а в остальные проверяем
;какая клавиша следующий раз
goto Set_Scan_Flag ;
movf New_Key,W ;будем сравнивать новую клавишу с предыдущим
xorwf Old_Key,W ;
btfss STATUS,Z ;
goto Set_Varabl ;переход на установка переменных так как в течение
Key_Count ;5 циклов не была нажата одна и та же клавиша
decfsz Count_Key,F ;уменьшаем счетчик циклов
return
bsf KEY_OK ;установили флаг ,сигнализируя что клавиша нажата
return
;-----------------------------------------------------
Set_Varabl
movlw 0x05
movwf Count_Key ;обновили счетчик
bcf KEY_OK ;сбросили флаг ,сигнализируя что клавиша не нажата
bcf Scan_Flag
clrf New_Key
clrf Old_Key
return
Set_Scan_Flag
bsf Scan_Flag ;
movf Old_Key,W ;переписываем в буффер клавы, но пока флаг
;не установлен он не активен
movwf New_Key
goto Key_Count ;переход на счет сколько раз нажата клавиша
;надо в течение 5 циклов прерывания

;************************************************* ****
Реклама:
bobdenis вне форума  
Сказали "Спасибо" bobdenis
Митя (03.07.2017)
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное отключение напряжения USB Gordey Ремонт оргтехники 2 17.04.2009 22:47
Программное определение типа EEPROM Jendoss Микроконтроллеры, АЦП, память и т.д 3 24.03.2009 18:44
Распиновка контактов Web камеры nuuser6003 Ремонт оргтехники 2 28.11.2008 13:07
Дребезг контактов Boris_Britva Микроконтроллеры, АЦП, память и т.д 11 30.07.2008 11:59
Программное управление alkapone Источники питания и свет 2 10.02.2008 17:50


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


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