单片机一个按键控制多状态的问题
时间: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一个按钮控制这三个功能,例如按下的时间长短,按次数等。修改好后,本人将共享该套数字时钟程序。谢谢各位啦。
{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 工具来完成。
谢谢分享了。