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

minute:lxi        h,rejim             ; 3.4 занесение в пару h адреса ячейки памяти, в которой хранится

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

            mvi      m,2                  ; 3.5 запись кода режима 1 движение в минуту

            mvi      d,59                 ; 3.6 запись как эталон времени до след перемещения числа 59 

; (58 секунд задержки + 1 сек , декрементирующаяся в начале

; цикла задержки)

            jmp      move               ; переход на осуществление перемещения

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

twosec: lxi       h,rejim             ; 3.7 занесение в пару h адреса ячейки памяти в которой хранится

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

            mvi      m,1                  ; 3.8 запись кода режима 30 движений в минуту

            mvi      d,1                   ; 3.9 запись как эталон времени до след перемещения 1,

                                               ;декрементирующейся в начале цикла задержки

; перемещение щёток с установленной скоростью

move:  mov     b,d                   ; 3.10 перемещение числа из эталона времени в счетчик времени

                                               ;оставшегося до след перемещения

            call      zader               ; +3.11вызов подпрограммы zader, т.е. выполнение задержки на 1 сек

; первая фаза движения щёток, справа - налево

            mov     a,e                   ; 3.12 перемещение кода положения щетки в А

            xri        wetka              ; 3.13 исключающее ИЛИ кода маски для смены положения щёток ;01101100 и А (в Е хранятся только 2 кода положения щёток; 01100000 – щётки справа и

;00001100 - щётки слева, при исключающем ИЛИ маски и одного из этих кодов – один 7-

;сегментный код меняется на другой)

            out       porta                ; 3.14 вывод результата операции xri wetka на индикацию

            mov     e,a                   ; 3.15 сохранение результата операции xri wetka в Е

            call      zader               ; +3.16 выполнение задержки на 1 сек

; вторая фаза движения щёток (теперь слева - направо), полностью повторяющая первую

            mov     a,e                   ; 3.17

            xri        wetka              ; 3.18

            out       porta                ; 3.19

            mov     e,a                   ; 3.20

cikl:     dcr       b                      ; 3.21 декремент времени до след перемещения (если скорость 30

                                               ;движений в минуту, то этот счётчик сразу же обнуляется)

            jz         move               ; 3.22 вся задержка отработана – переход на перемещение

            call      zader               ; +3.23 выполнение задержки на 1 сек

            jmp      cikl                  ; переход на декремент В           

;******************ПОДПРОГРАММЫ*********************

;подпрограмма задержки на 1 сек с опросом клавиатуры

zader:  lxi        h,posvr                        ; 4.1 +загрузка в пару h постоянной времени

zader1:            push    h                      ; 4.2 ++сохранение в стек оставшегося времени задержки для

                                               ;дальнейшего использования

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