我现在也在用状态机思想写一键多功能的程序,一个按键实现正常显示,进入查询界面,十个查询状态间的切换,查询完退出查询界面,再次返回到正常显示界面,我的思路是当有短键按下时进入查询界面,每有一次短键按下,便切换一个查询状态,当有长键按下时变返回到正常显示界面,现在的问题是程序没办法识别长短键,所有键都按短键处理,即没办法从查询状态退出到正常显示状态,以下是我的长短键程序 各位高手帮我看一下对不对,有没有更好的方法呀
uchar keyprocessor() //短键
{
uchar kn=0,knum;
for(knum=0;knum<100;knum++)
{
Delay_m(100);
if(key1==0)
kn++;
else
kn=kn;
//if(kn==100)
// break;
}
//if(key1==1)
//{
// Delay_m(10);
// if(key1==1)
//{
if(kn==100)
return 1;
//}
// }
else
return 0;
}
uchar lt_key(void) // 长键
{
int lkn=0;
int i;
for(i=0;i<1000;i++)
{
Delay_m(1000);
Delay_m(1000);
Delay_m(1000);
Delay_m(1000);
Delay_m(1000);
if(key1==0)
lkn++;
else
lkn=lkn;
}
if(lkn==1000)
return 1;
else
return 0;
} |