下面是我写的一个键盘检测程序。键盘的底层是用状态机写的,这里没10毫秒扫描一次。
问题是: 键盘只能检测到key_long_set这里,进去后,key_lshort_left,key_short_up都检测不到这是什么问题啊?
是不是在我按下key_long_set之后的10毫秒里没有按下其他键,他就不检测了?
还有就是if(keyValue == key_long_set)条件成立的情况下,它里面的内容只执行一次还是一直停在里面了?(这个问题一直困扰我好久)
请大家斑斑我分析下,谢谢。
if(Time10Ms)
{
Time10Ms = 0;
keyValue = read_key_n();
}
if(keyValue == key_long_set)
{
InputCode();
if(keyValue == key_short_left )
{
codeWei++;
if(codeWei > 5)
{
codeWei = 0;
}
}
switch(codeWei)
{
case 0:
{
if(keyValue == key_short_up)
code5++;
if(code5 > 9)
code5 = 0;
} break;
case 1:
{
if(keyValue == key_short_up)
code4++;
if(code4 > 9)
code4 = 0;
}break;
case 2:
{
if(keyValue == key_short_up)
code3++;
if(code3 > 9)
code3 = 0;
}break;
case 3:
{
if(keyValue == key_short_up)
code2++;
if(code2 > 9)
code2 = 0;
}break;
case 4:
{
if(keyValue == key_short_up)
code1++;
if(code1 > 9)
code1 = 0;
}break;
default:break;
} |