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

0060  7A         mov a,d

0061  F6 08      ori 08

0063  57         mov d,a

0064  32 04 80   sta PPI     ; снятие выбора Х (!CS = 1)

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

                 ; Вычисление функций Yi

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

                 ; Вычисление Y1

0067  7E         mov a,m     ; выделение !Х3

0068  E6 04      ani 4

006A  1F         rar

006B  1F         rar

006C  EE 01      xri 1

006E  4F         mov c,a

006F  7E         mov a,m     ; выделение !Х2

0070  E6 02      ani 2

0072  1F         rar

0073  EE 01      xri 1

0075  47         mov b,a

0076  7E         mov a,m     ; выделение Х1

0077  E6 01      ani 1

0079  A0         ana b

007A  A1         ana c       ; Y1

007B  23         inx h

007C  77         mov m,a     ; запись Y1 в таблицу

                 ; Вычисление Y2

007D  21 01 08   lxi h,DT+1

0080  7E         mov a,m     ; А <- N2

0081  23         inx h

0082  86         add m       ; A <- A+N1

0083  DA 9D 00   jc Y3       ; если перенос, то N1+N2 > K

0086  47         mov b,a

0087  3A 20 80   lda K

008A  90         sub b

008B  DA 91 00   jc CMP_Q    ; если перенос, то N1+N2 > K

008E  3A 20 80   lda K       ; иначе N1+N2 <= K

0091  3A 3E 02    CMP_Q: lda Q

0094  90         sub b

0095  DA 9D 00   jc Y3       ; если перенос, то Y2=0 (Y3=1)

0098  3E 01      mvi a,1

009A  C3 9F 00   jmp SAVEY2  ; иначе, то Y2=1 (Y3=0)

009D  3E 00       Y3:  mvi a,0

009F  32 05 08    SAVEY2:sta DT+5   ; запись Y1 в таблицу

                 ; Вычисление Y4

00A2  3A 00 08   lda DT

00A5  47         mov b,a

00A6  3A 40 02   lda A1

00A9  4F         mov c,a

00AA  CD 64 01   call MULT   ; h = HIGH(N3*A1)

00AD  3A 3F 02   lda A0

00B0  84         add h       ; A = A0+ HIGH(N3*A1)

00B1  32 06 08   sta DT+6    ; запись Y1 в таблицу

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

                 ; Вывод вычисленных величин

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

                 ; сигнал Y1

00B4  21 04 08   lxi h,DT+4

00B7  7E         mov a,m

00B8  A7         ana a

00B9  CA D2 00   jz O_Y2

00BC  3E D0      mvi a,0d0h  ; запись констант в 0-й канал

00BE  32 0C 80   sta PIT     ; для сигнала Y1 (10 мкс)

00C1  3E 07      mvi a,07

00C3  32 0C 80   sta PIT

00C6  7A         mov a,d

00C7  F6 20      ori 20h

00C9  32 04 80   sta PPI     ; строб GATE0

00CC  E6 0F      ani 0fh

00CE  57         mov d,a

00CF  32 04 80   sta PPI

00D2  23         O_Y2: inx h

00D3  7E         mov a,m

00D4  A7         ana a

00D5  CA E7 00   jz O_Y3

00D8  3A 41 02   lda L_FRQ   ; запись констант в 1-й канал

00DB  32 0D 80   sta PIT+1   ; для сигнала Y2 (60 мкс)

00DE  3A 42 02   lda H_FRQ

00E1  32 0D 80   sta PIT+1

00E4  C3 F5 00   jmp EO_Y2

00E7  3A 41 02   O_Y3: lda L_FRQ    ; запись констант в 1-й канал

00EA  07         Rlc         ; для сигнала Y3 (120 мкс)

00EB  32 0D 80   sta PIT+1

00EE  3A 42 02   lda H_FRQ

00F1  07         rlc

00F2  32 0D 80   sta PIT+1

00F5  7A         EO_Y2:mov a,d      ; строб GATE1

00F6  F6 40      ori 40h

00F8  32 04 80   sta PPI

00FB  E6 BF      ani 0bfh

00FD  32 04 80   sta PPI

0100  57         mov d,a

0101  23         O_Y4:   inx h      ; вывод Y4 в ЦАП

0102  7E          mov a,m

0103  32 24 80   sta OUT_REG

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

                 ; приготовление к новому циклу

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

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

0106  3A 02 08   lda SECOND

0109  A7         ana a

010A  CA 15 01   jz C_MODE

010D  3E 00      mvi a,0

010F  32 02 08   sta SECOND

0112  32 06 80   sta PPI+2

0115  3A 06 80    C_MODE:lda PPI+2

0118  47         mov b,a

0119  E6 20      ani 20h     ; если режим "тест" -

011B  CA 2F 00   jz BEGIN    ; переход к началу цикла

011E  F3         di          ; иначе (рабочий режим)

011F  D5         push d      ; заполнение таблицы DT_INT

0120  21 02 08   lxi h,DT+2

0123  11 01 08   lxi d,DT_INT

0126  0E 05      mvi c,5

0128  7E          F_DTI: mov a,m