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