Если в клавиатуре используются клавиши или кнопки с контактами без фиксации, то необходимы средства (программные или аппаратные) для опроса состояния клавиатуры, т.е. определения момента нажатия клавиши. При использовании программного метода МК должен вызывать подпрограмму опроса INPKEY периодически, обычно не менее 10 раз в секунду, чтобы не пропустить момент нажатия кнопки. Сделать это программно довольно трудно, поэтому этот метод обычно используется совместно со сканированием дисплея при динамическом его управлении. Аппаратный метод заключается в том, что при нажатии любой клавиши вырабатывается запрос прерывания. Микроконтроллер, получив этот запрос, переходит на подпрограмму обслуживания прерывания, которая вызывает подпрограмму опроса INPKEY.
На рис. 7.22 приведена схема подключения клавиатуры с кнопками (контактами без фиксации), в которой формируется сигнал запроса внешнего прерывания МК в случае нажатия любой клавиши. Линия P3.2 в схеме используется на вход запроса прерывания . При разомкнутых контактах SB1-SB4 на входе = 1. При нажатии любой клавиши замыкается контакт и на входе = 0, т.е. поступает запрос прерывания.
Рис. 7.22. Схема опроса состояния кнопок
При реализации этого метода следует учесть два обстоятельства:
1. При нажатии кнопки возникает дребезг контактов в течение времени 5…10 мс. Так как МК реагирует на запрос прерывания практически мгновенно, то надо задержать вызов подпрограммы опроса INPKEY на некоторое время, обычно порядка 20 мс.
2. Подпрограмма обслуживания прерывания в рассматриваемом случае короткая и длится всего 20-30 мкс. При выходе из подпрограммы МК вновь проверяет состояние входа P3.2, и если = 0, то МК опять войдет в подпрограмму обслуживания прерывания. И пока клавиша остается нажатой, программа будет зациклена, т.е. МК выключится на это время из управления МКС.
В MCS-51 имеется возможность программно устанавливать активный уровень сигнала запроса прерывания. Это делают флаги IT0 и IT1 в регистре TCON. Если IT0 = 0, то МК реагирует на низкий уровень сигнала . Если же INT0 = 1, то МК реагирует только на фронт сигнала , т.е. на перепад из «1» в «0».
Основная программа может иметь следующий вид.
………………..
MOV KEYCODE,#0FH ; Нет нажатой клавиши
; Разрешить прерывание от клавиатуры
SETB EX0 ; Разрешить прерывание по
SETB IT0 ; Установить запрос прерывания
; по перепаду из «1» в «0»
SETB EA ; Общее разрешение прерываний
……………….. ; Продолжение основной программы
ORG 0003H ; Вектор прерывания по
CALL DEL20MS ; Задержка на 20 мс
CALL INPKEY ; Вызов подпрограммы опроса
RETI ; Возврат из прерывания
Подпрограмма идентификации может иметь вид:
IDENTIF3: MOV R2,#0 ; Счетчик сдвигов
CLR C ; Сбросить флаг переноса С
SHIFT: RRC A
JC CHECK ; Переход, если есть перенос
INC R2
JMP SHIFT ; Цикл сдвига
CHECK: JZ EXIT ; Выход, если (A) = 0
MOV R2,#0FFH ; Экстракод (нажаты несколько
; клавиш)
EXIT: MOV A,R2
RET
7.6. Вывод и отображение информации в МКС
В обслуживаемых МКС часто требуются средства для вывода и отображения различной информации. Если МКС требует только простейшей индикации типа Включено/Выключено или Да/Нет, то она обычно реализуется на основе отдельных светодиодов. Методы их подключения к портам МК и управления были рассмотрены в п. 7.3.4.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.