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

 47  0828   0D             dcr       c                      ; не нажата никакая нужная клавиша, уменьшение счетчика ;повторов при защите от дребезга

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

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

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

 51  082C   21 C3 08              lxi        h,klav              ; занесение в пару h адреса ячейки памяти в которой был ;сохранён код клавиши

 52  082F   7E                         mov     a,m                  ; загрузка кода клавиши

 53  0830   FE 04       cpi       04h                  ; сравнение с 00000100 - с кодом клавиши включения режима ;30 движений в минуту

 54  0832   CA 3F 08              jz         twosec             ; да - нажато включение режима 30 движений в минуту

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

 56  0835   21 C4 08    minute:lxi       h,rejim             ; занесение в пару h адреса ячейки памяти, в которой хранится ;код включённого

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

 58  083A   16 3B                   mvi      d,59                 ; запись как эталон времени до след перемещения числа 59 

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

 60  083C   C3 46 08              jmp      move               ; переход на осуществление перемещения

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

 62  083F   21 C4 08    twosec: lxi      h,rejim             ; занесение в пару h адреса ячейки памяти в которой хранится ;код включённого р

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

 64  0844   16 01       mvi      d,1                   ; запись как эталон времени до след перемещения 1, ;декрементирующейся в начале цикла заде

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

 66  0846   42          move:     mov     b,d                   ; перемещение числа из эталона времени в счетчик времени ;оставшегося до след перемещ

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

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

 69  084A   7B            mov     a,e                   ; перемещение кода положения щетки в А

 70  084B   EE 6C                   xri        wetka              ; исключающее ИЛИ кода маски для смены положения щёток ;01101100 и А (в Е хранятся тольк

 71  084D   D3 80                   out       porta                ; вывод результата операции xri wetka на индикацию

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

 73  0850   CD 63 08              call      zader               ; +выполнение задержки на 1 сек

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

 75  0853   7B             mov     a,e                  

 76  0854   EE 6C                   xri        wetka

 77  0856   D3 80       out       porta

 78  0858   5F             mov     e,a

 79  0859   05          cikl:        dcr       b                      ; декремент времени до след перемещения (если скорость 30 ;движений в минуту, то этот с