OpenEdv-开源电子网

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

按键扫描-返回值疑问

[复制链接]

51

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
347
金钱
347
注册时间
2012-5-20
在线时间
0 小时
发表于 2012-5-24 10:58:46 | 显示全部楼层 |阅读模式
 u8 KEY_Scan(void) 
{   
 static u8 key_up=1;//按键按松开标志  
 JTAG_Set(JTAG_SWD_DISABLE); 
 if(key_up&&(KEY0==0||KEY1==0||KEY2==1)) 
 { 
  delay_ms(10);//去抖动  
  key_up=0; 
  if(KEY0==0) 
  { 
   JTAG_Set(SWD_ENABLE); 
   return 1; 
  }else if(KEY1==0) 
  { 
   JTAG_Set(SWD_ENABLE); 
   return 2; 
  }else if(KEY2==1) 
  { 
   JTAG_Set (SWD_ENABLE); 
   return 3; 
  } 
  }else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;        
 JTAG_Set(SWD_ENABLE); 
 return 0;// 无按键按下 

假设现在是key0按下,那么
if(KEY0==0) 
  { 
   JTAG_Set(SWD_ENABLE); 
   return 1; 
  }
执行完以后,返回一个1,但是程序还要继续执行啊,继续执行
 JTAG_Set(SWD_ENABLE); 
 return 0;// 无按键按下 
此时不就又返回一个0吗?(不知道是我哪理解错了,求指教)
我认为改为这样是对的,但是调试后不对,不知道为什么是哪理解错了。
else if(KEY0==1&&KEY1==1&&KEY2==0)
   {
   key_up=1;     
   JTAG_Set(SWD_ENABLE);
   return 0;// 无按键按?
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-24 11:48:03 | 显示全部楼层
当然,是返回0了.
我这个案件扫描程序做了防止一次按下,多次触发的功能.所以你每按下一次,就只能触发一次,不会多次触发.要想多次触发,就按了松开,再按,再松开,再按...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
347
金钱
347
注册时间
2012-5-20
在线时间
0 小时
 楼主| 发表于 2012-5-24 13:25:06 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
您的意思就是假设KEY0先按下,先返回1,在返回0,执行一次可以返回2次数值.对吗
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-24 13:50:26 | 显示全部楼层
是的.代码就是这么设计的.刚按下的时候,返回按键键值,后面再扫描,则返回0,直到第二次按下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
347
金钱
347
注册时间
2012-5-20
在线时间
0 小时
 楼主| 发表于 2012-5-24 15:12:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
谢谢原子师兄!
回复 支持 反对

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-5-29
在线时间
0 小时
发表于 2012-5-29 13:14:45 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
这个 key.c的函数  如果我把最后的return 0 去掉   结果得到的按键 t=KEY_Scan()  的值为什么会一直是1啊,
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 02:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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