熏小漏 2021-11-22 14:53 采纳率: 80%
浏览 370

51单片机独立按键操控呼吸灯问题


#include <reg52.h>
sbit k1=P3^1;
sbit led=P2^0;
void delay(unsigned int a)
{
    while(a--);
}

void main()
{
    while(1)
    {
        led=1;
        if(k1==0)
        {
            delay(1000);
            if(k1==0)
            {
                while(1)
                {
              led=~led;
                delay(50000);
                delay(50000);
                led=~led;
                delay(50000);
                delay(50000);
                    if(k1==0)
                    {
                        delay(1000);
                        if(k1==0)
                        {
                            break;
                        }
                    }
                }
                led=0;
                if(k1==0)
                {
                     delay(1000);
                    if(k1==0)
                    {
                        continue;
                    }
                }
            }
        }
    }
}

想用独立按键实现呼吸灯的暂停和开始,就是按下第一次开始,按下第二次暂停,再按开始,但按下一次后只有闪烁,再按也实现不了暂停,求问是代码哪里不对,大一刚接触单片机,只有C语言基础,虚心求问!

  • 写回答

4条回答 默认 最新

  • 老皮芽子 2021-11-22 16:10
    关注
    
    #include <reg52.h>
    sbit k1=P3^1;
    sbit led=P2^0;
    void delay(unsigned int a)
    {
        while(a--);
    }
    
    void hx_led(void)
    {
        led = ~led;
        delay(50000);
        delay(50000);
        led = ~led;
        delay(50000);
        delay(50000);
    }
    
    void main()
    {
        //按键抬起时生效
        int    st    = 0;    //运行状态 0 stop//1 start
        int kd    = 0;    //按键按下状态
    
        while(1)
        {
            if(st != 0)
            {
                hx_led();
            }
            if(k1 == 0)
            {
                kd = 1;
                while( k1 == 0 )
                {
                    if(st != 0)    hx_led();
                }
            }
            if( k1 == 1 && kd == 1)
            {
                kd    = 0;
                st    = ~st;
            }
        }
    }
     
    //程序没调试过,也没经过编译,可能会有错误,自己修改调试吧
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月22日

悬赏问题

  • ¥15 求推荐发表需要付费的深度学习遥感场景分类SCI期刊
  • ¥15 无法在java控制台录入文字
  • ¥15 flutter网页应用用python的http服务器访问速度慢
  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)