C51单片机流水灯程序问题定义无效

#include<reg51.h>
sbit p0=P1^0;
sbit p1=P1^1;
sbit p2=P1^2;
sbit p3=P1^3;
sbit p4=P1^4;
sbit p5=P1^5;
sbit p6=P1^6;
sbit p7=P1^7;
void mdelay(unsigned int t)
{
unsigned char n;
for(;t>0;t--)
for(n=0;n<125;n++)
}
int main()
{
while(1)
{
P0=0;
P1=1;
mdelay(1000);
P1=0;
P2=0;
mdelay(1000);
P2=0;
P3=1;
mdelay(1000);
P3=0;
P4=1;
mdelay(1000);
P4=0;
P5=1;
mdelay(1000);
P5=0;
P6=1;
mdelay(1000);
P6=0;
P7=1;
mdelay(1000);
P7=0;
}
}

你用sbit定义的8行是小写字母p0~p7,可主程序中却又用了大写的P0~P7,这肯定错呀。C语言是区分大小写字母的。程序中必须用小写字母p0~p7,而不能用大写的P0~P7,因为P0~P3是单片机四个并行口,用户不能再定义了。
其实,就一个流水灯的程序,很简单的,用不着写得这么复杂,这么费劲。给你一个典型的程序:
#include<reg51.h>
#include<intrins.h>
void mdelay(unsigned int t)
{
unsigned char n;
for(;t>0;t--)
for(n=0;n<125;n++);
}
void main() //这主程序不要写成int main()
{
unsigned char led=0xfe;
while(1)
{
P1=led;
mdelay(1000);
led=_crol_(led,1);
}
}
请及时采纳
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答