搜索
bottom↓
回复: 10

马老师,请教一个按键问题

[复制链接]

出0入0汤圆

发表于 2008-4-16 12:18:11 | 显示全部楼层 |阅读模式
马老师:
      你好,你的状态机按键程序,我已经看过了,也在实验板上测过了,感觉相当好,但有一个问请教一下马老师,就是我想用一个按键实现计数器按一下开始,在按一下暂停,在按一下又开始,连续按按两下就停止的程序怎么写呀,希望马老师指点一下,

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-4-16 12:35:36 | 显示全部楼层
自己写,慢慢调来的好些!
按键检测程序()
{
   if按键按下
   {
     if 按键计数=0;
       按键计数=1;
       if 计数切换 = 0
       {  开始计数;
          计数切换=1;
        }
       else
       {  计数切换=0;
          暂停计数;
        }
       按键计时开始;
     elseif 按键计数=1 & 按键计时<双击最大间隔
       按键计时关闭;
       关闭计数;
   }
}

按键计时程序()
{
    if按键计时>大于双击最大间隔
   {    按键计数=0;
       关闭按键计时;
   }else
   {
      按键计时++;
    }
}

出0入0汤圆

 楼主| 发表于 2008-4-16 15:58:11 | 显示全部楼层
我自已写的是这样的结构:
按键检测程序
{  COUNT++  //计数
   if(count>4)
    {cont=0}
    switch(count)
    {
      case 1:
            计数开始程序
   case 2:
            计数暂停
      case 4:
             计数停止
   }

不知这种结构行不,但就是调不出来呀

出0入0汤圆

发表于 2008-4-16 18:35:48 | 显示全部楼层
不对!
你的功能是 1 单击切换状态 2 双击(连续点击)关闭

如果要检测双击,必须要计时器。才能检测有没有在规定时间里连续击打两次按键。

出0入0汤圆

发表于 2008-4-16 20:59:51 | 显示全部楼层
lz,程序不重要,关键是通过例子去掌握思想和方法,那么你就能根据自己的需要设计编写程序了.

"用一个按键实现计数器按一下开始,在按一下暂停,在按一下又开始,连续按按两下就停止的程序怎么写呀"

首先你对于系统的描述和理解就不清楚:

1.首先怎么区别什么是"按一下"和"连续按两下",其中的时间间隔应该有定义.比如在0.5s间隔内按下键算连续2下,间隔1s以上算一下.

2.正常操作过程以及可能出现的过程如何处理?"按一下开始,再按一下暂停,再按一下又开始,连续按按两下就停止"太简单了.那么当按一下开始后连续按按两下应该如何处理?或连续按按两下后又连续按按两下怎么处理?

3.你把所有的过程分析清楚了,用状态图正确表示出来,再开始编写代码.

4.在你的应用中,还存在问题要解决.按键要消抖,可能需要10-20ms后才能确定一次按键,那么计数的准确性就会受到影响,实际系统允许吗?如果要测试反映时间,那么ms级的误差可能是不允许的.按键系统的设计就要做不同的变化.

不要小看一个按键处理,需要一定水平的人才能编写出真正适合系统的按键处理程序.

出0入0汤圆

 楼主| 发表于 2008-4-17 10:10:53 | 显示全部楼层
马老师,谢谢你,想问一下,有没有这方面的例程呀

出0入0汤圆

发表于 2008-4-17 12:58:28 | 显示全部楼层
怎么老是动不动的要例程呀.

出75入4汤圆

发表于 2008-4-18 10:57:48 | 显示全部楼层
很多人喜欢看例程。自己看书,看资料,自己学者编写,能掌握的更快。

出0入0汤圆

发表于 2008-4-18 16:15:52 | 显示全部楼层
不可能有包罗万象的例程呀.

出0入0汤圆

 楼主| 发表于 2008-4-21 12:42:36 | 显示全部楼层
一键多功能终于搞明白了,谢谢马老师

出0入0汤圆

发表于 2008-5-6 11:41:33 | 显示全部楼层
马老师真是耐心呀,讲解的真是详细.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 09:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表