Сборник лабораторных работ: Специализированные вычислительные системы. Часть 2. Никищенков И.А. - 30 стр.

UptoLike

Составители: 

- 30 -
ROTATE: RRC A ;сдвиг байта возврата
JNC DBNC ;выход из процедуры при обнару-
;жении первой нажатой клавиши
INC R4 ;инкремент SCANCODE
DJNZ R5,ROTATE ;декремент счетчика опросов и
;цикл, если не нуль
DJNZ R7,LOOP ;декремент счетчика сканирования
;и выход, если не нуль
JMP SCAN ;начать сканирование сначала
После выхода из процедуры SCAN управление передается частной
процедуре устранения дребезга конрактов DBNC.
Для того, чтобы при повторном обращении МК к клавиатуре не
был введен код той же самой клавиши, вводится процедура ожидания
освобождения. После выполнения сканирования активной осталась та
линия сканирования, в которой обнаружена нажатая клавиша. Поэто-
му процедура ожидания освобождения нажатой клавиши сводится к
считыванию и анализу байта возврата:
WAITOP: IN A,P2 ;ввод байта возврата
CPL A ;инверсия байта возврата
JNZ WAITOP ;если клавиша нажата, то жда ть
Процедура WAITOP в том виде, в котором она приведена выше,
может быть использована только в системах, защищенных от "зали-
пания" контактов. Обнаружить "залипание" контакта можно путем
подсчета "неудачных" опросов. Если число "неудачных" опросов
превысило N и клавиша не была освобождена, выдается сообщение
оператору о "залипании" контакта. Число N (и соответственно раз-
рядность счетчика) определяется исходя из механических свойств
клавиатуры.
Каждой клавише клавиатуры должен быть поставлен в соответс-
твие код (ее вес), являющийся функцией номеров линии сканирова-
ния (С) и линии возврата (В), на пересечении которых нажата кла-
виша. Процедура идентификации нажатой клавиши KEYW может быть
совмещена с процедурой сканирования (как в рассмотренном выше
примере). Тогда после выхода из процедуры SCAN в регистре
SCANCODE будет размещен код нажатой клавиши.
Для сложных клавиат ур SCANCODE не всегда удается совместить
с истинным весом клавиши. В этом случае необходима дополнитель-
ная перекодировка, которая выполняется табличным способом с ис-
пользованием SCANCODE в качестве указателя.