1.不要所谓的状态机方法
2.不要开定时器0的中断(可以开/关定时器0 但不开中断)
3.如果开中断也行(不得已最后方法)
说明:因为用的是触摸单片机的触摸按键。 按键为1有效。不需要滤波。
实现的基本原理:判断2次按下的时间,>500(or250ms)再有按键按下,就是双击;没有就是_单击_。
目前的状况:我水平很菜,网上看了很多,书上也翻了,我是没实现的了。已经搞了_3天_了,就这个功能了,怎么弄都不行了,快崩溃了。
最简单的办法是在电路上想法子.我以前干这个的时候肯定让做硬件的工程师给我弄一个电路实现.
用到2个针脚一个单击一个双击.按钮同一个,
按下按钮后.如果线路当前是高电平就将将双击针脚置为高电平.将电路接地回到低电平.
如果当前是低电平将线路设置为高电平.在高电平保持500ms
后将单击针脚置为高电平.将电路接地回到低电平.
这种是取巧的法子.就算是鼠标的双击.也是操作系统判定的.而不是鼠标本身就知道是双击的.
你要用软件是一定要开定时器的.软件的做法就简单的多的.思路和上面是一定的.
bool 第一次=false;
点击中断中:if(第一次){第一次=false;触发双击事件,}else{第一次=true;打开定时器}
定时器中断中:if(延时小于500毫秒){return;} if(第一次){第一次=false;触发单击事件}
第一次看见硬件实现的思路,NB呀。 因为我水平菜,看不懂状态机。。。
@tianqi911: 做单片机.状态机是非常基础的一种东西.不懂不行的.
随便一个什么东西都要用到状态机的.
@吴瑞祥: 我只是觉的,以前没有鼓吹状态机思想的时候,哪些工程师照样做的非常好。所以我想应该有简单的方法,不一定所有的东西都要用状态机。
@tianqi911: 状态机是自动化一出现就有的了的.在单片机之前.就有了状态机
状态机只是一种概念.甚至随便一个程序都可以当成一个状态机.