微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机一个按键控制多状态的问题

单片机一个按键控制多状态的问题

时间:10-02 整理:3721RD 点击:
void keyscan()
{if(k==0)
   {delay(10);
    if(k==0)
      {sec++;
       if(sec>=60)
       sec=0;
       }
  while(k==0)
  display();}
  if(kmin==0)
    {delay(10);
     if(kmin==0)
       {min++;
        if(min>=60)
        min=0;
        }
  while(kmin==0)
  display();
     }
  if(khour==0)
    {delay(10);
     if(khour==0)
       {hour++;
        if(hour>=60)
        hour=0;
        }
  while(khour==0)
  display();
  }
}
我的问题是本段使用了三个按键k,kmin,khour。有没有那位朋友可以帮忙修改下,使用k一个按钮控制这三个功能,例如按下的时间长短,按次数等。修改好后,本人将共享该套数字时钟程序。谢谢各位啦。

LZ 或可考虑使用状态机。具体的思路是软件监视按键的状态,在按键有动作时,向状态机发出按下、长时间按下以及释放等事件。这些事件触发状态机状态的改变,并执行相应的功能……
提示:
状态机部分的代码可使用 IAR 的 visualState 工具来完成。

谢谢分享了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top