Разработка микропроцессорной системы для управления объектом. Составление карты распределения адресного пространства, страница 21

rr            A                                         ; сдвиг N7 на разряд вправо (бит 0 идет на место 7)

anl         A,#00011111b                   ; обнуление трех старших разрядов

;т.к. max(N7)=FFh=11111111b=2.56, то

;A0 = 0.17 = 0.17 * (2.55 / 100) = 0.4352 -> 0.44, поэтому

;A0 = 0.44 = 2Ch = 00101100b

add        A, 2Ch                                ; сложение с константой A0 = 0.17

mov       Q4, A                                  ; сохранение значения функции

mov       DPTR, #8000h                   ; задаем адрес ЦАП

movx     @DPTR, Q4                       ; выводим значение в ЦАП (формируется управляющий сигнал Y4)

END_OF_PROCESS_3:

ret                                                                     ; конец подпрограммы   

;--------------------------------------------------------------------------------------------------------------------; Обработка прерывания от таймера Т0

; Вызов - при аппаратной установке бита TF0 по переполнению таймера Т0            

END_OF_Y:                                                  

Clr         P1.0                                     ; устанавливаем Y1 в ноль (конец управляющего сигнала)

Clr         P1.1                                     ; устанавливаем Y2 в ноль (конец управляющего сигнала)

Clr         P1.2                                     ; устанавливаем Y3 в ноль (конец управляющего сигнала)

Clr         TR0                                     ; останавливаем таймер Т0

RETI 

;--------------------------------------------------------------------------------------------------------------------;Обработчик прерываний от клавиатуры INT3

;считывает код клавиши из регистра клавиатуры

KBD_INT:

mov       DPTR,#800Ch

mox       A,@DPTR

cjne       A,# OUTPUT_KEY,NEXT1

cpl         P3.1

call        Q4_out

jmp        END_KBD_INT

NEXT1:

cjne       A,# BREAK_KEY,NEXT2

setb        PCON.1

jmp        END_KBD_INT

NEXT2:

cjne       A,# INSTALL_KEY,NEXT3

Clr         TR1                                                                   ; останавливаем счет

Clr         PCON.2                                                            ; обнуляем бит окончания считывания установки

jmp        END_KBD_INT

NEXT3:

jb           ACC.4,END_KBD_INT                                 ; если 4-ый разряд 1 - нецифровая клавиша

jnb         IS_INSTALLMODE, END_KBD_INT        ; режим ввода кода УСТАВКИ К ?

mov       R0,#K                 

jb           NO_INTETR,HITETR                                   ; если NO_INTETR=0 - вводим мл. тетрада

xchd      A,@R0                                                             ; обмен младшими тетрадями

cpl         NO_INTETR                                                   ; взведение NO_INTETR=1 - следующей пойдёт ст. тетради

jmp        END_KBD_INT

HITETR:

mov       B,A                                                                   ;обмен старшими тетрадями

mov       A,R0

swap      A

mov       R0,A

mov       A,B

xchd      A,@R0

mov       A,R0

swap      A

mov       R0,A

cpl         IS_INSTALLMODE                                       ; ввод кода установки завершён

cpl         NO_INTETR      

END_KBD_INT:

RETI     

;--------------------------------------------------------------------------------------------------------------------; Вывод на индикаторы значения Q4  в формате сотых долей.

; Обработка прерывания от таймера Т2.

; Вызов - при аппаратной установке бита TF2 по преполнению таймера Т2,             

; которое происходит c частотой 100 Гц

Q4_OUT:                                                        

; Значение Q4 выводим в диапазоне от 00 до 99, поэтому необходим перевод исходного

; значения  из диапазона 00h - FFh. Для этого необходимо поделить исходное значение на

; 2.5, что равносильно делению на 5, а затем умножению на 2. Далее полученное значение