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