Устройство управления охранной сигнализацией, страница 6

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

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

         mov  e,a               ; сохранение кода в регистре Е

zader4:mvi c,povdr        ; загрузка кол-ва повторов при отпускании 

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

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

         jnz     zader4         ;нет, что-то нажато

         dcr    c                  ;ничего не нажато, уменьшение счетчика

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

         pop    h                   ;очищение стека

         jmp   obrab          ;дребезг окончен, переход на vixod

zader2:dcx  h                   ;**5  уменьшение на 1 постоянной времени

         mvi   a,0               ;*7

         mov  a,h               ;**5  проверка на равенство 0

         ora    l                   ;**4

         jnz     zader1         ;**10  нет, постоянная времени не равна 0

                                      ;да, постоянная времени равна 0

         ret                         ;*10  возврат из подпрограммы задержки

end

3. Листинг программы

Листинг программы на ассемблере соответствующий разработанному алгоритму приведен ниже  (файл sign.asm). Содержимое файлов листинга sign.lst и объектного файла sign.obj полученных с помощью программы asm.exe показаны на страницах 18-20

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

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

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

1 проход

2 проход

1                                            porta    equ  80h

  2                                            portb    equ  81h

  3                                            portc    equ  82h

  4                                            porcrl   equ  83h

  5                                            pov  equ  21764

  6                                            povdr    equ  254

  7                                            mask136  equ  4ah

  8                                            mask6    equ  40h

  9                                     org    800h

 10  0800   31 20 09                  lxi sp,920h      

 11  0803   3E 89                      mvi a,89h

 12  0805   D3 83                      out porcrl

 13  0807   1E 00                    mvi e,0

 14  0809   0E 00                    mvi c,0

 15  080B   16 00                     mvi d,0

 16  080D   3E FC                    mvi a,0fch

 17  080F   D3 80                    out porta   

 18  0811   D3 81                    out portb        

 19  0813   0E FE                ZOD1:    mvi  c,povdr 

 20  0815   DB 82                rept1:   in   portc

 21  0817   E6 4A                     ani  mask136

 22  0819   CA 13 08                       jz  ZOD1    

 23  081C   0D                             dcr c

 24  081D   D2 15 08                  jnc rept1

 25  0820   DB 82                    in  portc

 26  0822   5F                             mov e,a

 27  0823   0E FE              reset1:    mvi  c,povdr

 28  0825   DB 82              rept2: in   portc

 29  0827   A7                       ana a

 30  0828   C2 23 08                  jnz reset1

 31  082B   0D                        dcr  c

 32  082C   C2 25 08                  jnz rept2

 33  082F   3E 40               obrab:    mvi  a,40h