新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2012-10-20
- 在线时间
- 0 小时
|
发表于 2012-10-20 11:03:20
|
显示全部楼层
如果选择了0模式的话 每次进入scan函数
static u8 key_up=1;
难道不会把key_up置1吗?
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;// 无按键按下
}
你好,我是刚接触这块,以前做桌面应用程序的,
static u8 key_up=1;//按键按松开标志
if(mode)key_up=1; //支持连按
对这里依然不理解,
mode从main函数传过来的是0,按理说,每次调用KEY_Scan(0)时都不会执行到
if(mode)key_up=1; //这里的赋值.
我把这行去掉,把程序改成:
static u8 key_up=1;//按键按松开标志
key_up=1; //支持连按
就会出现问题(不支持连按)
按我的理解,这里不过是对这个变量多了次赋值.为什么就会出现这个问题了.
对电子这块,不太懂,实在没理解. |
|