void key_scan(void)
{
present_key_dig++;
if(present_key_dig>=3900) //延时?
present_key_dig=1;
if(key_down)
return;
if(pre_key_dig!=present_key_dig)
{ if(pre_key_dig!=0)return;
else prekey=0; //松手检测?
}
else if( pre_key_dig==present_key_dig) prekey=1;
if(P3.4&&!P12.2&&!P12.1)
{
keyesc=0;
pre_key_dig=0;
present_key_dig=1;
return;
}
else if( !P3.4&&P12.2&&P12.1)
keyesc=1;
if(keyesc)
{
return; }
else if(!prekey)
{
pre_key_dig=present_key_dig;
return;
}
if(!P3.4)
{
if(debuge_f==0)
{
key_down=1;
debuge_f=1;
on_led=1;
off_led=0;
out_set=0;
}
else
{
debuge_f=0;
key_down=1;
l_move_t=0;
l_move_s=0;
}
}
else if(P12.2&&debuge_f)
{
if(l_move_s>=4)l_move_s=0;
l_move_s++;
debug_s_f=1;
wr_f=1;
debug_t_f=0;
key_down=1;
l_move_t=0;
}
else if(P12.1&&debuge_f)
{
if(l_move_t>=2)l_move_t=0;
l_move_t++;
debug_t_f=1;
debug_s_f=0;
l_move_s=0;
key_down=1;
wr_f=1;
}
keyesc=1; //??
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
KEY_DOWN应该是个标志,等待后面的按键处理程序识别后清零,pre_key_dig估计也是个标志,外面的程序处理完后就置1,避免按键还没松开程序又去处理一次,程序里使用了大量外部标志,可读性和通用性极差,lz没必要借鉴
一周热门 更多>