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

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