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

MVI   A,00Н

OUT   SELPIC_RUSA                  ;Инициализация ПКП

EI                                                   ;Разрешить прерывание

HLT                                               ;Остановить МП

;*********************************************************************

; ISR2- подпрограмма обработки запроса прерывания

;*********************************************************************

ISR2:      

XRA   A               

OUT   SELPIO1_PC                    ;Вывод нулей в порт PC(ППА1)  

OUT   SELPIO2_PB                    ;Гашение светодиодов

OUT   SELPIO2_PC                    ;Гашение дисплея

OUT   SELPIO3_PA               

OUT   SELPIO3_PB                

; Ввод и обработка сигналов X1, X2,X3,X4

LXI   H, DATA_Х                  

IN      SELPIO1_PA                

MOV           C, A           

MOV           M, A                         ;Запомнить X1,X2,X3,X4

ANI   0000 0001B                        ;Выделить разряд D0

INX   H                

MOV           M, A                         ;Запомнить X1

MOV           A, C           

RRC           

ANI   0000 0001B         

INX   H                

MOV           M, A                         ;Запомнить X2

MOV           A, C           

RRC

RRC           

ANI   0000 0001B         

INX   H                

MOV           M, A                         ;Запомнить X3

MOV           A, C           

RRC

RRC           

RRC

ANI   0000 0001B         

INX   H

MOV           M, A                          ;Запомнить X4

;Вычисляем функцию двоичных датчиков  f( )

          MOV          A,M                            ;(A)       (X4) 

DCX            H

          MOV          B,M                            ;(B)       (X3)

ORA            B                                ;A(X3 OR X4)

CMA                                              ;A(NOT(X3 OR X4))

MOV          C,A                                               

DCX            H                                

MOV          A,M                                                                      

CMA                                              ;A(NOT (X2))

ORA            B                                ;A(NOT(X2) OR X3)

DCX            H                                 

MOV          B,M                            

ORA            B                                ;A(X1 OR NOT(X2) OR X3)

CMA                                              ;A(NOT (X1 OR NOT(X2) OR X3))

         ANA            C                               ;A(NOT ((X1 OR NOT(X2) OR X3))

                                                                                  AND   NOT (X3 OR X4))

LXI   H, DATA_Y                       

          MOV          M,А                             ;Запомнить Y1

JZ               EXIT                            ;Идти на  метку EXIT,если Y1=0

;Формирование импульса длительностью t1

FORM_Y1:

MVI           A,00H                          ;

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

MVI           A,35H                           ;

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

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

IN               SELPIO1_PC

ORI            00000001B

          OUT           SELPIO1_PC                 ;Выдать U0=1

EXIT:

;На входах коммутатора    A1=A0=0, при этом Y=X1

IN               SELPIO1_PC

ANI            11111001B

OUT           SELPIO1_PC               ;Выдать U1=U2=0

LXI             H,DATA_W1

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

IN               SELPIO1_PC

ORI            00000010B

OUT           SELPIO1_PC               ;Выдать U1=1,U2=0

LXI             H,DATA_W2

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

IN               SELPIO1_PC

ANI            11111001B

          ORI            00000100B

OUT           SELPIO1_PC                 ;Выдать U1=0,U2=1

LXI             H,DATA_W3