Лабораторная работа №5 (Вариант №2)
Контроль внешних устройств через параллельные порты
Цельработы: Получение практических навыков программирования процедуры опроса внешних устройств на примере клавиатуры.
Задание: Написать программу опроса клавиатуры с защитой от дребезга контактов. Величину задержки перед повторным опросом выбрать в соответствии с вариантом и таблицей.
Задание для варианта №2:
Опрашиваемый ряд клавиатуры: ряд A
Величина задержки перед повторным опросом: 1.2мс
Листинг программы
Main:
clr P1.0 ;сбрасываем нулевой бит первого порта
mov A, P1 ;копируем P1 в аккумулятор
cjne A, #11111110b, Hit ;если какие-то клавиши нажаты, переходим на Hit
setb P1.0 ;восстанавливаем состояние первого порта
ajmp Main
Hit:
mov B, A ;копируем старое состояние клавиш из аккумулятора в B
mov TH0, #0FBh ;задаём задержку в 1.2мс
mov TL0, #04Fh ;FB4F = 64335 = (65535 – 1200)
setb TR0 ;запускаем нулевой таймер
jnb TF0, $ ;ждём...
clr TR0 ;выключаем нулевой таймер
clr TF0 ;очищаем флаг переполнения нулевого таймера
mov A, P1 ;копируем в аккумулятор новое состояние клавиш
mov P1, #0FFh ;восстанавливаем состояние P1
cjne A, B, ExitProc ;если старое и новое состояния не совпадают, возвращаемся в
;главный цикл
ajmp KeyA1 ;переходим к отображению нажатых клавиш
KeyA1:
jb ACC.0, ExitProc ;если нулевой бит установлен, значит в строке A нажатых клавиш
;нет - возвращаемся
jb ACC.3, KeyA2 ;если 3-й бит установлен, значит A1 не нажата - проверяем
;следующую клавишу
mov SBUF, #49 ;печатаем "1"
KeyA2:
jb ACC.4, KeyA3 ;если 4-й бит установлен, значит A2 не нажата - проверяем
;следующую клавишу
mov SBUF, #50 ;печатаем "2"
KeyA3:
jb ACC.5, KeyA4 ;если 5-й бит установлен, значит A3 не нажата - проверяем
;следующую клавишу
mov SBUF, #51 ;печатаем "3"
KeyA4:
jb ACC.6, KeyA5 ;если 6-й бит установлен, значит A4 не нажата - проверяем
;следующую клавишу
mov SBUF, #67 ;печатаем "C"
KeyA5:
jb ACC.7, ExitProc ;если 7-й бит установлен, значит A5 не нажата – возвращаемся
mov SBUF, #68 ;печатаем "D"
ret ;возвращаемся
ExitProc:
ret
end
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.