Устройство управления охранной сигнализацией, страница 4

         out    porta           ;вывод нолей на индикацию         

         out    portb

                                     ;ожидание нажатия клавиши

zod1: mvi   c,povdr       ;загрузка кол-ва повторов при защите от дребезга

rept1:         in                 portc          ;опрос клавиатуры

         ani     mask136     ;нажато что-то нужное?

         jz       zod1           ;ничего не нажато

         dcr    c                 ;нажато, уменьшение счетчика     

         jnc     rept1           ;дребезг не окончен

         in      portc          ; дребезг окончен, чтение кода нажатой клавиши

         mov  e,a               ;сохранение кода в регистре Е

                                      ; ожидание отпускания клавиши

reset: mvi   c,povdr       ;загрузка кол-ва повторов при защите от дребезга

rept2:         in                 portc          ;опрос клавиатуры

         ana    a                  ;ни одна клавиша не нажата?

         jnz     reset            ;нет, что-то нажато

         dcr    c                  ;ничего не нажато, уменьшение счетчика

         jnz     rept2           ;дребезг еще не окончен

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

obrab:mvi   a,40h           ;загрузка кода «6»

         cmp   e                  ;сравнение содержимого аккумулятора и регистра Е

         jnz     razblok        ;нажата не «6»

blok: mvi   a,0               ;да, нажата «6», загрузка в аккумулятор 0

         cmp   d                  ; сравнение содержимого аккумулятора и регистра D

         jnz     razblok        ;не равны, «6» нажата второй раз, необходимо         

                                       разблокировать

         mvi   d,1               ; «6» нажата первый раз, блокирование срабатывания

                                       очередного датчика, загрузка в регистр «6» 1

zod2:  mvi  c,povdr       ;загрузка кол-ва повторов при защите от дребезга

rept3:         in                 portc          ;опрос клавиатуры

         ani     mask6         ;нажата «6»?

         jz       rept3           ;нет

         dcr    c                  ;да, нажата, уменьшение счетчика

         jnz     rept3           ; дребезг еще не окончен

         in      portc          ;опрос клавиатуры

         mov  e,a               ;сохранение кода в регистре Е

reset2:mvi  c,povdr         ; загрузка кол-ва повторов при защите от дребезга

rept4:         in                    portc             ;опрос клавиатуры

         ana    a                  ;ни одна клавиша не нажата?

         jnz     reset2                   ;нет, что-то нажато

         dcr    c                  ;ничего не нажато, уменьшение счетчика

         jnz     rept4           ;дребезг еще не окончен

         jmp   blok             ;дребезг окончен, переход на blok

razblok:mvi                    d,0    ; «6» не нажата или нажата второй раз, загрузка в

                                       регистр D 1

         mvi   a,2h             ; загрузка кода «1»

         cmp   e                  ; сравнение содержимого аккумулятора и регистра Е

         jnz     gaz              ; нажатa не «1»

dverb:mvi   a,0fch                   ;да, нажат «1», код цифры 0 для вывода

        out      porta           ;вывод 0 на индикацию

        mvi     a,0dah         ; код цифры 2 для вывода

        out      portb           ;вывод 2 на индикацию

        call     zader           ;вызов подпрограммы задержки

        mvi     a,0fdh                  ;код цифры 0. для вывода

        out      porta            ;вывод 0. на индикацию

        mvi     a,0dbh          ;код цифры 2. для вывода