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; //??
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是,可读性不太好
楼主还是参考一下以前那个老师发的状态机的方法比较好
上次发帖一下忘了老师姓啥了,马老师啊,老前辈了。果然人到40往后脑子 不行了。
搜索状态机按键,有很多可以参考的东西啊
感谢。我写按键程序也和楼主差不多,只是可读性强一些。总是把按键功能写在按键里面,显得很混乱,也学习下状态机。
一周热门 更多>