单片机编译出错: WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
void delay();
void main()
{
while(1)
{
D1=0;
delay();
D1=1;
delay();
}
}
void delay()
{
uint x,y;
for(x=100;x>0;x--)
for(y=540;y>0;y--);
}
这是编译后的结果:
SYMBOL: MAIN
MODULE: delay.c.obj (DELAY_C)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MAIN?DELAY_C
Program Size: data=11.0 xdata=0 code=136
Target not created

第1个回答  2012-11-12
错误在最后 for(y=540;y>0;y--) .你忽略了一件事情,单片机单字节只有8位,所以y最大应该是256,如果你想最加长,只能再加一条for代码了。追问

y是int型的,是16位的啊

本回答被网友采纳
第2个回答  2012-11-12
贴出完整的出错提示,不要只挑一行贴。追问

SYMBOL: MAIN
MODULE: delay.c.obj (DELAY_C)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MAIN?DELAY_C
Program Size: data=11.0 xdata=0 code=136
Target not created
麻烦你了

追答

main函数未被调用。
这种情况一般说明你的项目中没有添加startup.a51文件,因此连接器无法解析main这个符号。
在项目中添加一个即可。

本回答被提问者采纳
第3个回答  2012-11-12
#include后面没写函数库吧, #include <reg51.h>追问

书上写的是reg52啊

追答

都可以,52的包括51的库函数了

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
错误在最后 for(y=540;y>0;y--) .你忽略了一件事情,单片机单字节只有8位,所以y最大应该是256,如果你想最加长,只能再加一条for代码了。

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
把第二个main 函数中的num 变量定义插入到第一个main的变量定义中,然后把第二个main 函数中while(1)中的函数插入到第一个main 函数的while(1)中的else前面 注意格式和大括号以及分号移植的时候的完整性

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS WARNING L1: UNRESO...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY_MS?MAIN*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: CURRDATETIME MODULE: main.obj (MAIN)*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: GETDATETIME MODULE: main.obj (MAIN)*** WARNING L1: UNRESOLVED ...

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
是的,你没有调用,因为你调用错了,应该写为:led(p[i]);

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
delay0()函数有实体却未被引用,因此连接器给出这个警告。由于未被显式引用,所以编译器处理这个函数时比较小心,所有变量都不参与overlay处理,怕你是通过函数指针或别的什么手段调用的。

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS,小弟菜鸟求高手修正...
这是指有变量或者代码块没用被用到 一般L16的警告可以忽略的,对程序没有影响的 但编译时的warning:unreferenced local variable这个是你代码有错误了 你这代码写的太乱了,没有格式,也没备注,看着太累 你发到我邮箱abc3844@126.com,顺便告诉我实现的功能是什么 我帮你修改下 ...

单片机程序中出现这种情况: compiling main.c... linking..._百度知...
“ERROR L104: MULTIPLE PUBLIC DEFINITIONS” 多重定义;其他是警告。“WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS”说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过;“WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL”调用的某个利用extern声明的外部函数,它的某个参数...

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS这个警告是什么意思...
可能是运算超出范围。

...UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_百...
你的主函数呢???main()函数!在单片机里从汇编到C的链接点是main函数!这个程序根本不会运行到你的C部分!所以你提示的警告是没有调用函数!

...WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY SEGMENT...
函数拼写错误,调用时又写成正确的,导致报错定义的函数没有被调用。查找方法*(参考图片中标注):搜索编译对话框中的SEGMENT提示内容dispaly,并参考SYMBOL下提示的比对查找display。WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 意思是:定义了一个函数,但是在main等函数中并没调用。

相似回答
大家正在搜