水温控制系统的程序问题

[复制链接]
查看11 | 回复3 | 2021-1-27 06:35:03 | 显示全部楼层 |阅读模式
程序如下(AT89C52单片机DS18B20传感器水温加热单元接P1.1按键单元S3接P2.3S2接P2.2S5接P2.1温度采集单元接P1.0)ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
ORG0030H
MAIN:MOVSP,#70H;置初值
CLRP1.1
MOVR0,#40H
SETBPSW.4
SETBPSW.3
SETBIT0
SETBEA
SETBEX0
MOVTMOD,#20H;波特率9600
MOVTH1,#0FDH
MOVTL1,#0FDH
SETBTR1
MOVSCON,#50H
SETBTI
CLR30H
CLR01H
SETBP2.3
CLRP2.2
CLRP2.1
MOVDPTR,#0BFFFH
MOVA,#00H
MOV2EH,#0
MOV2DH,#0
MOV2CH,#0
MOV2BH,#0
MOV2AH,#0
MOV29H,#0
MOV62H,#0
LOOP:MOVDPTR,#0BFFFH
MOVX@DPTR,A;启动A/D转换
CLR00H
WAIT:LCALLXUAN
CHAXUN:JNBP1.3,LOOP1;调整
JNBP1.4,LOOP2
JNB00H,GG;判断是否再启动
LJMPLOOP
GG:LJMPWAIT
;===========上限温度调整===========
LOOP1:CLREX0
LCALLDELAY1
JNBP1.3,$
MOV62H,2EH
MOV61H,2DH
MOV60H,2CH
JBP1.2,M2
MOVA,2EH
ADDA,#01
DAA
MOV2EH,A
CJNEA,#10H,M1
MOV2EH,#00
M1:JNBP1.2,$
M2:JBP2.4,M4
MOVA,2DH
ADDA,#01H
DAA
MOV2DH,A
CJNEA,#10H,M3
MOV2DH,#00
M3:JNBP2.4,$
M4:JBP2.5,M5
MOVA,2CH
ADDA,#01
DAA
MOV2CH,A
CJNEA,#10H,M5
MOV2CH,#00
M5:JNBP2.5,$
SETB30H;是否显示第一位的标志位
MOV63H,#11H;显示“上”
MOV62H,2EH
MOV61H,2DH
MOV60H,2CH
LCALLDELAY
JNBP1.3,TUI;再次中断时,退出
LJMPLOOP1
;==========下限温度调整===========
LOOP2:CLREX0
JNBP1.3,$
MOV62H,2BH
MOV61H,2AH
MOV60H,29H
JBP1.2,L2
MOVA,2BH
ADDA,#01
DAA
MOV2BH,A
CJNEA,#10H,L1
MOV2BH,#00
L1:JNBP1.2,$
L2:JBP2.4,L4
MOVA,2AH
ADDA,#01H
DAA
MOV2AH,A
CJNEA,#10H,L3
MOV2AH,#00
L3:JNBP2.4,$
L4:JBP2.5,L5
MOVA,29H
ADDA,#01
DAA
MOV29H,A
CJNEA,#10H,L5
MOV29H,#00
L5:JNBP2.5,$
SETB30H;是否显示第一位的标示位
MOV63H,#0FH;显示“下”
MOV62H,2BH
MOV61H,2AH
MOV60H,29H
LCALLDELAY
JNBP1.4,TUI;再次中断时,退出
LJMPLOOP2
TUI:MOVA,2BH
CLRC
CJNEA,2EH,AA;比较上限是否低于下限
MOVA,2AH
CJNEA,2DH,AA

MOVA,29H
CJNEA,2CH,AA
LJMPXXX;正常
AA:JNCERRO;上限低于下限,跳转
XXX:SETBEX0
MOVA,@R0
LCALLXUAN
LJMPWAIT
ERRO:MOV63H,#0EH;显示“ERRO“
MOV62H,#15H
MOV61H,#15H
MOV60H,#0H
SETB30H
SETB01H
EEEE:LCALLDELAY
JNBP1.3,XX1;是否重新调整
JNBP1.4,XX2
LJMPEEEE
XX1:LJMPLOOP1
XX2:LJMPLOOP2
;==========显示数据转换=========
Xian:MOVA,@R0
MOVB,#100
MULAB
MOVR3,A
MOVA,B
MOVB,#10
DIVAB
MOVR1,#62H
MOV@R1,A
DECR1
MOV@R1,B
MOVA,R3
MOVB,#10
MULAB
DECR1
MOV@R1,B
CLR30H
ACALLDELAY
MOVA,2EH
CJNEA,62H,E1
MOVA,2DH
CJNEA,61H,E1
MOVA,2CH
CJNEA,60H,E1
LJMPE2
E1:JCSHANG_BAO
LJMPE2
;======超上限温度报警======
SHANG_BAO:
SETBP2.3
SETBP2.2
CLRP2.1
LJMPX2
E2:CLRP2.1
CLRP2.2
CLRP2.3
X1:MOVA,2BH
CJNEA,62H,E3
MOVA,2AH
CJNEA,61H,E3
MOVA,29H
CJNEA,60H,E3
LJMPE4
E3:JNCXIA_BAO
LJMPE4
;======低于下限温度报警======
XIA_BAO:SETBP2.3
SETBP2.1
CLRP2.2
LJMPX2
E4:CLRP2.1
CLRP2.2
CLRP2.3
X2:CLR30H
ACALLDELAY
;========串口通信=========
MOVR3,#30H;转ASCII码
MOVA,62H
ADDA,R3
DAA
MLP3:JBCTI,MLP2;当TI为1时清0
SJMPMLP3
MLP2:MOVSBUF,A
MOVA,61H
ADDA,R3
DAA
MLP5:JBCTI,MLP4
SJMPMLP5
MLP4:MOVSBUF,A
MOVA,#46;小数点
MLP8:JBCTI,MLP9
SJMPMLP8
MLP9:MOVSBUF,A
MOVA,60H
ADDA,R3
DAA
MLP7:JBCTI,MLP6
SJMPMLP7
MLP6:MOVSBUF,A
MOVA,#32
MLP10:JBCTI,MLP11
SJMPMLP10
MLP11:MOVSBUF,A
RET
;==========延时加显示=========
DELAY:MOVR3,#0A0H
D00:ACALLDISPLAY
DJNZR3,D00
RET
DISPLAY:JNB30H,DD
MOV30H,#40
MOVDPTR,#TAB0
MOVA,63H
MOVCA,@A+DPTR
MOVDPTR,#0F8FFH
D0:MOVX@DPTR,A
DJNZ30H,D0;千位
DD:MOV30H,#40
MOVDPTR,#TAB0
MOVA,62H
MOVCA,@A+DPTR
MOVDPTR,#0F9FFH
D1:MOVX@DPTR,A
DJNZ30H,D1;百位
MOV30H,#40
MOVDPTR,#TAB0
MOVA,61H
MOVCA,@A+DPTR
JB01H,TT
ADDA,#80H

TT:MOVDPTR,#0FAFFH
D2:MOVX@DPTR,A
DJNZ30H,D2;十位
MOV30H,#40
MOVDPTR,#TAB0
MOVA,60H
MOVCA,@A+DPTR
MOVDPTR,#0FBFFH
D3:MOVX@DPTR,A
DJNZ30H,D3;个位
RET
TAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
;01234567
7FH,6FH,77H,7CH,39H,5EH,79H,71H
;89ABCDEF
DB76H,78H,38H,6EH,00H,77H,
;HKLY无R
DELAY12:MOVR4,00H
MOVR5,00H
X3:DJNZR4,$
DJNZR5,X3
RET
;-------中断0服务程序-------
INT0:PUSHA
PUSHPSW
MOVDPTR,#0BFFFH
MOVXA,@DPTR;读A/D转换结果
MOV2FH,#0FFH
CLRCY;程序调整高低位
RLCA
JCN1
CLR78H

N1:RLCA
JCN2
CLR79H
N2:RLCA
JCN3
CLR7AH
N3:RLCA
JCN4
CLR7BH
N4:RLCA
JCN5
CLR7CH
N5:RLCA
JCN6
CLR7DH
N6:RLCA
JCN7
CLR7EH
N7:RLCA
JCN8
CLR7FH
N8:MOVA,2FH
MOV@R0,A
SETB00H
POPPSW
POPA
RETI
;=======延时=======
DELAY1:MOVR6,#60
DE1:MOVR7,#248
MOVR7,$
DJNZR6,DE1
RET
END

编译过后出现如下问题
Buildtarget'Target1'
assemblingText1.asm...
Text1.asm(7):errorA46:CODE-ADDRESSEXPECTED
Text1.asm(73):errorA45:UNDEFINEDSYMBOL(PASS-2)
Text1.asm(263):errorA45:UNDEFINEDSYMBOL(PASS-2)
Text1.asm(537):errorA9:SYNTAXERROR
Text1.asm(541):errorA9:SYNTAXERROR
Text1.asm(545):errorA9:SYNTAXERROR
Text1.asm(561):errorA8:ATTEMPTTODEFINEANALREADYDEFINEDLABEL
Text1.asm(561):errorA22:EXPRESSIONTYPEDOESNOTMATCHINSTRUCTION
Text1.asm(631):errorA22:EXPRESSIONTYPEDOESNOTMATCHINSTRUCTION
Text1.asm(641):errorA48:DATA-ADDRESSEXPECTED
Targetnotcreated
这个需要如何修改程序
请教下各位高手
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:35:03 | 显示全部楼层
进入http://blog.sina.com.cn/s/blog_67ed8c3f0100jdhi.html
单片机学习大全!
你要怎么修改?没讲清楚。上面网站有你需要的东西。
回复

使用道具 举报

千问 | 2021-1-27 06:35:03 | 显示全部楼层
1.错误提示有:代码地址错误,代码可能越界,超过代码区容量,或者,非法的不支持的变量定义.
2.数据地址错误:可能越界,超过单片机数据容量,建议看看单片机型号是否选择正确.
3.没有定义的变量,建议查看包含文件是否正确,可能单片机型号和包含文件不相符.
4.指令不支持数据格式类型,查看指令说明,将数据格式变换成支持的格式.
回复

使用道具 举报

千问 | 2021-1-27 06:35:03 | 显示全部楼层
我也最近在做可否交流交流我qq526406224
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行