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

; ISR3 – подпрограмма обработки запроса прерывания INT3

ISR3:XRA       A        

OUT       PC       

OUT       SELOPORT1     

OUT       SELOPORT2     

OUT       SELOPORT3     

OUT       SELOPORT4     

OUT       SELOPORT5     

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

LXI       H, DATA_Х          

IN        PA       

MOV       C, A     

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

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  

;ВЫЧИСЛЯЕМ ФУНКЦИЮ ДВОИЧНЫХ ДАТЧИКОВ   

LXI H     DATA_X

INX H

MOV       A,M

CMA            ; NOT (X2)

DCX H          ;уменьшаем HL на 1

ANA M

MOV       B,A  ;рузультат 1 скобки в рег.В

INX       H

INX       H    ;переход на (X3)

MOV       A,M

CMA            ; NOT (X3)

INX       H        

ORA       M    ; переход на (X4)

ORA       B   

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

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

FORM_Y1:

LXI  H,DATA_Y  ;ЗАПИСЬ ЗНАЧ. Y1

MOV  A,M

ORI       0001 0000B

MOV       M,A

MVI       A, B0H        

OUT       RUS53_1   ;    Загрузить управляющее слово

MVI       A, B8H        

OUT       ST2_1     ;    Загрузить N2

MVI       A, 0BH        

OUT       ST2_1     ;    Загрузить N2

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

IN        PC

ORI       0001 0000B         

OUT       PC       

JMP  EXIT2

EXIT:    

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

OUT       RUS55

IN        PC

ORI       0000 0000B         

OUT       PC       

EXIT2:

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

IN        PC

ORI       0000 0000B     ;Вывод в порт РС числа 00000000 

OUT       PC

LXI       H, DATA_W1         

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

IN        PC

ORI       0000 0010B     ;Вывод в порт РС числа 00000010 

OUT       PC

LXI       H, DATA_W2         

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

IN        PC

ORI       0000 0100B     ;Вывод в порт РС числа 00000100 

OUT       PC

LXI       H, DATA_W3         

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

IN        PC

ORI       0000 0110B     ;Вывод в порт РС числа 00000110 

OUT       PC

LXI       H, DATA_W4

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

;ВЫЧИСЛЕНИЕ g()

LXI       H,DATA_W1 ;

MOV       E,M       ;W1

INX       H

MOV       D,M

MOV       A,5       ;5

CALL      M16_8          ;5w1

MOV       D,H

MOV       E,L

LXI       H,FUNW1

MOV       M,E       ;СОХРАНЯЕМ 5W1

INX       H

MOV       D,M

LXI       H,DATA_W2 ;

MOV       E,M       ;W2

INX      H

MOV       A,7       ;7

CALL      M16_8          ;7w2

MOV       D,H

MOV       E,L

LXI       H,FUN1

MOV       A,E

SUB       M   

MOV       E,A       ;млаший байт полуразности   7W2-5W1

INX       H

MOV       A,D

SBB       M

MOV       D,A       ;старший байт полуразности  7W2-5W1

LXI       H,ADR_K1

MOV       A,E

ADD       M

MOV       E,A       ;млаший байт полусуммы   W2-5W1+K1

INX       H

MOV       A,D

ADC       M

MOV       D,A       ;млаший байт полусуммы   W2-5W1+K1

LXI       H,ADR_K2

MOV       A,E

SUB       M

MOV       E,A       ;млаший байт полуразности   W2-5W1+K1-K2

INX       H

MOV       A,D

SBB       M

MOV       D,A       ;млаший байт полуразности   W2-5W1+K1-K2

LXI       H,FUN1    ;сохраняем значение g( )

MOV       M,E

INX       H

MOV       M,D

JC        FORM_Y3   ;    Если  Q( )–G < 0

FORM_Y2:

LXI       H,DATA_Y  ;ЗАПИСЬ ЗНАЧ. Y2

MOV       A,M

ANA       1001 1111B

ORI       0010 0000B

MOV       M,A

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

MVI       A, 30H