KeilUvision3错误分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Keil Uvision3错误分析 2010-11-13 13:55 ?????? 首先我们看一下,Keil最常见的几种错误,这几个错误多是网上朋友经常去讨论的错误,也可以在各大论坛看到。这里载录最常见的5种作为例子,方便分析。 1、WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025H TO: 0025H 说明外部资料ROM 的0025H 重复定义地址 解决方法外部资料ROM 的定义如下Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它。 2、 WARNING 206:’Delay1ms’: missing functionprototype C:\8051\INPUT.C Error 267 :’DelayX1ms ‘:requires ANSIstyle prototype C:\8051\INPUT.C 说明程序中有调用Delay1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告 解决方法:编写Delay1ms 的内容编写完后也要作宣告或作外部宣告可在delay.h 的包含档宣告成外部以便其它函数调用。 3、WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL:MUSIC3 MODULE:C:\8051\MUSIC.OBJ(MUSIC) ***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL:MUSIC3 MODULE:C:\8051\MUSIC.OBJ(MUSIC) ADDRESS:0018H 说明程序中有调用MUSIC 函数但未将该函数的含扩档C 加入到工程档Prj 作编译和连接 解决方法:设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去。 4、ERROR 107:ADDESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GOUP_ LENGTH: 0018H ***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL SYMBOL: VOLUME MODULE: C:\8051\OSDM.OBJ (OSDM) ADDRESS: 4036H 说明data 存储空间的地址范围为0~0x7f,当公用变量数目和函数里的局部变量如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7 作暂存当存储器不够用时则会以data 型别的空间作暂存的个数超过0x7f 时就会出现地址不够的现象 解决方法:将以data 型别定义的公共变量修改为idata 型别的定义。 5、ERROR L104: MULTIPLE PUBLIC DEFINITIONS 是104号错误,你头文件里的变量定义被多次调用,相当于多次定义了。(注意头文件里与主函数间容易同时调用相同的变。 分析如下: 1、从字面上的意思来看,这个警告信息说的是xdata空间的内存被覆盖了。C51对于片外变量,可以使用xdata关键字来标识,对于这些变量的操作,当然要比片内变量要慢一点,但是胜在空间比内部变量的空间要大得多,所以在大多数情况下都是使用xdata变量空间的. 那么xdata空间的内存被覆盖到底是什么意思呢,原来是C51在定义xdata区域变量的时候,可以使用关键字_at_来直接定义某个变量的地址,这一般是用来定义硬件地址的。这样看来,这个警告信息的意思就比较明确了,就是编译器发现两个被指定了地址的变量使用了同一个地址空间。 譬如我的错误就是定义了一个变量,其地址在0x8000,这是一个数组,长度为16,然后又定义了一个变量,其地址在0x800A,这下明白了吧,第一个变量的起始地址是0x8000,长度16,结束地址就是0x800F,正好包括了0x800A这个地址,所以导致上述的警告信息。 2、没有进行函数声明:调用没有声明的外部函数、使用位于没有声明的在调用函数候补的被调用函数 。 3、解决办法: a、是文件没有添加到工程里。 b、可能是因为存在没有被调用的已经定义的函数。 c、不知道你有没有把Source group组下面的A51.C删掉,如果没有删,在A51.c上点右键,选择remove file . d、建一个新的c文件,里面写一个空的函数,把该文件添加到project中,注意该文件不能再选generate assembler SRC file和assemble SRC file选项。重新编译工程,如果警告该函数没被调用,在主文件中调一下。 e、建一个新的c文件,

文档评论(0)

feiyang66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档