问题描述
- 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--);
}
以上是本人写的程序,它只能启动流水灯,不能停止流水灯。求各位大神指点一下!!!
解决方案
你要停流水灯的话,肯定也是跟单片机上你接的那个接口有关,你可以执行一个delay把那个接口置零,然后它就会循环的执行,执行一下流水,然后执行一次全灭了;你如果不想循环,那就不用delay了,直接置零
解决方案二:
你这个程序检测到key按下的时候就会执行if语句跳到while语句里面死循环。。不会再跳出来。。。你可以加句if(key==0) break;在你的while语句最后面
解决方案三:
代码里没有清零的部分,可以设置一个计数器,循环N次之后给P0口清零即可停止,或者设置一个外部输入清零按钮
时间: 2024-12-03 20:09:40