用keil编写的 C51错误 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START

源程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]="I LOVE YOU!";
uchar code table1[]="www.TXMCU.COM";
sbit RS=P2^5;
sbit E=P2^7;
sbit RW=P2^6;
/**延时**/
void delay()
{
uint i,j;
for(i=0;i<=100;i++)
for(j=0;j<=20;j++)
;
}
void com(uchar come)
{
P0=come;
RS=0;
RW=0;
E=1;
delay();
E=0;
delay();
}
void write(uchar date)
{

P0=date;
RS=1 ;
RW=0;
E=1;
delay();
E=0;
delay();
}
void init()
{ com(0x38);
com(0x0c);
com(0x06);
com(0x01);
}
/***主函数***/
void main()
{
uchar num,numb;
init();
com(0x80);
for(num=0;num<11;num++)
{
write(table[num]);
delay();
}
com(0x80+0x40);
for(numb=0;numb<13;numb++)
{
write(table1[numb]);
delay();
}
while(1);
}

是试过了,KEil编译通过,没有问题,可能是你Keil设置的问题,

解决办法:

1.是文件没有添加到工程里。

2.可能是因为存在没有被调用的已经定义的函数。

3.不知道你有没有把Source group组下面的A51.C删掉,如果没有删,在A51.c上点右键,选择remove file " ".

4.建一个新的c文件,里面写一个空的函数,把该文件添加到project中,注意该文件不能再选generate assembler SRC file和assemble SRC file选项。重新编译工程,如果警告该函数没被调用,在主文件中调一下。

5.建一个新的c文件,把主文件中的几个函数移至该文件,把该文件添加到project中,注意该文件不能再选generate assembler SRC file和assemble SRC file选项。重新编译工程。

其他:UNRESOLVED EXTERNAL SYMBOL 说明连接的时候没有找到外部变量

extern xdata unsigned char RxPnt; 只是说明引用外部变量,并不是实际的声明。

应该在某个.c文件里有xdata unsigned char RxPnt才行。

extern中对这个变量做了声明,说这个变量将会在这个文件中用到,但并没有定义

也就是那个变量并没有真实存在.

需要要某个地方定义一下,

也有可能是你定义了,但是被条件编译给去掉了也有可能.具体查一下工程里的所有源文件看看

温馨提示:答案为网友推荐,仅供参考