发新帖我要提问
12
返回列表
打印

两次按键的时间间隔问题

[复制链接]
楼主: sun520up
手机看帖
扫描二维码
随时随地手机跟帖
21
highgear| | 2011-10-29 14:40 | 只看该作者 回帖奖励 |倒序浏览
状态机的伪代码:
在定时中断或保证定时调用下面的过程,假设间隔为 10 ms.

switch (state) {
   case 0:
       LED = 0; //turn off led
       if (keyPressed) {   //有键按下
           timer = 150;
           state++;   //进入下一个状态
       }
       break;
   
   case 1:
       LED_Blink();  //led 闪烁
         if (timer == 0) {
           state++;   //1.5s 外的状态
        }
        else {
           timer--;
           if (keyPressed) {   //1.5s 内有键按下
              PlayMusic();
              timer = 150;      //根据需要,也可以用新的另一个状态来处理
            }
        }
        break;
   case 2:
       if (keyPressed)
          state = 0;   
       break;

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
sun520up + 1 谢谢~~
22
dong_abc| | 2011-10-29 14:53 | 只看该作者
楼上辛苦了,很常用的结构。

使用特权

评论回复
23
sysdriver| | 2011-10-29 18:52 | 只看该作者
感觉LZ没有理清思路
1.5S 之前只按一次键,则 led  闪烁。
1.5S 之前有2次以上按键,则 led闪烁 且 播放声音。
1.5S 之后只要有按键,则关闭声音和 led。

实际上1.5S之后跟前面2个没有关系,只要弄个标记位来标记它是1.5S之后就行了,重点就是怎么在1.5S内判断按键次数,5说得不错,确实是基本问题,按键连击。

使用特权

评论回复
24
金字塔陷阱| | 2011-10-30 13:59 | 只看该作者
用定时器啊!!!

使用特权

评论回复
25
流行音乐| | 2011-10-30 21:17 | 只看该作者
正因为中国做技术的是穷光蛋,所以技术落后。别指望穷光蛋能把或愿意把技术搞上去。

使用特权

评论回复
26
578391555| | 2011-10-30 21:54 | 只看该作者
路过

使用特权

评论回复
27
xiaoshishuai| | 2014-4-2 15:06 | 只看该作者
正因为中国做技术的是穷光蛋,所以技术落后。别指望穷光蛋能把或愿意把技术搞上去。

使用特权

评论回复
28
tabu| | 2014-4-4 14:58 | 只看该作者
学习了,谢谢

使用特权

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

本版积分规则