MOV A,#FFH ;
SUBB A,COUNT ;
JZ M ;переход,если ноль
CJNE PROM,#01H,EX ;проверка истекания
CJNE COUNT,#91H,EX ;20 секунд
CALL OPROS ;п/п опроса датчиков
CALL INTERF ;п/п пересылки данных во ВУ
MOV COUNT,#00H ;обнуление счетчика времени
MOV R2,#01H ;разрешение индикации
EX: RETI ;
M: INC PROM ;
JMP EX ;
;п/п задержки на 3 сек
ORG 01A0H
DEL3: MOV R6,#03H ;
MOV R5,#50H ;
M1: CALL DEL20 ;
DJNZ R5,M1 ;
DJNZ R6,DEL3 ;
RET ;
;п/п инициализация PKDC
ORG 01B0H
INIT: CLR A ;код УС0
CLR P2.1 ;выбор PKDC
SETB P2.2 ;активизация РУС PKDC
MOV Р0,A ;вывод УС0 в РУС
MOV A,#34H ;код УС1
MOV Р0,A ;вывод УС1 в РУС
SETB P2.1 ;отключение РУС
RET ;
;п/п индикации
;входные параметры:IND1¸IND7 сс-код символов,
;выводимых надисплей
ORG 01C0H
DISPL: CLR P2.1 ;выбор PKDC
SETB P2.2 ;активизация РУС
MOV A,#1001 0000 B;код УС4
MOV P0,A ;
;запись данных в память дисплея
CLR P1.2 ;
MET: MOV A,IND1 ;Aß IND1
MOV P0,A ;
INC A ;
CJNE A,#57H ;переход если индикатор не последний
RET ;
;п/п заполнения ячеек IND4,IND5,IND6 информацией, выводимой
;на дисплей
;входные параметры:R6,R7,B-сотни, десятки, единицы, т.е.
;температура, выводимая на дисплей в двоично-десятичном коде
;выходные параметры: IND4,IND5,IND6- сотни, десятки, единицы
ORG 01D0H
OBMEN: MOV A,R6 ;(A)ßсотни
MOVC A,@A+DPTR ;
MOV IND5,A ;IND5ßсс-код числа сотен
MOV A,R7 ;(R7)ßдесятки
MOVC A,@A+DPTR ;
MOV IND6,A ;IND6ßсс-код числа десятков
MOV A,B ;(А)ßединицы
MOVC A,@A+DPTR ;
MOV IND7,A ;IND7ßсс-код числа единиц
RET ;
;п/п перекодировки двоичного числа в двоично-десятичный
;входные параметры: (А)-двоичный код
;выходные параметры: (R6),(R7),(B)- сотни, десятки, единицы
ORG 01E0H
BIN_BCD:MOV B,#64H ;
DIV AB ;делим на 100
MOV R6,A ;(R6)ßсотни
MOV A,#0AH ;
XCH A,B ;
DIV AB ;делим на 10
RET ;
;п/п передачи пакета данных внешней ЭВМ
;входные параметры:R1-начальный адрес записи
;последнего пакета данных
ORG 01F0H
INTERF: MOV R6,#11H ;счетчик переданных байтов
CLR ET1 ;запрет прерываний от т/с1
SETB SMOD ;удвоенная скорость передачи
MOV SCON,#42H ;установка режима УАПП
MOV TMOD,#20H ;т/с1 в режиме2
MOV TH0,#250 ;
SETB TR1 ;запуск т/с1
CLR P1.2 ;DTR=0,мы готовы к передаче
JNB P1.3,MET1 ;переход на MET1 если DSR=0
SETB P1.2 ;данные не приняли
EXIT: CLR TR1 ;останов т/с1
EXIT: RET ;возврат из п/п
MET1: MOV A,R1 ;
SUBB A,#11H ;
MOV A,@R1 ;(А)ßпересылаемый байт
MET2: MOV SBUF,A ;
SPOUT: JNB TI,SPOUT ;ожидание передачи байта
CLR TI ;гашение флага пре-ния передатчика
JNB P1.3,MET2 ;если DSR=0,то повтор передачи
SETB P1.2 ;иначе данные передали
INC R1 ;адрес следующего байта
DJNZ R2,MET1 ;если байт не последний, то МЕТ1
JMP EXIT ;передача завершена, выход
;таблица перекодировки в семисегментный код
ORG 0050H
TAB_C: DB 3FH---------0
DB 06H---------1
DB 5BH--------2
DB 4FH---------3
DB 66H---------4
DB 6DH--------5
DB 7DH--------6
DB 07H---------7
DB 7FH---------8
DB 6FH---------9
DB 39H---------C
DB 73H---------P
DB 79H---------E
DB 60H---------знак минус
;п/п опросадатчиков расхода электроэнергии
ORG 0230H
OPROS: CJNE R1,3FH,M2 ;если не все ячейки, отведенные для
; хранения заполнены, то переход
MOV R1,#00H ;обнуление счетчика ячеек хранения
;данных
M2: MOV R3,#0000 1101 B;код подключения первого датчика
M1: MOV A,R3 ;
ANL P1,A ;подключения i-го датчика
MOV A,P0 ;сбор информации с i-го датчика
SETB P1.2 ;отключение i-го датчика
MOV @R1,A ;запоминание информации в ячейке ПД
INC R1 ;адрес след. ячейки для запоминания
SWAP A ;код
INCA ;подключения
SWAP A ;следующего
CLR A.2 ;датчика
MOV R3,A ;
CJNE R3,00H,M1 ;если датчик не последний, то M1
RET ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.