软件程序:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PIT0
ORG 001BH
LJMP PIT1
ORG 0100H
MAIN: MOV SP,#FH ;设堆栈指针
MOV SCON,#00H ;设置串行口为方式0
MOV TMOD,#11H ;T0和T1初始化为方式1
MOV TH0, #3CH ;置时间常数,T0和T1定时100ms MOV TL0, #OB0H
MOV TH1, #3CH
MOV TL1, #0B0H
MOV 50H, #96H ;T0中断次数计数单元
MOV 51H,#14H ;T1中断次数计数单元
MOV R1, #00H
MOV R2, #00H
MOV R0, #40H ;显示缓冲单元起始地址
DISP0:MOV @R0, #00H ;显示缓冲单元清零
INC R0
CJNE R0, #4CH,DISP0
MOV 44H,#01H ;设置通道号的显示缓冲单元
MOV 48H,#02H
MOV R7,#40H ;置当前通道显示缓冲单元首址
MOV 53H,#40H
SETB ETO ;开中断
SETB ET1
SETB EA
SETB TR0 ;启动定时器
SETB TR1
LP: MOV R7, 53H ;调显示子程序
ACALL DISP
AJMP JP
定时器TO中断服务程序
PIT0: MOV TH0, #3CH ;重置时间常数
MOV TL0, #OBOH
DJNZ 50H,#96H
PUSH ACC
PUSH 03H
ACALL WDXJ ;调温度巡检子程序
POP 03H
POP ACC
DH0: RET1
定时器T1中断服务程序
PIT1: MOV TH1,#3CH ;重置时间常数
MOV TL0, #OBOH
DJNZ 51H,DH1 ;计数20次即定时2S
MOV 51H,#14H
INC R2
CJNE R2,#03H,CNL0 ;根据R2中的内容确定显示缓冲区首址 MOV R2,#00H
CNL0: CJNE R2,#00H,CNL1
MOV 53H,#40H
SJMP DH1
CNL1: CJNE R2,#01H,CNL2
MOV 53H,#40H
SJMP DH1
CNL2: MOV 53H,#48H
DH1: RETI
显示子程序
DISP: CLR P3.7 ;输出锁存
MOV R3,#01H ;置显示字位码
MOV DPTR,#TAB
DISP1:MOV A,R3
MOV SBUF,A ;字位码送串行口
JNB T1,$ ;等待串行转送结束
CLR T1 ;清串行中断标志
MOV A,R7
MOV R0,A
MOV A,@RO ;取代显示的数据
MOVC A,@R0 ;查表求字段码
MOV SBUF, A ;字段码送串行口,
JNB T1,$ ;等待串行中断标志
SETB P3.7 ;允许输出显示
ACALL DEL ;调延时子程序
MOV A,R3
JB ACC.3,DISP2 ;4位显示完否
RL A
MOV R3,A
INC R7
CLR P3.7 ;输出锁存
AJNP DISP1
DISP2:RET
TAB : DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DEL: PUSH 07H ;延时子程序
MOV R6,#32H
AA: MOV R7,#19H
DJNZ R7,$
DJNZ R6,AA
POP 06H
POP 07H
RET
温度巡检子程序
WDXJ: CLR P2.0
CLR P2.1
SERB P2.2
MOV A,R1 ;读入当前待检测的通道号
RL A
RL A
ADD A,#40H ;求显示缓冲区首址
MOV R0,A
MOV A,R1
MOV @R0,A
INC R0
MOV R5,#00H
MOV R6,#04H
STAT: CJNE R1,#00H,AD01 ;根据R1的内容选择通道
CLR P2.5
CLR P2.6
CLR P2.7
SJMP ZH
AD01: CJNE R1,#01H,AD02
SETB P2.5
CLR P2.6
CLR P2.7
SJMP ZH
AD02: CLR P2.5
SETB P2.6
CLR P2.7
ZH: SETB P2.0
NOP
N0P
NOP
CLP P2.0
JNB P2.2,$ ;检测EOC信号,等待转换完毕 SETB P2.1
MOV P1,#0FFH
MOV A,P1 ;读入转换结果
RRC A ;转换结果除以4
ADD A,R5 ;累加
MOV R5,A
DJNZ R6,ZH ;4次到?
MOV A,R5 ;保存平均值
MOV B,#03H ;标度变换
DIV AB
MOV R3,B
MOV B,#0AH ;将标度变换结果的整数部分 DIV AB ;进行BCD码转换
MOV @R0,A 送显示缓冲单元(十,个位)
INC R0
MOV @R0,B
INC R0
CJNE R3,#00H,L1 ;标度变换结果的余数部分 MOV @RO,#00H ;小数处理
SJMP L3
L1: CJNE R3,#01H,L2。