Разработка микропроцессорной системы управления ответственным объектом, страница 11

0129  EB         xchg

012A  77         mov m,a

012B  EB         xchg

012C  23         inx h

012D  13         inx d

012E  0D         dcr c

012F  C2 28 01   jnz F_DTI

0132  D1         pop d

0133  FB         ei

0134  3A 06 80    C_ERR: lda PPI+2

0137  E6 80      ani 80h     ; если ошибка на выходе -

0139  CA 42 01   jz OUT_R    ; сигнализация об этом и останов

013C  3E 0C      mvi a,0ch

013E  32 06 80   sta PPI+2

0141  76         hlt

0142  21 04 08    OUT_R:lxi h,DT_INT+3

0145  7E         mov a,m

0146  EE 01      xri 1

0148  0F         rrc

0149  0F         rrc

014A  47         mov b,a

014B  7E         mov a,m

014C  0F         rrc

014D  B0         ora b

014E  2B         dcx h

014F  B6         ora m

0150  32 18 80   sta RG3     ; вывод на индикацию Y1,Y2,Y3

0153  23         inx h

0154  23         inx h

0155  7E         mov a,m

0156  32 1C 80   sta RG4     ; вывод на индикацию Y4

0159  3A 06 80    C_STOP:lda PPI+2

015C  E6 40      ani 40h

015E  C2 59 01   jnz C_STOP

0161  C3 2F 00   jmp BEGIN   ; цикл пока включен тумблер "Останов"

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

                 ; подпрограмма умножения

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

0164  C9         MULT:  ret

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

                 ; обработчики прерываний

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

                 ; прерывание от истчника питания

0165  3E 10      INT0:  mvi a,00111110h

0167  32 0F 80   sta PIT+3   ; 0-й канал ПТ - режим 3

016A  3E 70      mvi a,70h   ; запись констант в 0-й канал

016C  32 0C 80   sta PIT     ; для сигнала Y5 (2*30 мкс)

016F  3E 17      mvi a,17h

0171  32 0C 80   sta PIT

0174  3E 01      mvi a,01

0176  32 06 80   sta PPI+2   ; переключение выхода Y1/Y5  на Y5

0179  3E 20      mvi a,20h   ; запись констант в 1-й канал

017B  32 0D 80   sta PIT+1   ; для строба длительностью 100 мкс

017E  3E 4E      mvi a,4eh

0180  32 0D 80   sta PIT+1

0183  7A         mov a,d     ; строб GATE0

0184  F6 40      ori 40h

0186  32 04 80   sta PPI

0189  E6 BF      ani 0bfh

018B  32 04 80   sta PPI

018E  3E 21      mvi a,'!'   ; посылка в последовательный канал

0190  32 08 80   sta PCI     ; символа "!"

0193  76         hlt         ; останов

                 ; прерывание от аварийного источника

0194  21 01 08   INT3:  lxi h,DT_INT

0197  7E         mov a,m

0198  32 10 80   sta RG1     ; регистр 1 <- N1

019B  23         inx h

019C  7E         mov a,m

019D  32 14 80   sta RG2     ; регистр 1 <- X

01A0  3E 02      mvi a,02

01A2  32 06 80   sta PPI+2   ; строб для ВЕ51

01A5  3E 10      mvi a,10h   ; (режим "сигнализация")

01A7  32 04 80   sta PPI

01AA  3E 00      mvi a,0

01AC  32 04 80   sta PPI

01AF  76         hlt         ; останов

                 ; прерывание от внешней ЭВМ

01B0  3A 08 80   INT4:  lda PCI

01B3  FE 44      cpi 'D'

01B5  C2 BE 01   jnz CMP_A

01B8  3A 03 08   lda DT_INT+2 ; если "D" - посылаем Y1

01BB  32 08 80   sta PCI

01BE  FE 41       CMP_A: cpi 'A'

01C0  C2 C9 01   jnz E_INT2

01C3  3A 05 08   lda DT_INT+4

01C6  32 08 80   sta PCI     ; если "A" - посылаем Y4

01C9  FB          E_INT2:ei

01CA  C9         ret         ; возврат

01CB  21 03 08   INT5:  lxi h,DT_INT+2

01CE  46         mov b,m     ; выделяем Y1

01CF  23         inx h

01D0  7E         mov a,m

01D1  EE 01      xri 01      ; выделяем N>Q (!Y2)

01D3  07         rlc

01D4  B0         ora b

01D5  47         mov b,a

01D6  2B         dcx h

01D7  2B         dcx h

01D8  7E         mov a,m     ; A <- X1-X5

01D9  E6 0F      ani 0fh     ; A <- X1-X4

01DB  CA ED 01   jz A_ONE    ; получаем X1*X2*X3*X4

01DE  78         mov a,b     ; и X1vX2vX3vX4

01DF  E6 FB      ani 0fbh

01E1  47         mov b,a

01E2  79         mov a,c

01E3  B7          ora a

01E4  CA F3 01   jz A_ZERO

01E7  78         mov a,b

01E8  F6 08      ori 08

01EA  C3 F6 01   jmp O_R1

01ED  78          A_ONE: mov a,b    ; все Х = 1

01EE  F6 0C      ori 0ch

01F0  C3 F6 01   jmp O_R1