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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.