两次按键的时间间隔问题

[复制链接]
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 谢谢~~

查看全部评分

dong_abc 发表于 2011-10-29 14:53 | 显示全部楼层
楼上辛苦了,很常用的结构。
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说得不错,确实是基本问题,按键连击。
金字塔陷阱 发表于 2011-10-30 13:59 | 显示全部楼层
用定时器啊!!!
流行音乐 发表于 2011-10-30 21:17 | 显示全部楼层
正因为中国做技术的是穷光蛋,所以技术落后。别指望穷光蛋能把或愿意把技术搞上去。
578391555 发表于 2011-10-30 21:54 | 显示全部楼层
路过
xiaoshishuai 发表于 2014-4-2 15:06 | 显示全部楼层
正因为中国做技术的是穷光蛋,所以技术落后。别指望穷光蛋能把或愿意把技术搞上去。
tabu 发表于 2014-4-4 14:58 | 显示全部楼层
学习了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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