keil延时函数大括号后面有警告(keil4延时函数)

keil C中的警告是因为什么造成的?

这个警告是因为所给的段未被调用,已被排除在覆盖过程之外。

keil C中的警告解释:

WARNING1:UNSOLVED EXTERNAL SYMBOLS

指定模块的外部符号在PUBLIC符号表中找不到

WARNING2:REFERENCE MADE TO UNSOVED EXTERNAL

访问了未能匹配的外部符号code地址

WARNING4:DATA SPACE MEMORY OVERLAP

数据空间指定范围出现覆盖

WARNING5:CODE SPACE MEMORY OVERLAP

程序空间指定范围出现覆盖

WARNING6:XDATA SPACE MEMORY OVERLAP

外部数据空间指定范围出现覆盖

WARNING7:MODULE NAME NOT UNIQUE

模块名重名。模块未处理

WARNING8:MODULE NAME EXPLICITLY REQUESTED FROMANOTHER FILE

其他文件指名要求本模块名

WARNING9:EMPTYABSOLUTE SEGMENT

本模块包含空的绝对段,因未定位,它可能在不通知的情况下随时被覆盖

WARNING10:CANNOT DETERMINE ROOT SEGMENT

L51 对输入文件要求分辨是C51还是PL/M文件,然后进行流程分析,在无法确定的时候,发出本警告。它发生在主程序被汇编调用的时候,需要程序员用OVERLAP 特殊控制选项进行干预

WARNING11:CANNOT FIND SEGMENT OR FUNCTION NAME

在目标模块中找不到OVERLAP控制选项中规定的段或者函数间调用

WARNING12:NO REFERENCE BETWEEN SEGMENTS

试图用OVERLAP控制选项删除本来不存在的段间访问或者函数间调用

WARNING13:RECURSIVE CALL TO SEGMENT

CALLER段递归调用SEGMENT段。PL/M51和C51的非重入函数不允许递归调用

WARNING14:IMCOMPIABLE MEMORYMODEL

指定模块试图与以前不同的存储模式编译

WARNING15:MULTICALL TO SEGMENT

两个函数调用同一个函数(如主函数和中断函数),参数和局部变量将被覆盖

WARNING15:UNCALLED SEGMENT,IGNORED FOR OVERLAP PROCESS

所给的段未被调用,已被排除在覆盖过程之外

keil警告怎么办?

警告一般是有子函数没有用到,或有变量没有用到,对编译没有太大的影响,代码HEX是可以生成的,将HEX代码下载到单片机里运行看结果对不对就知道了。还有时可能会影响到程序的运行,需要查找警告的原因了。

用 keil编译的时候有两个警告怎么回事

warning

l15:

multiple

call

to

segment

这个问题必须注意,可能引起程序冲突,假设你用于自动化领域,则可能导致信号产生尖峰。

产生这一警告的一个根源是:你在主循环里调用了一个函数(如aaa),而在中断服务函数里,你用调用了这个函数(如aaa)。这样当主循环运行到该函数中是,一旦产生中断,则在中断里又再次调用该函数!这时,很可能出错!

避免这种情况的方法很多:如,在进中断的时候置需调用该函数的标志,而在主循环中调用该函数

你可以在中断函数设置标志

flag_display

=

1;

在主函数里判断这个标志:

if(flag_display)

valuedisplay();

更新后,清除显示标志:

flag_display

=

0;

在keil编译时出现警告 什么意思 怎么解决

这是个警告,编译是没有问题的,能产生hex文件的,就是你有些函数或者变量声明或者定义了,但是没有使用!基本不影响使用的如果要不报这个警告的话就把没用到的都删除就好了

为什么我的keil软件编程显示2个警告

如果设置没有问题,那么就只有两个错误:

1. p1应改为P1(大写),否则不能识别,程序编译就错

2. main函数不能运行结束,所以最后要加while(1);

综合后,改为(可拷贝):

#includereg52.h

void main()

{

  P1 = 0xfd;

  while(1);

}

在用keil进行汇编时出现这样两个警告,不知怎么解决

错误总结:1.在使用c语言时,P1要大写。

2.void main(void); 的后面不要分号,在第二个 void delay(void);时后面不要分号,要加强C的学习。

3.延时程序,时间设置也有问题。

for(j=0;j121;j++); 这个后面的是没有必要的,

你的延时应该是121*500而你这样写就成了,121+500了。要得到121*500,这个语句for(i=0;i500;i++); 的分号不要。

建议加强C语言的学习。

361知讯网

本文链接:http://pdidw.com/keil/55711.html

发表评论

评论列表

还没有评论,快来说点什么吧~