找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问这个单片机长按单击双击检测问题有什么好的解决办法吗?

[复制链接]
跳转到指定楼层
楼主
本帖最后由 风之痕于梦想 于 2021-12-31 15:23 编辑



这是我的模块key.c写了一个返回值key_value,作用是判断我的按键的功能(1=长按,2=单击,3=双击)
下面是我的主函数代码,有没有什么办法让我按键每次只对num加1,现在是由于返回的一直是2然后导致num一直加个不停,我实际要的是每次单击num才加1,不要一直加。
  1. #include "key.h"
  2. #define led P2
  3. int num=1;
  4. void main()
  5. {        
  6.      while(1)
  7.      {        
  8.           if(keypros()==2)
  9.           {
  10.           num++;
  11.           }
  12.           led=~(0xff<<num);
  13.       }               
  14. }


复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2021-12-30 21:11 | 只看该作者
顶一下
回复

使用道具 举报

板凳
ID:8222 发表于 2021-12-30 21:37 | 只看该作者
一次考试,教授让学生根据鸟脚特征说出鸟的名称。一学生平时不认真听课,眼看就要交白卷,急忙把裤腿卷起,指着脚对教授说道:你知道我叫什么名字吗?
回复

使用道具 举报

地板
ID:161164 发表于 2021-12-30 23:06 | 只看该作者
代码要贴全一点
我们哪知道为什緳返回的一直是2?
回复

使用道具 举报

5#
ID:584814 发表于 2021-12-31 10:52 | 只看该作者
如果看不到全部或看不全关键代码,只要改这一句就可以:
          if(keypros()==x)
回复

使用道具 举报

6#
ID:313048 发表于 2021-12-31 14:17 | 只看该作者
keypros()这函数里面的初始值不要用静态变量,你要保证每次进这个函数,他的值都为初始化,只有产生1、2、3的时候输出值才变,否者都为0。
回复

使用道具 举报

7#
ID:893997 发表于 2021-12-31 15:20 | 只看该作者
本帖最后由 风之痕于梦想 于 2021-12-31 15:22 编辑
AUG 发表于 2021-12-31 14:17
keypros()这函数里面的初始值不要用静态变量,你要保证每次进这个函数,他的值都为初始化,只有产生1、2、3 ...

懂了。
回复

使用道具 举报

8#
ID:332444 发表于 2022-1-1 10:59 | 只看该作者
回复

使用道具 举报

9#
ID:543220 发表于 2022-1-5 17:58 | 只看该作者
那你每次状态变量用完 需要 重新清0
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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