标题: 请问这个单片机长按单击双击检测问题有什么好的解决办法吗? [打印本页]

作者: 风之痕于梦想    时间: 2021-12-30 19:35
标题: 请问这个单片机长按单击双击检测问题有什么好的解决办法吗?
本帖最后由 风之痕于梦想 于 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. }


复制代码






作者: 人工置顶员    时间: 2021-12-30 21:11
顶一下
作者: 温xyz    时间: 2021-12-30 21:37
一次考试,教授让学生根据鸟脚特征说出鸟的名称。一学生平时不认真听课,眼看就要交白卷,急忙把裤腿卷起,指着脚对教授说道:你知道我叫什么名字吗?
作者: lkc8210    时间: 2021-12-30 23:06
代码要贴全一点
我们哪知道为什緳返回的一直是2?
作者: man1234567    时间: 2021-12-31 10:52
如果看不到全部或看不全关键代码,只要改这一句就可以:
          if(keypros()==x)

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

懂了。

作者: xianfajushi    时间: 2022-1-1 10:59
https://blog.csdn.net/xianfajushi/article/details/82281411

作者: a2748446    时间: 2022-1-5 17:58
那你每次状态变量用完 需要 重新清0




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1