2 u012561629 u012561629 于 2013.12.01 14:26 提问

51单片机用一个按钮控制流水灯的启停

#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--);
}
以上是本人写的程序,它只能启动流水灯,不能停止流水灯。求各位大神指点一下!!!

3个回答

yu_xiaofei
yu_xiaofei   2013.12.02 08:56

你要停流水灯的话,肯定也是跟单片机上你接的那个接口有关,你可以执行一个delay把那个接口置零,然后它就会循环的执行,执行一下流水,然后执行一次全灭了;你如果不想循环,那就不用delay了,直接置零

u012562712
u012562712   2013.12.13 11:12

你这个程序检测到key按下的时候就会执行if语句跳到while语句里面死循环。。不会再跳出来。。。你可以加句if(key==0) break;在你的while语句最后面

sephirothjy
sephirothjy   2013.12.02 15:26

代码里没有清零的部分,可以设置一个计数器,循环N次之后给P0口清零即可停止,或者设置一个外部输入清零按钮

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!