Keil编译时出错 Text1.asm(8): error A45: UNDEFINED SYMBOL (PASS-2) 求解 急!急!急!

ORG 0000H ; 主程序入口
AJMP MAIN
ORG 0030H
MAIN: SETB P2.6 ; 置无线发射模块为发射状态
CLR P1.0 ; P1.0口置0
MOV A,P2
JNB ACC.4,PR1
PR1: JMP START
ACALL BDCHAN ; 调用标度变换子程序
MOV R7,#0AH ; 与水位警戒线做比较
CLR C
MOV A,40H ; 把40H单元中的水位取
SUBB A,R7 ; 判断是否要报警
JNC SND ; 转到报警
LCALL XIANSHI ; 调用显示子程序
LCALL CLEAR ; 调用清除显示
END接收程序:
START: MOV TMOD,#20H ; T1工作方式2
MOV PCON,#00H ; SMOD=0
MOV TH1,#0F4H
SETB TR1
MOV IE,#90H
MOV SCON,#50H ; 串行口方式1,允许接收
CLR 7EH ; 发送命令状态
CLR 7FH ; 接收命令状态
RE: MOV A,SBUF
MOV @R0,A ; 收到一个字节数据
CLR 7FH ; 接收结束
RET
运行结果
Build target 'Target 1'
assembling Text1.asm...
Text1.asm(8): error A45: UNDEFINED SYMBOL (PASS-2)
Text1.asm(9): error A45: UNDEFINED SYMBOL (PASS-2)
Text1.asm(14): error A45: UNDEFINED SYMBOL (PASS-2)
Text1.asm(15): error A45: UNDEFINED SYMBOL (PASS-2)
Text1.asm(16): error A45: UNDEFINED SYMBOL (PASS-2)
Text1.asm(18): warning A73: TEXT FOUND BEYOND END STATEMENT - IGNORED
Target not created

第1个回答  2011-05-20
问题主要在PR1 :
1,短跳JMP用法不对,你就用简单的AJMP就可以
2,如果单独编译这些程序,没有子程序BDCHAN,XIANSHI ,CLEAR也是通过不了的,SND也没出现
3,START那里TL1也要赋值。
4,如果用中断,程序开头应该设置中断服务程序入口,程序里还应该有中断服务程序,RE是中断服务程序么?本回答被提问者采纳

...Text1.asm(8): error A45: UNDEFINED SYMBOL (PASS-2) 求解 急...
1,短跳JMP用法不对,你就用简单的AJMP就可以 2,如果单独编译这些程序,没有子程序BDCHAN,XIANSHI ,CLEAR也是通过不了的,SND也没出现 3,START那里TL1也要赋值。4,如果用中断,程序开头应该设置中断服务程序入口,程序里还应该有中断服务程序,RE是中断服务程序么?

c51单片机1.asm(2): error A45: UNDEFINED SYMBOL (PASS-2) 错误
必须指定是用的T0还是T1,即TH0(1)TL0(1),另外检查一下你的0有没有敲错键盘敲成O的!

...asm(4): error A45: UNDEFINED SYMBOL (PASS-2)
aaaa.asm(4): error A45: UNDEFINED SYMBOL (PASS-2)这是告诉你,aaaa.asm文件中的第4行语句出现了错误,错误编号为A45,也就是出现了未定义的符号\/标号。查看你的第4行代码,是跳转到PINT0。可是PINT0是什么呢???

...asm(64): error A45: UNDEFINED SYMBOL (PASS-2)
SJMP MAIN --转移的目的地,太远。改成:JMP MAIN --即可。其它,还有错误。

c51单片机1.asm(2): error A45: UNDEFINED SYMBOL (PASS-2) 错误
4行 因为 TIMER 在END后面,所以程序认不到 9行 MOV TL0,#B0H ;立即数第一个是字母的要加0 #0B0H 11行也是一样 加0 #0FEH 你后面的TIMER里也是一样都要改过来。还在程序里要有一个死循环,不是写个END就不执行了的。END是不编译,不是不执行。SETB EA SETB ET0 SETB TR0 ...

...1.asm(41): 错误 A45: UNDEFINED SYMBOL (PASS-2)急啊。在线等谢谢...
编译了一下 DO: MOV R1,#200这里的标号是DO D1: MOV R2,#123 NOP D2: DJNZ R2,D2 DJNZ R1,D1 DJNZ R0,D0 这里是D0 数字0和字母O写错了

...asm(2): error A45: UNDEFINED SYMBOL (PASS-2)
学混合编译话,看看《keil c51 编译器用户手册》这本书,网上很容易下,里面几个混合编译的例子很详细,格式很规范,无参数传递,有参数传递,有参数返回的都有例子,仔细看看吧 NAME ASM1 ?PR?sendAA?ASM1 SEGMENT CODE PUBLIC sendAA RSEG ?PR?sendAA?ASM1 sendAA:mov a,0x90 anl ...

单片机C语言keil编译出现错误,寄存器容量不足,怎么改正,急!!!
我用keil2,keil4编译都没有问题的。重新建一个工程,再试下。下图就是用keil4编译的结果。估计是没有破解。或者破解的不对。

keil编译无错误但 生不成hex
1、右击Target 1,在出现的下拉选项中,选择“Options for Target 'Target 1'。如图1所示。2、点选Output选项,从图二中可看到,Create HEX File项前的选框并没选中,因默认情况下编译的时候不生成.HEX烧写文件。3、选种 Create HEX File,如图3所示。选种后再进行编译,则可生成.HEX烧写文件。

...最后怎么报错 3.asm(13): error A45: UNDEFINED SYMBOL
哈!我再补充说全点吧,意思就是你用的这个A45的符号没有定义他是什么玩意,是内存地址还是一个数?哈!你这是符号出问题了,因T2用的少,你是不是用到没在头文件中定义T2的了,打开头文看一下。最简单就是你在前把这过不去的翻书定义一下试试。因你这书写格式没问题了,PASS-2出的错。

相似回答