;хранится код включённого режима
mov a,m ; 4.4 ++перемещение кода режима в А для обработки
lxi h,zadmas ; 4.5 ++занесение в пару h адреса ячейки памяти, в которой
;хранится маска накладываемая на нажимающиеся клавиши, ;зависящая от включённого режима
rrc ;4.6 ++сдвиг А вправо, перенос первого разряда содержимого А во
;флаг С
jc nets1 ; 4.7 ++первый разряд равен 1? (в rejim было число 1 – код режима
;30 движений в минуту?)
; первый разряд равен 0 (в rejim было число 2 – код режима 1 движение в минуту)
mvi m,05h ; 4.8 ++занесение в ячейку памяти zadmas 00000101 – маски, ;оставляющей в коде с порта ввода разряды, соответствующие только командам «выключено»
; и «включение со скоростью 30 движений в минуту»
jmp zader6 ; ++перемещение на основную программу задержки
nets1: mvi m,09h ; 4.9 ++занесение в ячейку памяти zadmas 00001001 – маски, ;оставляющей в коде с порта ввода разряды, соответствующие только командам
;«выключено» и «включение со скоростью 1 движение в минуту»
jmp zader6 ; ++перемещение на основную программу задержки (нужно ;лишь для поддержания одинакового количества тактов во всех ветвях подпрограммы задержки)
zader6: in portc ; 4.10++ опрос клавиатуры
ana m ; 4.11 ++была нажата одна из нужных клавиш? (*0*или*2* или
;*0*или *3* в зависимости от включённого режима)
jz zader2 ; ++нет нажатия - просто задержка
;есть нажатие, переход к защите от дребезга
mvi c,posdr ; 4.17 загрузка постоянной времени дребезга в регистр C
zader3: in portc ; опрос клавиатуры
ana m ; была нажата одна из нужных клавиш?
jz zader2 ; нет, переход к отработке задержки
dcr c
jnz zader3
in portc ; дребезг при нажатии окончен - сохранение кода нажатой
;клавиши в памяти
lxi h,klav
mov m,a
lxi h,zadmas ; занесение в пару h адреса ячейки памяти, в которой хранится маска
zader4: mvi c,posdr ; защита от дребезга при отпускании клавиши
zader5: in portc
ana m
jnz zader4
dcr c
jnz zader5
pop h ; 4.18 двойная коррекция указателя стека перед экстренным выходом
;из подпрограммы, т.к. было сохранение в стек оставшегося времени ;задержки
pop h
lxi h,klav ; занесение в пару h адреса ячейки памяти в которой был
;сохранён код клавиши
mov a,m ; перемещение в А
rrc ; сдвиг А вправо, перенос первого разряда содержимого А во
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.