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

 14                     ; D- содержит эталон времени до след перемещения, Е - здесь хранится код положения ;щетки,

 15                     ;H,L - содержит постоянную времени на одну секунду

 16                     ;

 17                     porta equ      80h                  ;адрес индикатора

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

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

 20                     posvr equ      13067              ;постоянная времени на одну секунду

 21                     posdr equ      254                  ;постоянная времени защиты от дребезга

 22                     wetka            equ      6ch                  ;код маски для смены положения щетки 01101100

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

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

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

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

 27                     ;***********************НАЧАЛО ПРОГРАММЫ**********************

 28  0807   1E 60       vstart:   mvi      e,60h               ; загрузка кода правого положения щёток очистки в Е

 29  0809   7B             mov     a,e                   ; загрузка кода правого положения щёток очистки в А

 30  080A   D3 80                   out       porta                ; вывод на индикацию - щётка вправо

 31                     ;ожидание включения одного из режимов

 32  080C   0E FE       start:  mvi        c,posdr                        ; загрузка постоянной времени дребезга в регистр C

 33  080E   DB 82       drin:    in         portc                ; опрос клавиатуры

 34  0810   E6 0C       ani       0Ch                 ; накладывается маска 00001100 - нажаты клавиши включения ;одного из режимов режимов ?

 35  0812   CA 0C 08             jz         start                 ;ничего нужного не нажато, переход на начало

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

 37  0816   C2 0E 08              jnz       drin                 ; дребезг еще не окончен, снова опрос клавиатуры

 38                     ;дребезг при нажатии окончен - сохранение кода нажатой клавиши в памяти

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

 40  081B   21 C3 08              lxi        h,klav              ; занесение в пару h адреса ячейки памяти, в которой ;необходимо сохранить код клавиши

 41  081E   77             mov     m,a                  ; сохранение кода клавиши в ячейку памяти адрес которой ;находится в паре h

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

 43  081F   0E FE       drout1: mvi      c,posdr                        ; загрузка постоянной времени дребезга в регистр C

 44  0821   DB 82       drout2: in         portc                ; опрос клавиатуры

 45  0823   E6 0C       ani       0Ch                 ; накладывается маска 00001100 - нажаты клавиши включения ;одного из режимов режимов ?

 46  0825   C2 1F 08               jnz       drout1             ; что-то нужное нажато, переход на начало защиты от дребезга ;при отпускании кл