【悬赏求助】launchpad捕获按键按下的时间

pz_cloud   2012-5-1 13:48 楼主
悬赏 2 分 芯积分已解决

最佳答案

shower.xu 查看完整内容

2012-5-1 13:48
方法1:延时或定时200ms,每两百毫秒检测一次按键端口,如果按下则累加一个计数值,如果松开则判断计数值,如果计数值大于5(5x200ms=1s)则为长按,否则为短按。延时简单,但只能用在系统资源要求不高的时候,所以最好用定时。 方法2:捕获中断+计时溢出中断,在按键按下时发生捕获中断,记录下当前值,松开时再记录下按键值,如果长按的话在计时溢出中断里记下次数,最后的时间就是两次捕获的差值+溢出的次数。
最近在学习launchpad,中断方面困难重重。。。我想实现这样一个功能:P1.1设为输入,连接一个按键,然后利用中断判断按键按下的时间,要是短按的话就LED1翻转,长按的话LED2翻转。
这样的话,我知道应该用捕获模式获取时间信息对吧,但是实现过程一直不成功。。。有几个问题,捕获的话设为上下沿都捕获,但是比如说,我现在发生一个上升沿进入中断了,然后短时间内信号变成下降沿,这个时候还能触发中断吗?我记得430好像不能中断嵌套啊。还有就是,因为TAR最大数到65536,那像我要实现按键长按(大概一两秒)的话不就不够用了吗?
在写捕获的代码时也总是不顺利,可是论坛上有关的例程又没有,有的其他型号的捕获例程我修改后在launchpad上也用不了,查的资料越多越觉得困惑了,有哪位大侠能就上面的情况给写个例程吗?感激不尽。。。

回复评论 (1)

方法1:延时或定时200ms,每两百毫秒检测一次按键端口,如果按下则累加一个计数值,如果松开则判断计数值,如果计数值大于5(5x200ms=1s)则为长按,否则为短按。延时简单,但只能用在系统资源要求不高的时候,所以最好用定时。
方法2:捕获中断+计时溢出中断,在按键按下时发生捕获中断,记录下当前值,松开时再记录下按键值,如果长按的话在计时溢出中断里记下次数,最后的时间就是两次捕获的差值+溢出的次数。
点赞  2012-5-1 13:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复