Разработка программы для устройства управления системой очистки лобового стекла автомобиля, страница 3

 20  0810   E6 0A            ani   kod  

 21  0812   CA 0C 08         jz    reset

 22  0815   0D               dcr   c

 23  0816   C2 0E 08         jnz   vvod

 24  0819   DB 82            in    portc

 25                     ;запоминание нажатой клавиши

 26  081B   21 A9 08         lxi   h,klav

 27  081E   77               mov   m,a

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

 29  081F   0E FE       rept: mvi   c,povdr

 30  0821   DB 82       out: in    portc

 31  0823   A7               ana   a

 32  0824   C2 1F 08         jnz   rept

 33  0827   0D               dcr   c

 34  0828   C2 21 08         jnz   out

 35                     ;конец защиты от дребезга

 36  082B   CD 4E 08    creg: call  reg   ;вызов подпрограммы режим

 37  082E   7E               mov   a,m   ;при выполнения подпрограммы режим flag устанавливается в 0 или 1 (flag - специально органи

 38                     ;в данный момент в паре h находится адрес ячейки памяти flag

 39  082F   A7               ana   a     ;проверка флага

 40  0830   CA 07 08         jz    begin ;флаг = 0, переход на начало

 41  0833   7A          rstr: mov   a,d   ;флаг = 1,выполняется следующий шаг программы - пересылка текущего (начального) состоя

 42  0834   D3 81            out   portb ;вывод на индикацию

 43  0836   EE 6C            xri   mask  ;смена состояния индикатора на противоположное*

 44  0838   57               mov   d,a   ;пересылка из a в d

 45  0839   43               mov   b,e   ;пересылка из e в b эталона количества секунд

 46  083A   CD 72 08    crcl: call  zader ;* вызов подпрограммы задержки на 1 секунду

 47  083D   05               dcr   b     ;уменьшение количества секунд на единицу

 48  083E   C2 3A 08         jnz   crcl  ;отработана задержка на заданное количество секунд?,нет продолжаем отработку задержк

 49  0841   3E 00            mvi   a,0

 50  0843   D3 81            out   portb ;погашенные индикаторы

 51  0845   CD 72 08         call  zader

 52  0848   CD 72 08         call  zader

 53  084B   C3 33 08         jmp   rstr  (зацикливание)

 54                     ;***подпрограммы***

 55                     ;подпрограмма режим()

 56  084E   21 A9 08    reg: lxi   h,klav      ;определение нажатой клавиши

 57  0851   7E               mov   a,m   ;

 58  0852   E6 01            ani   01b   ;нажата кл. 0 ?

 59  0854   C2 6C 08         jnz   off   ;да, переход на метку off

 60  0857   7E               mov   a,m   ;пересылка кода нажатой клавиши из памяти в аккумулятор

 61  0858   21 A8 08         lxi   h,flag      ;загрузка в пару h адреса ячейки flag

 62  085B   36 01            mvi   m,1   ;установка флага в 1

 63  085D   E6 02            ani   010b  ;нажата кл. 1?

 64  085F   C2 67 08         jnz   fast  ;да, переход на метку fast

 65  0862   1E 05            mvi   e,5   ;нет, значит загружаем в эталон количества секунд 5

 66  0864   C3 71 08         jmp   return      ;выход

 67  0867   1E 02       fast: mvi   e,2   ;нажата клавиша 1, эталон количества секунд - 2

 68  0869   C3 71 08         jmp   return      ;выход

 69  086C   21 A8 08    off: lxi   h,flag      ;

 70  086F   36 00            mvi   m,0   ;установка флага в 0

 71  0871   C9          return:    ret

 72                     ;подпрограмма задержки

 73  0872   21 1D 85    zader:     lxi   h,pov ;*

 74  0875   DB 82       zader1:    in    portc ;**

 75  0877   E6 0B            ani   kod1        ;**

 76  0879   CA A1 08         jz    zader2      ;**

 77  087C   0E FE            mvi   c,povdr     ;

 78  087E   DB 82       vvod1:     in    portc ;