c语言单片机模拟红绿灯程序 请各位高手帮忙

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar i,a,b,c,d,e,f;
uint x,y,z;
sbit a=P1^0,b=P1^1,c=P1^2,d=P1^3,e=P1^4,f=P1^5;
void delay(uint);
void main()
{
while(1)
{
e=0;
a=0;
delay(100); //延时20秒
for(i=0;i<=2;i++)
{
c=0;
f=0;
delay(100); //延时一秒
c=1;
f=1;
delay(100); //延时一秒
}

d=0;
b=0;
delay(100); //延时20秒
}
}
void delay (uint z)
{
for(x=z;x>=0;x--)
for(y=10000;y>=0;y--);
}

请各位看下哪错了 ·· 然后就是按照上面注释的延时时间怎样合理的选取Z值

uchar i,a,b,c,d,e,f;
sbit a=P1^0,b=P1^1,c=P1^2,d=P1^3,e=P1^4,f=P1^5;
你的错误是:a,b,c,d,e,f重复定义;sbit 要单独一行。可以修改如下:
sbit aa=P1^0;
sbit bb=P1^1;
sbit cc=P1^2;
sbit dd=P1^3;
sbit ee=P1^4;
sbit ff=P1^5;
你的延时函数这样取可以,没有问题。追问

sbit aa=P1^0;
换成sbit a=P1^0;
不行么 为什么两个a

追答

aa这个名字我是随便取的,根据你的习惯,你重新取一个名字就行了。
你的程序中,变量重复定义了,也就是变量的名字重了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-04
uchar i,a,b,c,d,e,f;
uint x,y,z;
sbit a=P1^0,b=P1^1,c=P1^2,d=P1^3,e=P1^4,f=P1^5;
注意这里,你定义了两个a,重复定义,uchar i,a,
sbit a,C语言不允许重定义
相似回答