找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2598|回复: 8
收起左侧

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

[复制链接]
ID:893997 发表于 2021-12-30 19:35 | 显示全部楼层 |阅读模式
本帖最后由 风之痕于梦想 于 2021-12-31 15:23 编辑

51hei图片_20211230200434.png

这是我的模块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. }


复制代码





回复

使用道具 举报

ID:301191 发表于 2021-12-30 21:11 | 显示全部楼层
顶一下
回复

使用道具 举报

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

使用道具 举报

ID:161164 发表于 2021-12-30 23:06 | 显示全部楼层
代码要贴全一点
我们哪知道为什緳返回的一直是2?
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

懂了。
回复

使用道具 举报

ID:332444 发表于 2022-1-1 10:59 | 显示全部楼层
回复

使用道具 举报

ID:543220 发表于 2022-1-5 17:58 | 显示全部楼层
那你每次状态变量用完 需要 重新清0
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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