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


Рисунок 12 – Блок уменьшения количества движений

2 Текст программы, листинг, объектный файл

;                           !!!***!!!Устройство управления системой очистки лобового стекла автомобиля!!!***!!!

;                           "0" - выключено

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

;                           "4" - включение/выключение стеклоомывателя

;

; Распределение регистров микропроцессора.

; С                       -         защита от дребезга

; D                       -         счетчик количества секунд и движений 

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

; B,C                    -         временная задержка на 1 сек

;

porta                    equ    80h             ; адрес первого индикатора

portb                   equ    81h             ; адрес второго индикатора  

portc                    equ    82h             ; адрес клавиатуры     

porcrl                  equ   83h             ; адрес порта управления внешними устройствами

povdr                   equ    250                     ; постоянная времени защиты от дребезга (кол. повторов).

kodkl                   equ    15h             ; код, соответствующий нажатию клавиши 0 или 2 или 4

kodkl0                 equ   01h     ; код, соответствующий нажатию клавиши 0

kodkl4                 equ    10h             ; код, соответствующий нажатию клавиши 4

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

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

;

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

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

;

                            lxi     sp,900h        ; инициализация указателя стека

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

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

circl:                     mvi     a,60h

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

                            mvi   d,60h

;

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

;

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

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

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

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

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

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

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

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

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

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

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

reset1:                 mvi    c,povdr       ; ожидание отпускания клавиши  

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

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