打印

两次按键的时间间隔问题

[复制链接]
7931|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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


计时器+状态机

使用特权

评论回复
5
ayb_ice| | 2011-10-29 08:05 | 只看该作者
这是最基本的编程问题

使用特权

评论回复
6
栋Dong| | 2011-10-29 08:10 | 只看该作者
学习了

使用特权

评论回复
7
sun520up|  楼主 | 2011-10-29 08:44 | 只看该作者
5# ayb_ice
这基本的问题可以让客户下几万的单

使用特权

评论回复
8
刘前辈| | 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 ) {……}
   

、、

使用特权

评论回复
9
ayb_ice| | 2011-10-29 09:01 | 只看该作者
5# ayb_ice  
这基本的问题可以让客户下几万的单
sun520up 发表于 2011-10-29 08:44

都在做播放器类的项目了,还在问这样的最基本的编程问题,我只能是无语了

使用特权

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

使用特权

评论回复
11
NE5532| | 2011-10-29 09:45 | 只看该作者
9# ayb_ice  
     但恰恰这世上老板都是不怎么懂技术的(相对工程师),我的老板就因为当年做了个手机上的闪灯而注册了这个公司.很多人做了一辈子的技术却仍是穷光蛋一个,是因为他们不能将他们的技术放在最合适的产 ...
sun520up 发表于 2011-10-29 09:24


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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
sun520up + 1
12
highgear| | 2011-10-29 10:18 | 只看该作者
楼主,这个问题的难易程度不会跟随订单的数量而改变,也不会随你老板的钞票多寡改变。

NE5532说得很清楚了,楼主应听取众人的建议并自己认真思考
状态机意味着,你可以把按键功能用状态机划分为几个状态,同时用定时器来记时,你可以看看刚刚被顶出水面的 iceage 大侠的帖子,就是讲如何使用状态机的。

使用特权

评论回复
13
ayb_ice| | 2011-10-29 10:20 | 只看该作者
LZ是做BOSS的料,搞技术差点

使用特权

评论回复
14
yirongfu| | 2011-10-29 10:44 | 只看该作者
用哪款单片机呢?按键定时中断的时间间隔是多少?是否要检查按键释放?

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

建议楼主把你自己的思路用流程图表达出来,这样大家才好讨论,不然太泛。

使用特权

评论回复
15
sun520up|  楼主 | 2011-10-29 10:50 | 只看该作者
13# ayb_ice
俺只是个新手,随便说说而已,有什么得罪的地方还请见谅:kiss: :handshake

使用特权

评论回复
16
sun520up|  楼主 | 2011-10-29 10:50 | 只看该作者
8# 刘前辈
问题解决了,谢谢

使用特权

评论回复
17
sun520up|  楼主 | 2011-10-29 10:50 | 只看该作者
谢谢大家

使用特权

评论回复
18
highgear| | 2011-10-29 11:08 | 只看该作者
解决了就好,我本来想给你写一段伪代码,讲解思路,看来用不着了。

使用特权

评论回复
19
NE5532| | 2011-10-29 11:30 | 只看该作者
呵呵,恭喜恭喜!

使用特权

评论回复
20
sun520up|  楼主 | 2011-10-29 11:31 | 只看该作者
18# highgear
当然用的着啊,这个问题解决了只是暂时的,重要的是方法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

162

帖子

1

粉丝