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

105  0875   3E 60                   mvi   a,60h          ; вывод на индикацию правого положения дворника

106  0877   D3 80                  out    porta

107  0879   15                        dcr    d                 ; уменьшение счетчика количества движений

108  087A   C2 3C 08                     jnz     reti              ; пока d<>0, цикл продолжается

109                     ;

110                     ;         

111  087D   C3 3A 08                     jmp   set              ; бесконечное выполнение алгоритма "включение со скоростью 30 движений в минуту"

112                     ;

113                     ;!!!----------------------------------Мойка---------------------------------!!!

114                     ;

115  0880   7A          moika:            mov  a,d              ; 60h в аккумулятор

116  0881   EE 01                  xri     01             ; мойка

117  0883   57                        mov  d,a              ; теперь с точкой или без нее в d

118  0884   D3 80                  out    porta          ; выводим

119  0886   C3 0D 08                      jmp   tuki             ; на начало

120                     ;

121                     ;!!!-----------------------подпрограмма задержки на 1 секунды---------------!!!

122                     ;

123  0889   01 29 8E    sec:             lxi     b,time                 ; 10 тактов - Запись в пару b значения, определяющего задержку на 1 сек.

124  088C   E6 00                  ani     0                 ; пустая команда на 7 тактов

125  088E   DB 82       umen:          in      portc          ; 10 тактов - опрос клавиатуры.

126  0890   5F                        mov  e,a              ; 5 тактов - сохранение кода нажатой клавиши в аккумуляторе

127  0891   0B                       dcx    b                 ; 5 тактов - декрементирование пары b

128  0892   79                        mov  a,c              ; 5 тактов - Запись в аккумулятор младшего регистра для сравнения со старшим 

129  0893   B0                       ora    b                 ; 4 такта -   Сравнение с=b=0?

130  0894   CA BE 08                     jz       exit             ; 10 тактов - Если да, то конец задержки

131  0897   7B                       mov  a,e              ; 5 тактов - Если нет,то восстановление кода, полученного с клавиатуры

132  0898   E6 01                   ani     kodkl0        ; 7 тактов - нажато 0?

133  089A   CA 8E 08                     jz       umen          ; 10 тактов - если нет, то выполнение подпрограммы задержки  в обычном режиме

134                     ;

135  089D   0E FA                 mvi   c,povdr               ;          *7 тактов - загрузка количества повторов при защите от дребезга

136  089F   DB 82       povt3:                   in      portc          ;        *10 тактов - опрос клавиатуры                 

137  08A1   E6 01                  ani     kodkl0                 ;        *7 тактов - нажата клавиша 0?

138  08A3   CA 8E 08                     jz       umen          ;        *10 тактов - ничего не нажато

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

140  08A6   0D                      dcr    c                 ;        *10 тактов - да, нажато, уменьшение счетчика повторов при защите от дребезга

141  08A7   C2 9F 08                      jnz     povt3                   ;        *10 тактов - дребезг еще не окончен

142                     ;          дребезг при нажатии окончен

143                     ;       сохранение кода нажатой клавиши

144  08AA   DB 82                         in      portc          ;        *10 тактов - чтение кода нажатой клавиши                                

145  08AC   5F                      mov  e,a              ;        *5 тактов - сохранение аккумулятора