Keil C 编译器常见警告与错误信息的解决方法

发布者:Bby1978最新更新时间:2015-09-28 来源: eefocus关键字:Keil  编译器  常见警告  错误信息 手机看文章 扫描二维码
随时随地手机看文章
1. Warning 280:’i’:unreferenced local variable
说明 局部变量 i 在函数中未作任何的存取操作
解决方法 消除函数中 i变量的宣告
 
2 Warning 206:’Music3’:missing function-prototype
说明 Music3( )函数未作宣告 或未作外部宣告 所以无法给其他函数调用
解决方法 将叙述void Music3(void)写在程序的最前端作宣告 如果是其他文件的函数则要写成 extern void Music3(void),即作外部宣告
 
3 Compling :C:8051MANN.C
Error:318:can’t open file ‘beep.h’
说明 在编译 C:8051MANN.C 程序过程中 由于 main.c 用了指令#include “beep.h”,但却找不到所致
解决方法 编写一个 beep.h 的包含档并存入到 c:8051 的工作目录中
 
4 Compling:C:8051LED.C
Error 237:’LedOn’:function already has a body
说明 LedOn( )函数名称重复定义 即有两个以上一样的函数名称
解决方法 修正其中的一个函数名称 使得函数名称都是独立的
 
5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAYX1MS?DELAY
说明 DelayX1ms( )函数未被其它函数调用 也会占用程序记忆体空间
解决方法 去掉 DelayX1ms( )函数 或利用条件编译#if …..#endif,可保留该函数并不编译
 
6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO:   0025H
说明 外部资料ROM 的 0025H重复定义地址
解决方法 外部资料 ROM的定义如下
Pdata unsigned char XFR_ADC _at_0x25 其中 XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在 0x25 处并修正它
 
7 WARNING 206:’DelayX1ms’: missing function-prototype
C:8051INPUT.C
Error 267 :’DelayX1ms ‘:requires ANSI-style prototype C:8051INPUT.C
说明 程序中有调用DelayX1ms 函数 但该函数没定义 即未编写程序内容或函数已定义但未作宣告
解决方法 编写 DelayX1ms 的内容 编写完后也要作宣告或作外部宣告 可在 delay.h的包含档宣告成外部 以便其它函数调用
 
8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:8051MUSIC.OBJ(MUSIC)
ADDRESS:0018H
说明 程序中有调用 MUSIC 函数 但未将该函数的含扩档 C 加入到工程档Prj 作编译和连接
解决方法 设 MUSIC3 函数在 MUSIC C里 将 MUSIC C添加到工程文件中去
 
9 ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:8051OSDM.OBJ(OSDM)
ADDRESS: 4036H
说明 data 存储空间的地址范围为 0~0x7f,当公用变量数目和函数里的局部变量 如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7作暂存 当存储器不够用时则会以 data型别的空间作暂存的个数超过 0x7f 时就会出现地址不够的现象
解决方法 将以 data 型别定义的公共变量修改为 idata型别的定义
 
作为初学者,输入程序的时候一般会出现语法错误。语法错误会造成汇编失败。常见的语法错误有:
(1) 标号重复:Multiply Defined Label
    常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。。
(2)标点符号以全角方式输入:
   汇编程序要求标点符号为半角方式,否则汇编失败。可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
(3)数值#FFH 前遗漏0:
   根据要求应该在a~f前加0,写成#0FFH
(4)字母O和数字0搞混:
   有时候这两个字看上去完全相同,要注意哦~~
(5)标号后边遗漏":"
(6)标号使用了特殊字符:
     标号不能用指令助记符、伪指令、特殊功能寄存器名和8051在指令系统中用的“#”、“@”等,长度以2~6字符为宜,第一字母必须是英文字母。比如:T1、T2、A、B这些字符有特定的含义,不允许用于标号。
(7)超过地址范围:Address Out of Range
        JB P3.2,EXIT跳转超过-128~127个地址范围。这个是最容易出现的错误!你有可能程序刚才还能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把:
        JB   P3.2, EXIT      ;如果EXIT的位置距离本条语句超过127字节,则会出错。
                       ;可以用跳转中继的方法,可以达到跳转超过127字节的范围。
        JNB    P3.2, ZJ01   ;ZJ01是跳转的中继,在ZJ01的位置,放置一条长跳转指令。
        ……
 
ZJ01: LJMP    EXIT  ;
     ……
EXIT:
 
    AJMP跳转超过2K地址: 
AJMP属于短跳转命令,有2K地址范围的限制。
(8)字母I和数字1混淆:
  冒失鬼的常见问题。
(9)创造发明不存在的汇编语言指令:Unrecognized Statemen or Undefined Argument
  在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不认可。
(10)符号“:”“;”用半角书写。
(11)语句中的符号名可能拼错或未被定义:Undefined Symbol。
(12)汇编的源程序结尾未发现END语句:Missing END Statrment。
要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。标号最好采用有意义的英文或汉语拼音,这样比较直观,注释尽量详细准确,便于以后读懂,而且有利于其它程序中作为子程序模块的调用。还有要注意典型程序模块的积累,再复杂的程序也是由一个个小程序模块组成的,在初学阶段可以对典型程序比如:延时子程序、查表子程序等编写实践一次,这样印象深刻,便于以后引用。
关键字:Keil  编译器  常见警告  错误信息 引用地址:Keil C 编译器常见警告与错误信息的解决方法

上一篇:单片机累加器A与ACC区别
下一篇:keilC51编译常见错误和警告说明

推荐阅读最新更新时间:2024-03-16 14:33

C51编译器的数据存储格式及编程技巧分享
Data Storage Formats数据存储格式 这一部说明可用的数据类型的存储格式。Cx51提供了几种数据存储格式如下: Data Type Bits Bytes Value Range bit 1 — 0 to 1 signed char 8 1 -128 to +127 unsigned char 8 1 0 to 255 enum 8 / 16 1 or 2 -128 to +127 or -32768 to +32767 signed short 16 2 -32768 to +32767 unsigned short 16 2 0 to 65535 signed int 16 2 -32768 to +3276
[单片机]
<font color='red'>C</font>51<font color='red'>编译器</font>的数据存储格式及编程技巧分享
C8051F IO输出之LED显示程序
系统功能 使用C8051F单片机控制8位LED,演示C8051F单片机之“点灯术”。 硬件设计 关于C8051F的I/O结构及相关介绍详见Datasheet(点击查看),这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表: 虽然C8051F的I/O口单独输出“1”时,可输出较大电流足已点亮一盏灯,但C8051F总的I/O输出毕竟是有限的,所以,有经验的点灯者考虑到除了点灯外可能还有其它费劲的活儿要干,会将C8051F的I/O口设计为输出“0”时点灯,输出“1”时熄灯。这种接法亦叫“灌电流接法”。 8位LED灯控制电路原理图 软件设计 下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
[单片机]
<font color='red'>C</font>8051F IO输出之LED显示程序
利用CY7C68013A的USB通信程序开发与设计
0 引言 CY7C68013中集成有增强的8051微控制器及I2C兼容控制器,其传输速率可达100 kHz或400kHz。LabVIEW是一种以图形化语言为基础设计虚拟仪器的软件,LabVIEW采用图形模式的结构框图来构建程序代码,LabVIEW程序由数据流驱动,数据流控制着程序的执行顺序。LabVIEW功能强大,它带有可扩展函数库和子程序库的通用程序设计系统,它的VISA(VIRtual INStrumentSoftware Architecture)是一个用来与各种仪器总线进行通讯的高级应用编程接口(API),且不受平台、总线和环境的限制。 I2C (Inter-Integrated Circuit)总线是由飞利浦公司开发的两
[单片机]
利用CY7<font color='red'>C</font>68013A的USB通信程序开发与设计
DVB-C 数字电视的测试
1 引言 我国播放数字电视的进程已出台,广电部要求沿海发达地区 2005 年开通数字电视, 2015 年全国开通数字电视,停播模拟电视。近年来不少城市都已开始试播,各广电局、广电网络传输中心、有线台都正在试验之中。数字电视相对于模拟电视来说是一个全新的概念,对于数字电视系统的测试也是一个全新的概念,我们必须按数字电视的标准,结合实际情况,去探讨它的测试方法,研制、选用新的测试系统和仪器。 2 DVB-C 数字电视 我国的数字电视标准尚未全部确定,据说今年将会正式定稿。无论怎么说,我国数字电视选用欧洲标准为基础是无疑的了,即以 DVB 数字电视广播标准为基础。这个标准包括 DVB- S(数字卫星电视)、 DVB- C(数字电缆电视
[测试测量]
DVB-<font color='red'>C</font> 数字电视的测试
思灵机器人完成2.2亿美元C轮融资,是风口还是疯狂?
广告摘要声明广告 【文/半夏】9月10日,思灵机器人(AGILE ROBOTS)宣布完成2.2亿美金C轮融资,软银愿景基金2期领投,跟投方包括阿布扎比皇室集团(Chimera)、高瓴创投、红杉中国、线性资本等(按照字母顺序),以及包括小米集团、工业富联、富士康原高管创立的满得投资等产业投资人。至此, 思灵机器人估值突破10亿美金,跻身独角兽行列。 据了解,思灵机器人专注于智能机器人软硬件系统的打造,目前已推出 机器人操作系统(AgileCore.OS)、智能力控机器人、仿人型五指灵巧手、智能柔性机器人操作平台(FIP) 等产品,目前已落地在工业(3C消费电子、汽车及上下游、珠宝首饰等精密部件生产制造)、医疗、农业、教育及服务等领域
[机器人]
S3C2440 UART使用笔记
Uart_Init(0,115200); ////////////////////////////////********************************************************************//////////////////////////////////////////////// void Uart_Init(int pclk,int baud) { int i; if(pclk == 0) pclk = PCLK; rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable
[单片机]
DSP编程技巧-揭开编译器神秘面纱之链接器的高级选项
  在对 编译器 / 链接器 的各个选项的分析中,我们多次提到了“符号(symbol)”这个概念,而 DSP 调试的过程,往往也有个显著的特点,叫“符号调试”。每个可充定位目标模块都有一个符号表,它包含了模块中所定义和使用的符号的信息。在 链接器 的上下文中,有三种不同的符号:   1. 在目标模块中定义,并能被其它模块所引用的符号全局符号。全局 链接器 符号对应于非静态的C函数以及被定义为不带C static属性的全局变量。   2. 由其它模块所定义,并在当前目标模块中被引用的全局符号,这些符号被定义为外部符号(external),对应于定义为其它模块中的C函数和变量。例如我们在一个C文件中使用extern来
[嵌入式]
DSP编程技巧-揭开<font color='red'>编译器</font>神秘面纱之链接器的高级选项
P80C592芯片在基于CAN总线显示通信模块中应用
摘要:PHILIPS公司的P80C592芯片是P8X592的无片内ROM版本,该芯片是现有P8XC522和Philips CAN控制器PCA82C200的功能相结合的产物。文中介绍了P80C592在开发基于CAN总线的显示通信模块中的应用方法。 关键词:CAN总线 显示通信模块 P80C592 1 P80C592芯片简介 P80C592是PHILIPS公司采用先进的COMS工艺制造的高性能8位单片机。该单片机的指令集与80C51 完全兼容,但在80C51标准特性的基础上又增加了一些对于应用具有重要作用的硬件功能。P80C592是P8XC592的无片内ROM版本,是现有P8XC522和Philips CAN控制器PCA82C2
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved