[mw_shl_code=c,true]u8 KEY_SCAN(void)
{ static u8 key_up=1;
if(key_up&&key按下)
{delay_us(10);
key_up=0;
{return key_value;}
}
else if(key没有按下)key_up=1;
}[/mw_shl_code]
看过视频教程后,我对这段代码的理解是这样的,假如说每100ms扫描一次,那么一秒钟就会扫描10次,在第一次扫描后假如说我之前没有按键,那么程序会执行到if语句里面,所以key_up被置0;当我一直按着不放时,当我第二次扫描时,由于key_up是静态变量,那么便会执行else if语句,则将key_up置为1,程序理所当然会执行if里面的语句,此时便会又一次返回key_value的值,可是按照不支持连续按键的意思,如果我此时还不松开按键,那么便不会是一次成功的按键,这样不是跟代码有矛盾吗,所以我不明白为什么else if(key没有按下)后面要将key_up=1;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>