两次按键的时间间隔问题

[复制链接]
 楼主| sun520up 发表于 2011-10-28 21:10 | 显示全部楼层 |阅读模式
现在项目的要求是按键按一次LED闪烁,在1.5S内如按键再次按下就播放声音且LED闪烁,1.5S之后按键按下LED关闭。
      在播放声音和LED闪烁的时候如1.5S内按键按下仍在此状态循环,1.5S之后按键按下则关闭声音和LED。
      按键扫描是在定时中断里实现的,有键按下就设置相应的标志位。
      现在的问题是如何判断两次按键的时间间隔?
NE5532 发表于 2011-10-28 21:14 | 显示全部楼层
扫描按键的中断里加软件定时器就OK了啊
 楼主| sun520up 发表于 2011-10-28 21:19 | 显示全部楼层
2# NE5532
但如果在1.5S内按键多次按下,定时器就要被清0然后重新计时,这点该如何实现?
NE5532 发表于 2011-10-28 21:58 | 显示全部楼层
2# NE5532  
但如果在1.5S内按键多次按下,定时器就要被清0然后重新计时,这点该如何实现?
sun520up 发表于 2011-10-28 21:19


计时器+状态机
ayb_ice 发表于 2011-10-29 08:05 | 显示全部楼层
这是最基本的编程问题
栋Dong 发表于 2011-10-29 08:10 | 显示全部楼层
学习了
 楼主| sun520up 发表于 2011-10-29 08:44 | 显示全部楼层
5# ayb_ice
这基本的问题可以让客户下几万的单
刘前辈 发表于 2011-10-29 08:58 | 显示全部楼层
本帖最后由 刘前辈 于 2011-10-29 09:07 编辑

变个思路:不是挠头1.5秒计时怎么办;而是判断第二次按键与前一次释放键之间的时间T是多少。

第二次按键判断,如果T<1.5秒,有效……;  如果T>1.5秒,无效处理……

这样只需要用到你已有的程序,不用填写新程序了。

     if (  二次键按下 &&  一次键释放)T1=T;        // 记录 T
    if (  T1<1.5 S ) {……}
   

、、
ayb_ice 发表于 2011-10-29 09:01 | 显示全部楼层
5# ayb_ice  
这基本的问题可以让客户下几万的单
sun520up 发表于 2011-10-29 08:44

都在做播放器类的项目了,还在问这样的最基本的编程问题,我只能是无语了
 楼主| sun520up 发表于 2011-10-29 09:24 | 显示全部楼层
9# ayb_ice
     但恰恰这世上老板都是不怎么懂技术的(相对工程师),我的老板就因为当年做了个手机上的闪灯而注册了这个公司.很多人做了一辈子的技术却仍是穷光蛋一个,是因为他们不能将他们的技术放在最合适的产品和市场上。也有很多人以为自己技术很牛X,对一些简单的问题表示不屑.但到底什么技术叫牛X呢?卫星?火箭?导弹?.....?又能有几人能做那个?
NE5532 发表于 2011-10-29 09:45 | 显示全部楼层
9# ayb_ice  
     但恰恰这世上老板都是不怎么懂技术的(相对工程师),我的老板就因为当年做了个手机上的闪灯而注册了这个公司.很多人做了一辈子的技术却仍是穷光蛋一个,是因为他们不能将他们的技术放在最合适的产 ...
sun520up 发表于 2011-10-29 09:24


说得好,产品的最终目的是赚钱,为了搞技术而搞技术的是穷光蛋,但是这句话不是说技术不重要,而是说技术是基础,没有基础,一切空想都无法实现。

评分

参与人数 1威望 +1 收起 理由
sun520up + 1

查看全部评分

highgear 发表于 2011-10-29 10:18 | 显示全部楼层
楼主,这个问题的难易程度不会跟随订单的数量而改变,也不会随你老板的钞票多寡改变。

NE5532说得很清楚了,楼主应听取众人的建议并自己认真思考
状态机意味着,你可以把按键功能用状态机划分为几个状态,同时用定时器来记时,你可以看看刚刚被顶出水面的 iceage 大侠的帖子,就是讲如何使用状态机的。
ayb_ice 发表于 2011-10-29 10:20 | 显示全部楼层
LZ是做BOSS的料,搞技术差点
yirongfu 发表于 2011-10-29 10:44 | 显示全部楼层
用哪款单片机呢?按键定时中断的时间间隔是多少?是否要检查按键释放?

定时器有几个?如果定时器够用,可以再用一个定时器来计算两次按键的延时。当然,这其中会有一点误差,来自进入定时器中断和按键按下时间点之间的时间差。
我想可以用简单的原始的办法去解决,多设几个标志位,配合软件计数器,应该可以解决的。1.5s内多次按下,定时器虽然被清零了,但标志位可以记录按按键动作次数。当然,如果你要检查按键释放,那就另当别论,那就复杂了。但如果不检查按键释放,可能按键体验会打折扣。

建议楼主把你自己的思路用流程图表达出来,这样大家才好讨论,不然太泛。
 楼主| sun520up 发表于 2011-10-29 10:50 | 显示全部楼层
13# ayb_ice
俺只是个新手,随便说说而已,有什么得罪的地方还请见谅:kiss: :handshake
 楼主| sun520up 发表于 2011-10-29 10:50 | 显示全部楼层
8# 刘前辈
问题解决了,谢谢
 楼主| sun520up 发表于 2011-10-29 10:50 | 显示全部楼层
谢谢大家
highgear 发表于 2011-10-29 11:08 | 显示全部楼层
解决了就好,我本来想给你写一段伪代码,讲解思路,看来用不着了。
NE5532 发表于 2011-10-29 11:30 | 显示全部楼层
呵呵,恭喜恭喜!
 楼主| sun520up 发表于 2011-10-29 11:31 | 显示全部楼层
18# highgear
当然用的着啊,这个问题解决了只是暂时的,重要的是方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

162

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部