📄 温控.txt
字号:
主程序:
;初始调试程序
org 00h
start:mov R0,#20H ;数据缓冲区首地址
clr p2.7 ;启动ad
movx @R0,a
wait:jnb p3.2,adc ;完成就去adc
jmp wait
adc:movx a,@r0 ;读数
mov @R0,a
mov p1,a ;显示值到p1灯
mov R3,#10
D1: mov R4,#248 ;延时5毫秒
DJNZ R4,$
DJNZ R3,D1
JMP start
end
;模数变换及多功能温度开关控制程序
T30 EQU 4BH ;30度时转换数据为4BH
T40 EQU 64H ;40度时转换数据为64H
T50 EQU 7DH ;50度时转换数据为7DH
T60 EQU 96H ;60度时转换数据为96H
org 0003h ;INT0中断地址入口
JMP ADC
org 0100h ;初始化程序入口
JMP start
mov 30h,#00h ;存入旧温度寄存器的初值
start:mov r0,#20h ;数据缓冲区首地址
mov DPTR,#7ff8h ;指针指向0通道
movx @DPTR,A ;启动AD
setb IT0 ;边沿触发
setb EX0 ;允许外部中断0
setb EA ;发放总中断
ajmp $
ADC:movx A,@DPTR ;读数据,撤销中断
mov @r0,a ;存数据
mov 31h,@r0
jnz L1 ;A不为0就去L1
ORL P2,#0FFH ;A为0,P2灯全灭
MOV R4,#0
MOV R5,#0
JMP LED ;调用LED显示灯显示
L1:MOV A,31H
CJNE A,30H,L2 ;现在的温度与旧温度值是否相等?
JMP NEXT
L2:MOV A,31H
SUBB A,#T30 ;A减去T30的温度
JNC L3 ;C=0,现在温度较大,跳至L3
ORL P2,#0FFH ;比30度小则P2灯全灭
JMP NEXT
L3:ANL P2,#0FEH ;比30度大,P2.0灯亮
MOV A,31H
SUBB A,#T40
JNC L4
ORL P2,#0FEH
JMP NEXT
L4:ANL P2,#0FCH ;比40度大,P2.0,P2.1亮
MOV A,31H
SUBB A,#T50
JNC L5
ORL P2,#0FCH
JMP NEXT
L5:ANL P2,#0F8H ;比50度大,P2.0,P2.1,P2.2亮
MOV A,31H
SUBB A,#T60
JNC L6
ORL P2,#0F8H
JMP NEXT
L6:ANL P2,#0F0H ;比60度大,P2.0,P2.1,P2.2,P2.3亮
NEXT:MOV 30H,31H ;将现在的温度存入旧温度寄存器
DISP:MOV A,31H
CALL D1 ;调用十进制转换子程序
DISP1:CALL LED
MOV R1,#0FFH ;显示延时
DJNZ R1,$
JMP start
D1:CLR C
MOV R5,#00H ;十进制转换的低位寄存器
MOV R4,#00H ;十进制转换的高位寄存器
MOV R3,#08H ;作为十进制的调整,调整的次数
CHD:RLC A
MOV R2,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
MOV R4,A
MOV A,R2
DJNZ R3,CHD
MOV R7,#02
D2:MOV A,R5
ADD A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,D2 ;乘4是否完成?
RET
LED:
MOV A,R5
ANL A,#0FH ;取低4位,即A1的值
ORL A,#80H ;令A1使能(P1.7=1)
MOV P1,A ;显示A1
CALL DELAY
MOV A,R5
ANL A,#0F0H ;取高4位,即A2的值
SWAP A ;高4位与低4位交换
ORL A,#40H ;令A2使能(P1.6=1)
MOV P1,A ;显示A2
CALL DELAY
MOV A,R4
ANL A,#0FH ;取低4位,即A3的值
ORL A,#20H ;令A3使能(P1.5=1)
MOV P1,A ;显示A3
CALL DELAY
MOV A,R4
ANL A,#0F0H ;取高4位,即A4的值
SWAP A ;高4位与低4位交换
ORL A,#10H ;令A4使能 (P1.4=0)
MOV P1,A ;显示A4
CALL DELAY
CLR A
RET
DELAY: MOV R6,#10 ;5毫秒延时
T2: MOV R7,#248
DJNZ R7,$
DJNZ R6,T2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -