winnie 发表于 2009-3-21 14:31:46

PIC16C54 RB5按键在1秒之内连续按键处理??

想用PIC16C54 RB5为按键,在1秒之内,当按1下的时候,执行A事件,当连续按2下的时候,执行B事件,当连续按3下的时候,执行C事件,该怎么来做软件可以实现这个功能?

winnie 发表于 2009-3-21 14:31:55

设置3个标志位,分别作为第一,二,三次按下标志down_1,down_2,down_3

当有键按下的时候:

                                  down_2为1吗?

                                 是:则down3=1, ...

                                 否:down_1为1吗?

                                    是:则down2=1, ...

                                 否:则down_1=1,同时启动定时器,定时1秒

当定时器定时1秒到:按照down_3 , down_2, down_1的优先顺序判断这些标志位,

就可以正确知道应该执行哪一个功能。

注:上面的方法没有检测按键是否释放,因为有的人就是喜欢按住你的按键,舍不得放开,呵呵;按照上面的思路,

如果按住键不放、单击一下然后又按住不放、双击后又按一次不放开,都会使down_1,down_2,down_3 被相继置位,1秒后肯定执行down_3对应的功能。
页: [1]
查看完整版本: PIC16C54 RB5按键在1秒之内连续按键处理??