本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
题目要求设定温度为26度,当检测到的温度小于25度时,开启加热回路,当检测到的温度大于27度,则断开加热回路,两个按键输入分别控制设定温度的增加和减少。
ORG 0000H
SJMP START
ORG 0003H
SJMP INTT0
ORG 0013H
SJMP INTT1
ORG 000BH
LJMP ADC0809
START:
MOV R7,#26H ; 设定初始温度为26
MOV P2,#0FFH ;P2口设置为1
MOV TMOD,#02H
MOV TH0,#00H
MOV TL0,#00H
SETB IT0
SETB IT1
SETB EA
SETB EX0
SETB EX1
SETB ET0
SETB TR0
LJMP DISPLAY1;显示设定温度
LJMP $ ;等待中断信号
ORG 0030H
INTT0: ;外部中断0时,设定温度加1
INC R7
LJMP DISPLAY1
RETI
ORG 0040H
INTT1: ;外部中断1时,设定温度减1
DEC R7
LJMP DISPLAY1
RETI
ORG 0050H ;定时器0溢出时,跳转ADC0809
ADC0809: MOV DPTR,#7FF8H
MOVX @DPTR,A ;启动转换
LJMP DELAY ;等待AD转换完成
MOVX A,@DPTR ;读取AD转换结果
MOV 70H,A
LJMP DISPLAY ;显示实际温度
DEC R7
CLR C
SUBB A,R7 ;实际温度与25度比较
JC GOUP ; 实际温度小于设定温度跳转
SJMP UPEND
GOUP:
SETB P3.4 ;开启加热电路
LJMP START
UPEND: MOV A,70H
INC R7
INC R7
CLR C
SUBB A,R7 ;实际温度与27度比较
JNC GODOWN
LJMP START
GODOWN: CLR P3.4 ;关闭加热电路
LJMP START
DISPLAY1:
MOV DPTR, #LEDTAB ;LED显示码表首
MOV A, #0FH
ANL A,R7 ;取低位值
MOVC A,@A+DPTR
CLR P2.1 ;开通LED位选端
MOV P0, A
MOV A,#0F0H ;取高位值
ANL A,R7
SWAP A
MOVC A,@A+DPTR
CLR P2.0 ;开通led位选端
MOV P0, A
RET
DISPLAY: MOV DPTR, #LEDTAB ;LED显示码表首
MOV B, #0FH ;取低位值
ANL A, B
MOVC A, @A+DPTR
MOV P0, A
CLR P2.3 ;开通位选
MOV B, #0F0H ;取高位值
ANL A, B
SWAP A
MOVC A, @A+DPTR
MOV P0, A
CLR P2.2 ;开通位选
RET
LEDTAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DELAY: MOV R6,#6EH ;延时程序
W1: DJNZ R6,W1
RET
END |