Устройство управления системой очистки лобового стекла автомобиля, страница 6

;хранится код включённого режима           

            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                               ; сдвиг А вправо, перенос первого разряда содержимого А во