RRC
RRC
ANI 0FH
MOV C, A
CALL CROSSCODE ;Перекодировка
OUT SELOPORT3 ;Вывод на HG2
INX H
MOV A,M
ANI 0FH
MOV C, A
CALL CROSSCODE ;Перекодировка
OUT SELOPORT4 ;Вывод на HG3
MOV A,M
RRC
RRC
RRC
RRC
ANI 0FH
MOV C, A
CALL CROSSCODE ; Перекодировка
OUT SELOPORT5 ; Вывод на HG4
CHEK:
IN IPORT
ANI 80H ; Выделить разряд D7
JNZ VOZV ; Идти на начало, если не нажата
CALL DELAY ; Подпрограмма задержки
; Подготовка к возврату из прерывания
POP H ; Восстановление регистров
POP D
POP B
POP PSW
EI ; Разрешить прерывания
IRET
ISR2:
PUSH PSW
PUSH H
LXI Н, DATA_N2
MOV A, M
OUT ST2_2
INX H
MOV A, M
OUT ST2_2 ; Запуск СТ2_2
POP H
POP PSW
EI
RET
ISR0: ;ВКЛЮЧЕНИЕ АВАРИЙНОЙ СИГНАЛИЗАЦИИ
LDA STATUS
DI
ORI 1000 0000B
OUT PC
STA STATUS
MVI A,1000 0000B
OUT SELOPORT1
HLT
IRET
;----ПРИНЯТИЕ ДАННЫХ С АЦП ПОДПРОГРАММА
ADCONV:
OUT RUS55
IN PC
ORI 1000 0000B ;Вывод в порт РС числа 00001000
OUT PC
WAIT:IN PA
ANI 0010 0000B ;Выделить разряд D5
JNZ WAIT ;Ожидание готовности данных АЦП
IN PB
MOV M, A ;Запомнить младший байт кода АЦП
INX H
IN PA
RLC
RLC
ANI 0000 0011B ;Выделить D1, D0
MOV M, A ;Запомнить старший байт кода АЦП
RET
; Подпрограмма умножения целых двоичных чисел без знака
; формата 16*8=24.
; Входные параметры: (А) - множитель, (D,Е) - множимое.
; Выходные параметры: (А,Н,L) - произведение.
M16_8: LXI H, 0 ; Обнуление суммы частичных
; произведений (ЧП)
LXI B, 8 ; (В)=0, (С)=8 - счетчик циклов
; Сдвиг текущей суммы ЧП и множителя влево
CYCLE: DAD H
ADC A
JNC PER
; Сложение множимого с текущей суммой ЧП
DAD D
ADC B
; Проверка конца цикла
PER: DCR C
JNZ CYCLE ; Зацикливание
RET
; IDENTIF – подпрограмма идентификации замкнутого SA1-SA4
; Выходной параметр: регистр С – позиционный код переключателя
IDENTIF:
IN IPORT
ANI 0FH
MOV B, A
CPI MASK1
JZ EXIT1 ; Если D0=0
MOV A, B
CPI MASK2
JZ EXIT2 ; Если D1=0
MOV A, B
CPI MASK3
JZ EXIT3 ; Если D2=0
MVI C, 03H ; Код переключателя SA4
RET
EXIT1:
MVI C, 00H ; Код переключателя SA1
RET
EXIT2:
MVI C, 01H ; Код переключателя SA2
RET
EXIT3:
MVI C, 02H ; Код переключателя SA3
RET
; CROSSCODE – подпрограмма перекодировки
; Входной параметр: регистр С – позиционный код символа
; Выходной параметр: регистр A – семисегментный код символа
CROSSCODE:
MVI B, 0
LXI H, TABLE ; В паре HL – адрес TABLE
DAD B ; (HL) (HL)+(BC)
MOV A, M
RET
; Подпрограмма деления целых двоичных чисел без знака
; формата 16:16=16,16 с дробным частным.
; Делимое меньше делителя.
; Входные параметры: (H,L) - делимое, (В,С) - делитель.
; Выходные параметры: (D,E) - частное,
;****************************************************************
; Дополнение делителя (В,С)
D16_16A:
MOV A, B
CMA
MOV B, A
MOV A, C
CMA
MOV C, A
INX B
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.