MOVX @DPTR,A ;вывод младшего бита
MOV A,#0FFH;
MOVX @DPTR,A ;вывод старшего бита
JMP END_PROC2
;выдача сигнала Y3
Y3_OUT:
MOV DPTR,#ADDR_CT2 ;запись в DPTR адреса канала таймера 2
MOV A,#88H; ;T3=1388h*24мкс=120мс
MOVX @DPTR,A ;вывод младшего бита
MOV A,#13H;
MOVX @DPTR,A ;вывод старшего бита
MOV DPTR,#ADDR_CT1 ;запись в DPTR адреса канала таймера 1
MOV A,#0FFH ;запрещаем вывод Y2
MOVX @DPTR,A ;вывод младшего бита
MOV A,#0FFH;
MOVX @DPTR,A ;вывод старшего бита
END_PROC2:
RET
;Обработчик сигнала X7:
;Принимаем X7=>N7 с АЦП
;Вычисляем Q4=0.125*N7+0.17 => Вывод на ЦАП => Y4
PROC_3:
CLR P1.4
MOV DPTR,#ADDR_ADC0 ;адрес канала для следующего преобразования в ADC
MOVX A,@DPTR
SETB P1.4
RR A ;умножение на 0.125 (сдвиг вправо на 3 разряда)
RR A ;фактически деление на 8
RR A
ANL A,00011111b ;обнуление старших разрядов
ADD A,#A0 ;суммирование с константой A0
MOV Q4,A ;сохранение полученного значения в переменную
MOV DPTR,#ADDR_DAC
MOVX @DPTR,A ;вывод значения в ЦАП
RET
;Обработчик прерывания INT1 от аварийного датчика
;производится вывод значений X1-X4 и Q4 на индиакторы и включает звуковой сигнал
ERROR:
LOOP_ERROR:
CALL INDOUT
SETB P1.7 ;получение меандра скважностью 2
MOV R0,#208 ;с периодом 2000мс
DJNZ R0,$
CLR P1.7
MOV R0,#208
DJNZ R0,$
JMP LOOP_ERROR
RETI
;Обработчик прерывания INT2 от источника питания
;происходит запись содержимого всей внутренней ОЗУ памяти во внешнее энергонезависимое ОЗУ
NRG:
PUSH DPL
PUSH DPH
PUSH PSW
USING 1
MOV DPTR,#0
MOVX @DPTR,A ;сохраняем значение A во внешнем ОЗУ
POP ACC
INC DPL
MOVX @DPTR,A ;сохраняем значение PSW во внешнем ОЗУ
POP ACC
INC DPL
MOVX @DPTR,A ;сохраняем значение DPH во внешнем ОЗУ
POP ACC
INC DPL
MOVX @DPTR,A ;сохраняем значение DPL во внешнем ОЗУ
INC DPL
MOVX @DPTR,A;
MOV R0,#128
MEM_SAFE:
INC DPL;
MOV A,@R0 ;получение значения текущей ячейки внутренней памяти ОЗУ
MOVX @DPTR,A; ;сохранение ее во внешнюю память ОЗУ
DJNZ R0,MEM_SAFE
SETB SCON.1 ;переход в режим микропотребления
RETI
;Обработчик прерываний от клавиатуры INT3
;считывает код клавиши из регистра клавиатуры
KBRD:
PUSH PSW
PUSH DPL
PUSH DPH
PUSH ACC
PUSH B
USING 1
CLR TF1
MOV TH1,#0FFH
MOV TL1,#0FFH
MOV DPTR,#ADDR_RGKEYB
MOVX A,@DPTR
CJNE A,#OUTPUT_KEY,NEXT1
CPL P1.7
CALL INDOUT
JMP END_KBRD
NEXT1:
CJNE A,#INSTALL_KEY,NEXT2
SETB IS_INSTALLMODE
JMP END_KBRD
NEXT2:
CJNE A,#BREAK_KEY,NEXT3
SETB SCON.1
JMP END_KBRD
NEXT3:
JB ACC.4,END_KBRD ;если 4-ый разряд 1 - нецифровая клавиша
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.