按键查询求助:规定时间内按键次数统计,有请高手!·

[复制链接]
2584|16
 楼主| kaavie 发表于 2014-1-17 23:18 | 显示全部楼层 |阅读模式
本帖最后由 kaavie 于 2014-2-21 13:18 编辑

欲实现的功能:

1)按1下,开灯开MOS;
2)2S内单击5次置位FLOCK,再在2S内单击5次清空FLOCK;
3)连续按10S置位FDM10S;
4)在连按了10S后,在10S内未按键置位FUP10S并退出按键查询。

输出口:GP4,GP5,输入口:GPIO.KEY。
 楼主| kaavie 发表于 2014-1-18 10:59 | 显示全部楼层
求指教!
NE5532 发表于 2014-1-18 17:49 | 显示全部楼层
1.楼主写得比较认真,注释很好,但是汇编希望一行一注释。
2.此程序需使用状态机来完成。

评分

参与人数 1威望 +1 收起 理由
kaavie + 1 赞一个!

查看全部评分

lnulibin 发表于 2014-1-19 19:16 | 显示全部楼层
本帖最后由 lnulibin 于 2014-1-19 19:28 编辑

这种程序要求需要点功力呀。
如果,用户再要求加上1602的液晶屏幕显示控制,或者是数码管的扫描驱动,就更见功力了。
呵呵,哥们儿,祝你好运。:)

评分

参与人数 1威望 +3 收起 理由
kaavie + 3 很给力!

查看全部评分

 楼主| kaavie 发表于 2014-1-19 22:01 | 显示全部楼层
谢谢哥们提醒。看起来简单做起来却费脑筋。
yewuyi 发表于 2014-1-20 11:34 | 显示全部楼层
在delay的过程中,MCU相当于大脑短路

评分

参与人数 1威望 +1 收起 理由
kaavie + 1 淡定

查看全部评分

 楼主| kaavie 发表于 2014-1-21 22:12 | 显示全部楼层
有考虑进去。毕竟只查询按键。闪灯时超过0.1S的任何延时外部输入是不会取到作用的。待按键查询完就会置标志,再回主程序完成相应功能。
非著名中医 发表于 2014-1-22 12:41 | 显示全部楼层
CALL DEL10MS ;
我一般在延时的过程中也不停的判断是否有键按下,这样可以真正的防止干扰。

评分

参与人数 1威望 +1 收起 理由
kaavie + 1 淡定

查看全部评分

兰天白云 发表于 2014-1-24 17:06 | 显示全部楼层
BTFSS GPIO,KEY
        NOP
        CALL DEL10MS                ;防抖
没有按键怎么不跳出去?

评分

参与人数 1威望 +1 收起 理由
kaavie + 1 赞一个!

查看全部评分

 楼主| kaavie 发表于 2014-1-24 17:20 | 显示全部楼层
置标志再跳出。
 楼主| kaavie 发表于 2014-2-9 13:34 | 显示全部楼层
以上的程序要改变按键处理方式。有没有高手指点下,用C的也行,哪怕流程图也行。
yewuyi 发表于 2014-2-9 16:58 | 显示全部楼层
写按键响应程序,必然的选择就是状态机

评分

参与人数 1威望 +1 收起 理由
kaavie + 1 赞一个!

查看全部评分

 楼主| kaavie 发表于 2014-2-9 18:11 | 显示全部楼层
本帖最后由 kaavie 于 2014-2-18 09:14 编辑

高手帮忙,把以下欲实现的功能:

1)2S内单击5次置位FLOCK,再在2S内单击5次清空FLOCK;
2)连续按10S置位FDM10S;
3)在连按了10S后,在10S内未按键置位FUP10S并退出按键查询。

导入状态机,再从状态机导出程序,按键IO可以任选,谢谢啦。
 楼主| kaavie 发表于 2014-2-22 22:31 | 显示全部楼层
本帖最后由 kaavie 于 2014-2-23 15:02 编辑

有谁能帮我啊!?主要是2)2S内单击5次置位FLOCK,再在2S内单击5次清空FLOCK没有实现,其他都OK了。要是没有时间(2S)限制就好编多了。
 楼主| kaavie 发表于 2014-2-28 18:50 | 显示全部楼层
本帖最后由 kaavie 于 2014-2-28 18:51 编辑

补充下,不用单片机的定时器完成。
yklstudent 发表于 2014-2-28 22:27 | 显示全部楼层
感觉还是用定时器加状态机来做
按键读取与按键处理应该分开来做
分别采取状态机来做
按键实现短按和长按
按键处理根据按键是短按或者长按分别处理
余下省略500字
这样做感觉好做。。。。些

评分

参与人数 1威望 +3 收起 理由
kaavie + 3 很给力!

查看全部评分

 楼主| kaavie 发表于 2014-3-1 23:33 | 显示全部楼层
本帖最后由 kaavie 于 2014-3-1 23:34 编辑

:victory:不用状态机和定时器刚实现了,只是用了延时10MS为单位。分出4种状态,再把2S分成5段。状态为按下松开时判断每段时间。要不是把减法的借位搞反了,进度会提前两个月。借位C=0,不借位C=1。还是结帖给分,谢谢各位的关心:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:科技永无止境!

19

主题

124

帖子

1

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