#include <REGX52.H>
#include<INTRINS.H>
void Delay1ms(int xms);
unsigned char LEDnum;
int main()
{
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0);
Delay1ms(20);
LEDnum++;
if(LEDnum>=8)
{
LEDnum=0;
}
P2=~(0x01<<LEDnum);
}
}
}
void Delay1ms(int xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
原因:在main(代码入口)定义了函数,却没有在main前声明这是一个函数,解决办法声明一下像上面一样,我把定义的函数放在了执行代码的后面却在main前声明void Delay1ms(int xms);
void Delay1ms(int xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
错误示例
#include <REGX52.H>
#include<INTRINS.H>
unsigned char LEDnum;
int main()
{
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0);
Delay1ms(20);
LEDnum++;
if(LEDnum>=8)
{
LEDnum=0;
}
P2=~(0x01<<LEDnum);
}
}
}
void Delay1ms(int xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
总而言之一定把定义的函数放main前面或者放后面声明
这里要注意定义的函数不能放执行代码里(int main后的第一个{到其对应的最后一个}里)他是单独出来的,如果放里面了还是会报错。。