找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: xiao_yp2014
收起左侧

状态机按键扫描,看懂了会增长你的功力。。。。

  [复制链接]
黑夜的星 发表于 2017-2-27 14:40 | 显示全部楼层
学习一下,
回复

使用道具 举报

aa1151953633 发表于 2017-3-14 09:46 | 显示全部楼层
已收藏,这个我之前也有玩过,不过你的写得更简洁
回复

使用道具 举报

sky6595418 发表于 2017-3-17 13:58 | 显示全部楼层
谢谢啊,
回复

使用道具 举报

1033941024 发表于 2017-3-18 08:38 | 显示全部楼层
谢谢楼主分享,学习了
回复

使用道具 举报

goty2000 发表于 2017-4-1 19:21 | 显示全部楼层
哈哈  学习中,可以彻底摆脱 while(KEY==0); 了
回复

使用道具 举报

xiuyueyuan2013 发表于 2017-4-2 21:11 | 显示全部楼层
收藏了学习学习
回复

使用道具 举报

dzbj 发表于 2017-4-3 10:56 | 显示全部楼层
一直用这种方法 但这种方法有个问题是switch每次只执行一个 完毕后跳出 下次再进入才又匹配执行哪个分支 所以在程序多的时候效率很低

一般仅仅是按键检测我是用if+bit一个标记来做 if一个语句开销的cpu时间少 顺序检测一下再做个标记 整体比用状态机快

多任务用状态机更好
回复

使用道具 举报

asiont 发表于 2017-5-19 23:45 | 显示全部楼层
感谢Lzzzzzz
回复

使用道具 举报

TDS 发表于 2017-5-22 19:26 | 显示全部楼层
学习了
回复

使用道具 举报

zhang00956 发表于 2017-9-18 16:49 | 显示全部楼层
正好最近一直为这个问题烦忧,多谢分享。回去慢慢研究研究
回复

使用道具 举报

zhang00956 发表于 2017-9-18 17:24 | 显示全部楼层
非常好的东西值得学习
回复

使用道具 举报

天使之泪雨扬 发表于 2018-1-4 21:44 | 显示全部楼层
学习了,以前不明白,现在终于豁然开朗
回复

使用道具 举报

liqinag750622 发表于 2018-1-15 08:47 | 显示全部楼层
好东西  赞一个
回复

使用道具 举报

范儿—— 发表于 2018-1-15 09:35 | 显示全部楼层
666,果然大佬!!
回复

使用道具 举报

Quim11 发表于 2018-3-21 14:08 | 显示全部楼层
likaienjoy 发表于 2015-7-21 22:02
**** 作者被禁止或删除 内容自动屏蔽 ****

长按的话只需要在第二状态里加个if(!key_press)里面弄个i来记进入该状态的次数,比如说记到100(100*10ms),及长按1s的时间,然后你就可以设置长按的动作了。
回复

使用道具 举报

bhjyqjs 发表于 2018-3-23 09:22 | 显示全部楼层
状态机检测按钮程序写的还是很好的,条理清晰,注释清楚,很不错。但在主程序中反复检测按钮,就有些违背楼主设计初衷了,手一抖,就是几次按键了。应该设计一个10mS的定时,在定时中断里调用按键检测程序。
回复

使用道具 举报

zhnjun63 发表于 2018-3-23 16:56 | 显示全部楼层
sbit key_sr1 = P1^6;  // 按键输入口

这是只有一个按钮的情况下的编程,现实应用中,使用一个按钮的应用极少。如果按钮多于2个,这个程序应该如何扩展?

求赐教!
回复

使用道具 举报

qq3417 发表于 2018-4-14 21:21 | 显示全部楼层
谢谢分享
回复

使用道具 举报

奋斗de小青年 发表于 2018-4-14 21:49 | 显示全部楼层
对于状态机我更多是在FPGA中用到,在单片机中使用我倒是第一次看到,感觉很不错
回复

使用道具 举报

热带雨林 发表于 2018-4-14 23:41 来自手机 | 显示全部楼层
不错,值得学习
回复

使用道具 举报

持勤补拙 发表于 2018-4-15 00:21 | 显示全部楼层
学习了,感谢大师
回复

使用道具 举报

szchen2006 发表于 2018-4-24 14:07 | 显示全部楼层
楼主举的这个例子很好,很典型,让我真正理解了状态机的概念。
回复

使用道具 举报

yzh123 发表于 2018-4-24 20:37 来自手机 | 显示全部楼层
学习,
回复

使用道具 举报

无时崩溃 发表于 2018-4-25 07:28 来自手机 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

tieq1952 发表于 2018-5-26 07:02 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

15942379927 发表于 2018-5-26 08:50 | 显示全部楼层
谢谢分享,好东西
回复

使用道具 举报

shui0419 发表于 2018-5-31 11:19 | 显示全部楼层
很好的资料,代码整洁,可读性高,谢谢楼主
回复

使用道具 举报

zero19971226 发表于 2018-5-31 16:03 | 显示全部楼层
学习一下,谢谢楼主
回复

使用道具 举报

emlsan 发表于 2018-7-23 18:20 | 显示全部楼层
学习了
回复

使用道具 举报

wdliming 发表于 2018-7-23 22:29 | 显示全部楼层
赞一个!!
回复

使用道具 举报

zhouqiang 发表于 2018-7-26 17:28 来自手机 | 显示全部楼层
不错感谢分享!
回复

使用道具 举报

fangfei423 发表于 2019-1-18 08:54 | 显示全部楼层
学习学习
回复

使用道具 举报

awer 发表于 2019-1-18 17:08 | 显示全部楼层
不好意思,才看到!这样的程序该怎么做防抖处理呢,这样直接用对程序还是会有一定的影响吧。每循环一次按键值都会清零是不是对程序也有点影响
回复

使用道具 举报

binyv 发表于 2019-3-11 22:08 来自手机 | 显示全部楼层
果然可以达到要求!
回复

使用道具 举报

wdliming 发表于 2019-4-2 09:25 | 显示全部楼层
谢谢分享,再次看了,还是有收获
回复

使用道具 举报

bingshuihuo 发表于 2019-4-25 09:16 | 显示全部楼层
听说过状态机按键很好,一直还没学会,谢谢楼主讲解
回复

使用道具 举报

sunmwang450 发表于 2019-5-17 15:40 | 显示全部楼层
下来学习学习,先顶一个
回复

使用道具 举报

Strongest丶星空 发表于 2019-5-17 18:41 | 显示全部楼层
学到了不同的按键扫描我自创了一种按键扫描不过感觉局限可大楼主可以看看
回复

使用道具 举报

Strongest丶星空 发表于 2019-5-17 18:46 | 显示全部楼层
学到了不同按键扫描的方法,我是单片机的初学者,我自创了一种按键方式楼主可以看看,(PS:这不是装逼,只是让楼主看看有多大局限)if(key==0)
                {
                        while(1)
                        {
                                if(key==1)
                                {
                                                return  k;
                                }
                        }
                }
回复

使用道具 举报

sunmwang450 发表于 2019-5-23 16:05 | 显示全部楼层
学习学习,多谢LZ
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表