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

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

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

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

                            jnz     reset2                 ;                   *10 тактов - нет, что-то нажато

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

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

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

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

                            pop   h                 ; *если да, то коррекция стека перед аврийным выходом из подпрограммы

                            jmp   circl            ; *переход в начало программы

exit:                     ret                        ; 10 тактов - выход из подрограммы

;

;!!!-----------------РАССЧЁТ ВРЕМЕННОЙ ЗАДЕРЖКИ-------------------!!!

;                          

;                           Длительность в тактах подпрограммы задержки на 1 секунду (* не считается):

;                           10+time*[10+5+5+5+4+10+5+7+10]+10=2,22*10exp6

;                           20+time*61=2,22*10exp6

;                           time*61=2219980

;                           time=36393

;                           остаток=2219980-61*36393=7 обеспечивается выполнением одной пустой команды (ani)

;------------------------------------------------------------------------------------

;

                            end                       ; директива ассемблера, означающая конец текста программы


     Кросс-ассемблер 80/85 ### Файл листинга v1.lst

Входной файл   > v1.asm

Объектный файл > v1.obj

1 проход

2 проход

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

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

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

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

  5                     ;

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

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

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

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

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

 11                     ;

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

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

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

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

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

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

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

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