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; //??
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- 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; //??
-
-
-
- }
复制代码- 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; //
- }
复制代码三个IO是接三个按键?为何有低有效,有高有效?KEY_DOWN在被=1后,没地方=0。
前边有个不等于,这里pre_key_dig==present_key_dig再==有意思?
KEY_DOWN应该是个标志,等待后面的按键处理程序识别后清零,pre_key_dig估计也是个标志,外面的程序处理完后就置1,避免按键还没松开程序又去处理一次,程序里使用了大量外部标志,可读性和通用性极差,lz没必要借鉴
一周热门 更多>