Контроль внешних устройств через параллельные порты

Страницы работы

Содержание работы

Лабораторная работа №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

Похожие материалы

Информация о работе