Программное обеспечение. CONTROL – основная программа работы МПС. Адрес ячейки ОЗУ для хранения состояния выходов порта вывода, страница 3

CALL         ADCONV                    ; Ввод сигнала  V3

;Вычисление  g( )

LXI             H,DATA_W1             

MOV           C,M

MVI             B,00H

MOV           L,C

MOV           H,B                               ; Умножение  4*W1

DAD           H                                   ;  умножение на 2

DAD           H                                   ;  умножение на 2

XCHG                                              ; Результат  (4*W1) в DE

          LXI             H,DATA_W2

MOV           A,M

MOV           C,A

ORA            A                                  ;Сброс флага  (СУ)      0

RAL                                                  ;умножение  на 2  

ORA            C                                   ; Результат (3*W2)

MOV           C,A

MVI            B,00H

LXI             H,ADR_K1

MOV          A,M

ADD           C                                   ;Cуммируем младшие байты

MOV          C,A

INX            H

MOV          A,M

ADC           B                                   ;Cуммируем старшие байты

                                                         ; Результат  (3*W1+K1)

ORA            A                                  ;Сброс флага  (СУ)      0

RAR                                                 ; деление на 2  

ORA            A                                  ;Сброс флага  (СУ)      0

RAR                                                 ; деление на 2

MOV           B,A

MOV           A,C

ORA            A                                  ;Сброс флага  (СУ)      0

RAR                                                 ; деление на 2  

ORA            A                                  ;Сброс флага  (СУ)      0

RAR                                                 ; деление на 2

MOV           B,A                              ; Результат  (3*W2+K1)/4  в BC

MOV          A,E

ADD           C                                   ;Cуммируем младшие байты

MOV          E,A

MOV          A,D

ADC           B                                   ;Cуммируем старшие байты

MOV          D,A                               ; Результат  (4*W1+(3*W2+K1)/4) в DE

          LXI             H,ADR_K2

SUB           M                                   ;Вычитаем младшие байты

MOV          E,A

INX            H

MOV          A,D

SBB            M                                   ;Вычитаем старшие байты

MOV          D,A                                ; Результат (4*W1+(3*W2+K1)/4 – K2 )  

                                                          ;   в регистровой паре DE

;Cравнение  g( ) c константой Q

LXI             H,ADR_Q

MOV           A,E

SUB            M

INX             H

MOV           A,D

SBB             M

JC                FORM_Y2                    ;Если  g( )–Q( )<0, FORM_Y2

                                                           ;Если  g( )–Q( )>0,  FORM_Y3

; Формирование импульса Y3

FORM_Y3:

LXI H, DATA_Y                               ; Сохранение значения Y3

MOV          A, M                                           

ORI            40H                                         

MOV          M, A                                         

          MVI           A,70H                          

OUT           SELPT1_RUS                ; Управл. слово ПТ1  режим СТ1

MVI           A,02H                              

OUT           SELPT1_ST1                 ; Загрузка в СТ1  ПТ1 мл-го байта  N3

MVI           A,03H                             

OUT           SELPT1_ST1                 ; Загрузка в СТ1  ПТ1 ст-го байта   N3

;Вывод      1   в   5-й  разряд порта

IN               SELPIO1_PC

ORI            00100000B

OUT           SELPIO_PC                   ;Выдать U5=1

JMP            MET_DL1

; Формирование импульса Y2

FORM_Y2:

LXI H, DATA_Y                               ; Сохранение значения Y2

MOV          A, M                                           

ORI            20H