ВУЗ:
Составители:
48
Сканирование. Частная процедура сканирования служит для обнаружения нажатой
клавиши и последующей ее идентификации. Процедура сводится к поочередному обнулению
каждой из линии сканирования и опросу линий возврата. В порт 1 выдается байт
сканирования (БС), содержащий 0 только в одном бите. Если на пересечении линии
сканирования и линии возврата находится нажатая клавиша
, то в соответствующем бите
байта возврата (БВ), принимаемого в порт 2, будет находиться 0.
Последовательность байтов сканирования представляет собой код "бегущий нуль";
формирование очередного байта сканирования осуществляется путем сдвига его
предыдущего значения. Направление сдвига определяет последовательность опроса клавиш.
Схема алгоритма процедуры сканирования представлена на рис. 17. Если при полном цикле
сканирования не было
обнаружено нажатой клавиши, то процедура сканирования
повторяется сначала. Оператор "Есть нажатая клавиша?" может быть реализован двумя
способами: наложением маски или сдвигом. Первый способ подробно рассмотрен в типовой
процедуре опроса группы импульсных датчиков.
При втором способе клавиши, подключенные к каждой линии сканирования,
анализируются последовательно. Если после анализа каждой клавиши осуществлять
прибавление единицы
к счетчику SCANCODE, то процедуру сканирования можно
совместить с процедурой идентификации нажатой клавиши (рис. 18). После выхода из
процедуры SCAN в SCANCODE будет находится код нажатой клавиши. Кроме того,
процедура SCAN осуществляет защиту от одновременного нажатия нескольких клавиш.
Порядок анализа клавиш таков, что при одновременном нажатии клавиша с большим кодом
игнорируется:
;ВЕРСИЯ ДЛЯ МК48 И МК51
;R4 - СЧЁТЧИК КОДА СКАНИРОВАНИЯ
SCAN: MOV R4,#0 ;СБРОС SCANCODE
MOV R7,#5 ;ЗАГРУЗКА СЧЁТЧИКА СКАНИРОВАНИЯ
MOV R6,#11111110 ;ЗАГРУЗКА ИСХОДНОГО БАЙТА
;СКАНИРОВАНИЯ
LOOP: MOV A,R6
MOV P1,A ;ВЫВОД ТЕКУЩЕГО БАЙТА СКАНИРОВАНИЯ
RL A ;СДВИГ БАЙТА СКАНИРОВАНИЯ
MOV R6,A ;СОХРАНЕНИЕ ТЕКУЩЕГО БАЙТА
;СКАНИРОВАНИЯ
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »