这个,其实你需要先设立一个标准,即什么算是长按,什么算是短按,什么算是双击,然后再说实现判断的事情。
比如长按和短按的区别可以是
按下后,在1秒内没有放开的算是长按,否则算短按
在1秒内2次按下就是双击
这样一来标准有了,代码实现就清楚了,
无非就是 按键触发中断开始计数,如果在1秒内释放了算短按,否则为长按,如果在1秒内触发了2次(需要有临时状态标志变量为参考),则为双击。
程序的话自行用状态机写一个就行,不难
在51单片机上面,可以用一个定时器记录系统到目前为止运行时间,以ms为单位,然后在主循环里面循环检测那个IO的电平,电平出现变化则开始用一个变量1保存当前运行时间,然后再次变化的时候用变量2保存运行时间,这样两个变量相减得到按键按下的时间