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

            org       800h                ;1.2 стартовый адрес программы в ОЗУ стенда

            lxi        sp,900h                       ;инициализация указателя стека

mvi      a,89h               ;загрузка управляющего байта внешних устройств

            out       porcrl              ;вывод управляющего байта в порт управления

;***********************НАЧАЛО ПРОГРАММЫ**********************

vstart:  mvi      e,60h               ; 2.1 загрузка кода правого положения щёток очистки в Е

            mov     a,e                   ; 2.2 загрузка кода правого положения щёток очистки в А

            out       porta                ; 2.3 вывод на индикацию - щётка вправо

;ожидание включения одного из режимов

start:  mvi        c,posdr                        ; 2.4 загрузка постоянной дребезга в регистр C

drin:     in         portc                ; 2.5 опрос клавиатуры

ani       0Ch                 ; 2.6 накладывается маска 00001100 - нажаты клавиши включения

                                    ;одного из режимов?                                   

            jz         start                 ;ничего нужного не нажато, переход на начало

            dcr       c                      ;2.7 нажата нужная клавиша, уменьшение счетчика повторов

;при защите от дребезга                                  

            jnz       drin                 ; 2.8 дребезг еще не окончен, снова опрос клавиатуры

;дребезг при нажатии окончен - сохранение кода нажатой клавиши в памяти     

            in         portc                ; 2.9 чтение кода нажатой клавиши

            lxi        h,klav              ; 2.10 занесение в пару h адреса ячейки памяти, в которой

;необходимо сохранить код клавиши

mov     m,a                  ; 2.11 сохранение кода клавиши в ячейку памяти адрес которой

                                               ;находится в паре h

; защита от дребезга при отпускании клавиши

drout1: mvi      c,posdr                        ; 2.12 загрузка постоянной дребезга в регистр C

drout2: in         portc                ; 2.13 опрос клавиатуры

ani       0Ch                 ; 2.14 накладывается маска 00001100 - нажаты клавиши включения

                                               ;одного из режимов режимов ?

            jnz       drout1             ; что-то нужное нажато, переход на начало защиты от дребезга

;при отпускании клавиши

dcr       c                      ; 2.15 не нажата никакая нужная клавиша, уменьшение счетчика

                                               ; повторов при защите от дребезга

            jnz       drout2             ; 2.16 дребезг не окончен, переход на опрос клавиатуры

;дребезг при отпускании окончен

;**************ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ**************************

            lxi        h,klav              ; 3.1 занесение в пару h адреса ячейки памяти в которой был

;сохранён код клавиши

            mov     a,m                  ; 3.2 загрузка кода клавиши

            cpi       04h                  ; 3.3 сравнение с 00000100 - с кодом клавиши включения режима

;30 движений в минуту                                           

            jz         twosec             ; да - нажато включение режима 30 движений в минуту

; нет - нажатo включение режима 1 движение в минуту