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

问题描述

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

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

用51单片机做一个数字电子钟

问题描述 用51单片机做一个数字电子钟 想用51单片机做一个电子钟,但是刚接触单片机,只会编流水灯的程序,请指点一下具体的实现原理 解决方案 单片机,数字电子钟51单片机之电子钟设计 解决方案二: 实时时钟的话要接其他芯片DS1302什么的,简单的秒表这样的在计时器中断里面计数,然后再控制数码管扫描显示出来就好了

vc60-VC(MFC)串口调试界面添加一个按钮控制两种颜色变换的指示灯。谢谢!!!

问题描述 VC(MFC)串口调试界面添加一个按钮控制两种颜色变换的指示灯.谢谢!!! 用MFC做出来一个只能发送和接受的界面之后,需要添加一个或两个按钮控制两种颜色变换.请问是指示灯吗?代码怎么写?谢谢. 解决方案 直接放一个static控件,准备两个图片,一个红灯一个绿灯 直接画http://blog.csdn.net/lujianfeiccie2009/article/details/7281996 当然,也可以不用先准备图片,而直接通过画圆.填充绘制出灯.

第一个Linux驱动-流水灯【转】

转自:http://www.xuebuyuan.com/1856562.html 水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7711695                    本节介绍如何利用板载的Led和Linux的内核定时器实现一个简单的流水灯的驱动,所使用的开发板是TQ2440,内核版本2.6.30.4.         程序比较简单,也没涉及到什么机制,直接上代码了!关于定时器的使用模板可

6种常用的"一个按钮控制播放与暂停"的方法

按钮|控制 经常在论坛里看到一些朋友有在问这个问题,刚好下午有点时间,就整理了六种最常用的一个按钮控制MC播放方法,拿来跟大家共享,希望能启到抛砖引玉作用,大家有更好的算法,希望都拿出来共享: 附上原件供学习: 点击这里下载源文件 ps=0;//初始化ps,有些算法要用到. //循环算法-1 on (release) {  i++;  if (i == 1) {   play();  } else {   stop();  }  if (i>=2) { //当i=2时,让i=0,i就在1-0之间

51单片机添加一个c文件无法启动的问题

问题描述 51单片机添加一个c文件无法启动的问题 单片机的型号是C8051F340,然后ram为4096,是一个U盘上的芯片. 我在原有的程序上增加了一个C文件,这个文件的功能是AES加密. 这时候,问题来了,我即使不调用这个加密功能,仅仅是添加这个文件,生成的程序 烧到这个芯片当中,U盘就无法正常运行了,插上去没有反应,把添加的这个文件 删除了之后,U盘便能正常运行.请问下,原因是什么呀? 解决方案 看下是不是有冲突的全局变量,或者你的程序超过了rom容量. 解决方案二: 用keil试试看可能

mfc-vc6.0怎么用一个按钮控制两个图片

问题描述 vc6.0怎么用一个按钮控制两个图片 本来是图片1,按下按钮后就变成图片2,再按就是图片1,如此来回切换 解决方案 变量一个全局的 BOOL 型变量,每按一次按键这个 BOOL 变量取反.然后,根据 BOOL 变量的数值来控制显示哪一张图片. 解决方案二: vc如何在按钮上显示一个图片VC++6.0 一个简单的图片按钮示例VC++6.0 一个简单的图片按钮示例 解决方案三: 申请个bool型的标识变量,按一下按钮先判断这个变量如果是true就贴图片1,false就贴图片2,然后再将这个

Flash中一个按钮控制播放和停止的2种算法

按钮|控制|算法 第一种ps=0;//初始化ps,有些算法要用到.  //循环算法-1  on (release) {  i++;  if (i == 1) {  play();  } else {  stop();  }  if (i>=2) { //当i=2时,让i=0,i就在1-0之间循环  i = 0;  }  }第二种on (release) {  if (!ps) { //非算法,非真等于假,非假等于真  stop();  ps = true;//或者ps=1;因为算法里1代表真0代

新人求助:android apk直接控制开发板上的4个led灯,实现流水灯

问题描述 新人求助:android apk直接控制开发板上的4个led灯,实现流水灯 在android系统的文件目录下有如下4个文件路径,分别控制4个led亮与灭,写入1亮,0灭 public String path_led1="/sys/devices/platform/leds-gpio/leds/led1/brightness"; public String path_led2="/sys/devices/platform/leds-gpio/leds/led2/bri

51单片机入门程序

注:昨天有同学指正说流水灯会影响脉冲输出,造成4s时间的延误.这里说明下,程序设计的初衷是让每个任务独立运行,意思就是当流水灯任务执行的时候脉冲输出任务就被挂起,不过实际上流水灯工作的时候脉冲输出引脚的确会一直维持一个电平,没考虑周详,多谢这位同学提出.最后附上了新的解决方案,中断方式,欢迎同道指正. 需求:通过按下不同的按键让STC89C52RC控制电机以不同的转速运行或者控制LED实现流水灯. 需求分析: 按下按键1流水灯开始工作,按下按键2电机以低转速运行,按下按键3电机以中转速运行,按下