找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3743|回复: 14
打印 上一主题 下一主题
收起左侧

51单片机怎样用按键控制长短按切换界面,求程序思路

  [复制链接]
楼主
ID:123289 发表于 2019-7-30 08:31 | 显示全部楼层
要点:做一个计数器CJ来判定长按与短按,CJ的规则如下:
1、CJ计数只发生于定时器的中断服务程序中,每次中断+1,计满不再计,即不回0。
2、CJ计数只发生于键按下的时候,未按下不计。
3、做一个键状态判定触发标记:B_OK,如果键未按下,但CJ<>0,则置B_OK=1,表示是判断键状态的时候了。
4、当B_OK=1,判断键状态的界定法则是:CJ<某个值为短按,CJ>某个值为长按,某个值是多少由你决定。建议事先将长短两个界定值放置在某个寄存器中,这样可以随意变更界定值。
5、状态界定完成后将:B_OK清0、CJ清0以备下次再界定。
回复

使用道具 举报

沙发
ID:123289 发表于 2019-7-30 08:40 | 显示全部楼层
设置界面、常规界面各做一个标记如:B_SET、B_NOR。在哪个界面哪个置1。再多的界面也这样做。如果只有两个界面可以只用一个标记。界面分层叠进叠退时还需要增加次序(层面记忆),这里不说了。
长按以后的动作是:B_SET=1、其它B_NOR=0。
短按以后的动作是:B_NOR=1、其它B_SET=0。
回复

使用道具 举报

板凳
ID:123289 发表于 2019-7-30 08:41 | 显示全部楼层
界面的切换,发生于B_SET、B_NOR有变化的时候。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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