马老师,请教一个按键问题
马老师:你好,你的状态机按键程序,我已经看过了,也在实验板上测过了,感觉相当好,但有一个问请教一下马老师,就是我想用一个按键实现计数器按一下开始,在按一下暂停,在按一下又开始,连续按按两下就停止的程序怎么写呀,希望马老师指点一下, 自己写,慢慢调来的好些!
按键检测程序()
{
if按键按下
{
if 按键计数=0;
按键计数=1;
if 计数切换 = 0
{开始计数;
计数切换=1;
}
else
{计数切换=0;
暂停计数;
}
按键计时开始;
elseif 按键计数=1 & 按键计时<双击最大间隔
按键计时关闭;
关闭计数;
}
}
按键计时程序()
{
if按键计时>大于双击最大间隔
{ 按键计数=0;
关闭按键计时;
}else
{
按键计时++;
}
} 我自已写的是这样的结构:
按键检测程序
{COUNT++//计数
if(count>4)
{cont=0}
switch(count)
{
case 1:
计数开始程序
case 2:
计数暂停
case 4:
计数停止
}
}
不知这种结构行不,但就是调不出来呀 不对!
你的功能是 1 单击切换状态 2 双击(连续点击)关闭
如果要检测双击,必须要计时器。才能检测有没有在规定时间里连续击打两次按键。 lz,程序不重要,关键是通过例子去掌握思想和方法,那么你就能根据自己的需要设计编写程序了.
"用一个按键实现计数器按一下开始,在按一下暂停,在按一下又开始,连续按按两下就停止的程序怎么写呀"
首先你对于系统的描述和理解就不清楚:
1.首先怎么区别什么是"按一下"和"连续按两下",其中的时间间隔应该有定义.比如在0.5s间隔内按下键算连续2下,间隔1s以上算一下.
2.正常操作过程以及可能出现的过程如何处理?"按一下开始,再按一下暂停,再按一下又开始,连续按按两下就停止"太简单了.那么当按一下开始后连续按按两下应该如何处理?或连续按按两下后又连续按按两下怎么处理?
3.你把所有的过程分析清楚了,用状态图正确表示出来,再开始编写代码.
4.在你的应用中,还存在问题要解决.按键要消抖,可能需要10-20ms后才能确定一次按键,那么计数的准确性就会受到影响,实际系统允许吗?如果要测试反映时间,那么ms级的误差可能是不允许的.按键系统的设计就要做不同的变化.
不要小看一个按键处理,需要一定水平的人才能编写出真正适合系统的按键处理程序. 马老师,谢谢你,想问一下,有没有这方面的例程呀 怎么老是动不动的要例程呀. 很多人喜欢看例程。自己看书,看资料,自己学者编写,能掌握的更快。 不可能有包罗万象的例程呀. 一键多功能终于搞明白了,谢谢马老师 马老师真是耐心呀,讲解的真是详细.
页:
[1]