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

 80  085A   CA 46 08             jz         move               ; вся задержка отработана - переход на перемещение

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

 82  0860   C3 59 08               jmp      cikl                  ; переход на декремент В    

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

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

 85  0863   21 0B 33    zader: lxi        h,posvr            ; +загрузка в пару h постоянной времени

 86  0866   E5          zader1:   push    h                      ; ++сохранение в стек оставшегося времени задержки для ;дальнейшего использования

 87  0867   21 C4 08               lxi        h,rejim             ; ++занесение в пару h адреса ячейки памяти, в которой ;хранится код включённого режим

 88  086A   7E            mov     a,m                  ; ++перемещение кода режима в А для обработки

 89  086B   21 C5 08              lxi        h,zadmas         ; ++занесение в пару h адреса ячейки памяти, в которой ;хранится маска накладываемая н

 90  086E   0F             rrc                               ;++сдвиг А вправо, перенос первого разряда содержимого А во ;флаг С

 91  086F   DA 77 08              jc         nets1               ; ++первый разряд равен 1? (в rejim было число 1 - код режима ;30 движений в минуту?)

 92                     ; первый разряд равен 0 (в rejim было число 2 - код режима 1 движение в минуту)

 93  0872   36 05       mvi      m,05h              ; ++занесение в ячейку памяти zadmas 00000101 - маски, ;оставляющей в коде с порта ввода

 94                     ;  и "включение со скоростью 30 движений в минуту"

 95  0874   C3 7C 08              jmp      zader6             ; ++перемещение на основную программу задержки

 96  0877   36 09       nets1:    mvi      m,09h              ; ++занесение в ячейку памяти zadmas 00001001 - маски, ;оставляющей в коде с порта

 97                     ;"выключено" и "включение со скоростью 1 движение в минуту"

 98  0879   C3 7C 08              jmp      zader6             ; ++перемещение на основную программу задержки (нужно ;лишь для поддержания одинакового

 99  087C   DB 82       zader6:            in         portc                ; ++ опрос клавиатуры

100  087E   A6          ana      m                     ; ++была нажата одна из нужных клавиш? (*0*или*2* или ;*0*или *3* в зависимости от включённо

101  087F   CA B5 08            jz         zader2             ; ++нет нажатия - просто задержка

102                     ;есть нажатие, переход к защите от дребезга

103  0882   0E FE                   mvi      c,posdr                        ; загрузка постоянной времени дребезга в регистр C

104  0884   DB 82       zader3:           in         portc                ; опрос клавиатуры

105  0886   A6            ana      m                     ; была нажата одна из нужных клавиш?

106  0887   CA B5 08            jz         zader2             ; нет, переход к отработке задержки

107  088A   0D          dcr       c                     

108  088B   C2 84 08             jnz       zader3

109  088E   DB 82                  in         portc                ; дребезг при нажатии окончен - сохранение кода нажатой ;клавиши в памяти

110  0890   21 C3 08              lxi        h,klav             

111  0893   77            mov     m,a