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

#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharuchari,a,b,c,d,e,f;uin... #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值
展开
 我来答
玩转嵌入式
2012-04-04 · TA获得超过4340个赞
知道大有可为答主
回答量:1160
采纳率:100%
帮助的人:998万
展开全部
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这个名字我是随便取的,根据你的习惯,你重新取一个名字就行了。
你的程序中,变量重复定义了,也就是变量的名字重了。
wolf_lhy
2012-04-04 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:547万
展开全部
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语言不允许重定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式