找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按下一次KEY1实现数码管一直加一,按下KEY2后,停止加一

[复制链接]
跳转到指定楼层
楼主

如何在此基础上,按下按键KEY2=P3^2,实现数码管一直加一,按下按键KEY2=P3^3后,实现停止加一。我经过反复实验,没有找到解决的办法,(只能做到按下按键加一,没办法做到按下一次按键后,一直加一)因为是初学者的缘故,很难想出合适的答案,希望各位大佬能够给予帮助。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1007932 发表于 2022-10-22 10:28 | 只看该作者
用循环,按key1让if条件为1,按key2让if条件为0,if条件要用中间变量。先判断key1,key2是否按下,按下则给中间变量赋相应的值,否则中间变量维持上一次的值,最后大循环。但key最好还是用外部中断。
大概是这样:
  1. while(1)
  2. {
  3.         if(key1==0) i=1;
  4.         if(key2==0) i=0;
  5.         if(i)
  6.         {
  7.                   display(number);
  8.                   number++;
  9.         }               
  10. }
复制代码
回复

使用道具 举报

板凳
ID:1048693 发表于 2022-10-22 11:49 | 只看该作者
增加延时来判断,持续按下某按键多长时间后,在程序内持续加1
回复

使用道具 举报

地板
ID:1048693 发表于 2022-10-22 11:50 | 只看该作者
在程序内加一个延时判断,当按键按下大于多长时间后,在程序内使数码管持续加1
回复

使用道具 举报

5#
ID:384109 发表于 2022-10-22 14:29 | 只看该作者
按键判断,按键处理,都要做成单独的模块,增加相应的判断标志
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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