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

                            jnz     reti              ; пока d<>0, цикл продолжается, но если кнопка 4 нажата в это время

;

;

dvigai:                  call    sec              ; вызов подпрограммы задержки на 1 секунду

                            mvi   a,0ch         

                            out    porta          ; вывод на индикацию левого положения дворника

                            call    sec             

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

                            out    porta

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

                            jnz     reti              ; пока d<>0, цикл продолжается

;

;                          

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

;

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

;

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

                            xri     01             ; мойка

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

                            out    porta          ; выводим

                            jmp   tuki             ; на начало

;

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

;

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

                            ani     0                 ; пустая команда на 7 тактов

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

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

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

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

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

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

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

                            ani     kodkl0        ; 7 тактов - нажато 0?

                            jz       umen          ; 10 тактов - если нет, то выполнение подпрограммы задержки  в обычном режиме

;

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

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

                            ani     kodkl0        ;         *7 тактов - нажата клавиша 0?

                            jz       umen          ;        *10 тактов - ничего не нажато

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

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

                            jnz     povt3                   ;        *10 тактов - дребезг еще не окончен

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

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

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

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