OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4438|回复: 7

请教寄存器版本的按键的问题

[复制链接]

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-11
在线时间
0 小时
发表于 2013-11-17 15:01:10 | 显示全部楼层 |阅读模式

u8 KEY_Scan(u8 mode)

 static u8 key_up=1;//按键按松开标志
 if(mode)key_up=1;  //支持连按   
 if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
 {
  delay_ms(10);//去抖动
  key_up=0;
  if(KEY0==0)return 1;
  else if(KEY1==0)return 2;
  else if(KEY2==0)return 3;
  else if(KEY3==1)return 4;
 }else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;     
  return 0;// 无按键按下
}

为什么mode等于0就不支持连续按。Mode等于1就支持连按呢

。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-17 16:45:02 | 显示全部楼层
因为,static u8 key_up,用来标记了。
后面if判断限制了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-11
在线时间
0 小时
 楼主| 发表于 2013-11-18 00:05:27 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
回复【2楼】正点原子:
---------------------------------
mode等0和等1key_up不都是1么。
。。
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-11
在线时间
0 小时
 楼主| 发表于 2013-11-18 00:09:37 | 显示全部楼层
回复【3楼】无解尘:
-----------
回复【2楼】正点原子:
---------------------------------
额,我明白了,static u8 key_up=1的意思是每次进入这个扫描函数,key-up都会给一次1么?
。。
回复 支持 反对

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-11-18 00:32:03 | 显示全部楼层
回复【4楼】无解尘:
---------------------------------
不是进一次给一次一,是这句话不会在对这个值赋值,去看看c语言吧!静态变量
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-11
在线时间
0 小时
 楼主| 发表于 2013-11-19 16:25:49 | 显示全部楼层
回复【5楼】as564335sa:
---------------------------------
这条程序我读明白了,大哥能告诉一下什么时候用静态变量比较合适么?回复【5楼】as564335sa:
---------------------------------
。。
回复 支持 反对

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-11-19 17:48:34 | 显示全部楼层
回复【6楼】无解尘:
-----------------------------
举个例子 某个函数:unsigned char XXXX(){
                                        unsigned char =0;
                                        ++;
                                                         return ;}
这个函数要每次返回P的值,每次执行这个函数P就加1,P是要累加的,不写成static unsigned char =0;的话,下次再运行这个函数P就清零了,
就是说当某个变量不希望被初始化,只有程序语句才能对其改变的时候,就用静态变量,唉语文不好,不知道懂了没,好好看看书吧!还是自己领悟来得快
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-11
在线时间
0 小时
 楼主| 发表于 2013-11-20 08:31:28 | 显示全部楼层
懂了,讲的很明白!回复【7楼】as564335sa:
---------------------------------
懂了,讲的很明白!
。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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