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

 20                     kodkl2          equ    04h             ; код, соответствующий нажатию клавиши 2

 21                     time              equ    36393                  ; переменная, определяющая задержку в 1 сек.

 22                     ;

 23                                 org    800h           ; стартовый адрес программы в ОЗУ стенда                              

 24                     ;!!!---------------------инициализация----------------------------------------!!!

 25                     ;

 26  0800   31 00 09               lxi     sp,900h              ; инициализация указателя стека

 27  0803   3E 89                    mvi   a,89h          ; загрузка управляющего байта внешних устройств

 28  0805   D3 83                   out    porcrl                 ; вывод управляющего байта в порт управления

 29  0807   3E 60       circl:              mvi     a,60h

 30  0809   D3 80                   out    porta          ; вывод дворника на индикацию (исходное состояние)

 31  080B   16 60                   mvi   d,60h

 32                     ;

 33                     ;!!!-----------------------------------ввод----------------------------------!!!

 34                     ;

 35  080D   0E FA       tuki:             mvi   c,povdr               ; загрузка количества повторов при защите от дребезга

 36  080F   DB 82       povt:            in      portc          ; опрос клавиатуры              

 37  0811   E6 15                    ani     kodkl          ; нажата клавиша 0 или 2 или 4?

 38  0813   CA 0D 08                      jz       tuki             ; ничего не нажато

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

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

 41  0817   C2 0F 08              jnz     povt           ; дребезг еще не окончен

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

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

 44  081A   DB 82                  in      portc          ; чтение кода нажатой клавиши                                 

 45  081C   5F                        mov  e,a              ; сохранение аккумулятора

 46  081D   0E FA       reset1:         mvi     c,povdr               ; ожидание отпускания клавиши        

 47  081F   DB 82       povt1:         in        portc           ; опрос клавиатуры

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

 49  0822   C2 1D 08                       jnz     reset1                 ; нет, что-то нажато

 50                     ;                             защита от дребезга при отпускании клавиши

 51  0825   0D                        dcr    c                 ; ничего не нажато, уменьшение счетчика при защите от дребезга

 52  0826   C2 1F 08              jnz     povt1                   ; дребезг еще не окончен                                  

 53  0829   7B                        mov  a,e              ; сохранение аккумулятора

 54                     ;

 55                     ;!!!-------------------------------------анализ нажатой клавиши--------------!!!

 56  082A   FE 10                   cpi     kodkl4                ; нажата клавиша 4?

 57  082C   C2 32 08              jnz     dalee           ; если клавиша 4 не нажата, то dalee               

 58  082F   C3 80 08              jmp   moika                  ; 4 нажата, включаем или отключаем стеклоомыватель

 59  0832   FE 01       dalee:             cpi     kodkl0                ; нажата клавиша 0?

 60  0834   C2 3A 08                       jnz     set              ; если клавиша 0 не нажата, то 2