STATE_KIDEL:
如果有按键,查表,看是第几个按键。(排除8个IO口中,你不用做按键的那些IO。另外也是keyport中是从0开始的,而记在temp中是从0开始的)。
Key_ThisValue=temp+1; 当前键值
KeyState=STATTE_KDOWN; 按键状态
KeyDn_Cnt=KEY_LONGTIME; 按键按下持续时间置为KEY_LONGTIME,减到0就表示长按时间到了。
如果没有按键,break跳出。
STATE_KDOWN:
如果按键松开了,判断长按时间到。
--> 如果长按时间到了,
Key_OldValue=0;
KeyState=STATE_KIDEL;回到闲置状态
gKeyBuf=Key_ThisValue+LONG_KEY_UP;
gbHaveKey=TRUE;
——————> 长按
--> 如果长按时间还没有到,如果按键抬起了,有可能是双击。
KeyState=STATE_KUP;设置了KeyState为STATE_UP,如果时间到了,表示按键按下后,又弹起,弹起的时间够了。
KeyUp)Cnt=KEY_TWICETIME;
如果按键没有松开
--> 如果长按时间到了
Key_ThisValue+=LONG_KEY;
gKey