; делим на 10 и выводим результат на первый индикатор, а остаток на второй.
; Для отображения Q4 используем таблицу соответствия двоичных кодов на входах регистра
; десятичным цифрам.
Mov A, Q4_out ; заносим в аккумулятор Q4, считанное при последнем нажатии клавиши "Вывод"
Mov B, #5
Div AB
Mov B, #2
Mul AB
Mov B, #10
Div AB ; получили в А старшее число, а в В - младшее
Mov DPTR, #TABLE
Movc A, @A+DPTR ; сопоставляем числу отображаемое значение
Mov DPTR, #8008h ; задаем адрес регистра индикации
Anl A, 01111111b ; для доступа к старшему индикатору сбрасываем 7-й бит
; (по умолчанию в соответствии с таблицей вывод на младший индикатор)
movx @DPTR, A ; выводим значение
mov A, B
mov DPTR, #TABLE
movc A, @A+DPTR ; сопоставляем числу отображаемое значение
mov DPTR, #8008h ; задаем адрес регистра индикации
movx @DPTR, A ; выводим значение
; (по умолчанию в соответствии с таблицей вывод осуществляется
; на младший индикатор, т.е. бит 7 установлен)
RETI
;--------------------------------------------------------------------------------------------------------------------; Обработка прерывания от аварийного датчика
INT1:
Mov IE, #10100000 ; маскирование всех прерываний, кроме прерываний от
; таймера Т2
mov Q4_OUT, Q4 ; выводим текущее значение Q4
set P3.1 ; устанавливаем бит управления индикацией для случая,
; если он сброшен, чтобы при следующем сбросе по спаду
; сигнала считать новые значения X1..X4
clr P3.1 ; разрешаем индикацию
setb TR0 ; запускаем таймер 0 для отсчета времени вывода
ALARM:
; вывод сигнала аварийной звуковой сигнализации с частотой 2 Гц
; f = 2 Гц, Т = 0,5 с
; 0,5 с = 2.4 мкс * 208333 - период аварийной сигнализации
; 208333=52083*4 - число инкрементирований таймера до
; переполнения для формирования периода 0,5 с
; 52083 = CB73h, FFFFh - CB73h = 348Ch
; загружаем регистры таймера
mov TH0, #034h
mov TL0, #08Ch
cpl P1.0 ; включение / выключение аварийного сигнала
cjne TF0, #4, $ ; ждем переполнения таймера
jmp ALARM ; переход на начало цикла аварийной сигнализации
; выход из подпрограммы обработки аварийного прерывания - только по сбросу
;--------------------------------------------------------------------------------------------------------------------; Обработка прерывания по сигналу отказа источника питания
INT2:
Push ACC ; сохраняем аккумулятор в стек
Push R0 ; сохраняем регистр R0 в стек
Push R1 ; сохраняем регистр R1 в стек
; сохраняем регистры специальных функций
mov R0, 0F0h ; адрес регистра с самым старшим адресом
mov R1, 0F0h ; адрес во внешнем ОЗУ
SAVE_SFR:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.