#include
#include
#define uchar unsigned char
#define unit unsigned int
sbit key=P3^1;
uchar a,d;
delay( uchar);
void main()
{
if(key==0)
{
while(1)
{ d=0xfe;
for(a=8;a>0;a--)
{ P0=d;
delay(50);
d=_crol_(d,1);
}
d=0x7f;
for(a=8;a>0;a--)
{ P0=d;
delay(50);
d=_cror_(d,1);
}
}
}
else
P0=0xff;
}
delay( uchar x)
{
uchar b,c;
for (b=500;b>0;b--)
for (c=x;c>0;c--);
}
以上是本人写的程序,它只能启动流水灯,不能停止流水灯。求各位大神指点一下!!!
void main()
{
int a=0;
while(1)
{
if(key==0)
{
if(a==2)
a=0;
delay(10);
if(key==0)
a++;
}
if(a==1)
{
d=0xfe;
for(a=8;a>0;a--)
{
P0=d;
delay(50);
d=_crol_(d,1);
}
d=0x7f;
for(a=8;a>0;a--)
{
P0=d;
delay(50);
d=_cror_(d,1);
}
else if(a==2)
P0=d;
}
}
代码里没有清零的部分,可以设置一个计数器,循环N次之后给P0口清零即可停止,或者设置一个外部输入清零按钮
你要停流水灯的话,肯定也是跟单片机上你接的那个接口有关,你可以执行一个delay把那个接口置零,然后它就会循环的执行,执行一下流水,然后执行一次全灭了;你如果不想循环,那就不用delay了,直接置零
你这个程序检测到key按下的时候就会执行if语句跳到while语句里面死循环。。不会再跳出来。。。你可以加句if(key==0) break;在你的while语句最后面