126 lines
4.6 KiB
C
126 lines
4.6 KiB
C
|
/********************************************************************************
|
|||
|
Copyright (C), Sinowealth Electronic. Ltd.
|
|||
|
Author: Sino
|
|||
|
Version: V0.0
|
|||
|
Date: 2020/04/26
|
|||
|
History:
|
|||
|
V2.0 2020/04/26 Preliminary
|
|||
|
********************************************************************************/
|
|||
|
#include "Main.h"
|
|||
|
|
|||
|
|
|||
|
BOOL bKeyFlg;
|
|||
|
U16 data uiKeyValidCnt;
|
|||
|
U16 data uiKeyInvalidCnt;
|
|||
|
U8 data ucKeyValue;
|
|||
|
U8 data ucKeyOldValue;
|
|||
|
U8 data ucKeyValueBK;
|
|||
|
|
|||
|
/*************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ScanKey
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: 1. <EFBFBD>̰<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϊ<EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>赯<EFBFBD>𣬾<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µİ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
4.ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
5. bKeyFlg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1
|
|||
|
6. ucKeyValue<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4bit<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4bit<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ֵ
|
|||
|
7. ucKeyValueBK <EFBFBD><EFBFBD><EFBFBD>水<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ް<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD>2
|
|||
|
8. uiKeyValidCnt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
9. uiKeyInvalidCnt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*************************************************************************************************/
|
|||
|
void KeyScan(void)
|
|||
|
{
|
|||
|
if(!bKeyFlg)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_NULL; //<2F><>Ĭ<EFBFBD><C4AC><EFBFBD>ް<EFBFBD><DEB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#ifdef KEY_NUM1_DEF //1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(!KEY_1_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_1;
|
|||
|
}
|
|||
|
#endif
|
|||
|
#ifdef KEY_NUM2_DEF //2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(!KEY_1_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<C2BA>ȡ<EFBFBD>¼<EFBFBD>ֵ
|
|||
|
}
|
|||
|
else if(!KEY_2_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<C2BA>ȡ<EFBFBD>¼<EFBFBD>ֵ
|
|||
|
}
|
|||
|
#endif
|
|||
|
#ifdef KEY_NUM3_DEF //3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(!KEY_1_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_1;
|
|||
|
}
|
|||
|
else if(!KEY_2_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_2;
|
|||
|
}
|
|||
|
else if(!KEY_3_IO_RD)
|
|||
|
{
|
|||
|
ucKeyValueBK = KEYVAL_3;
|
|||
|
}
|
|||
|
#endif
|
|||
|
if(ucKeyValueBK != ucKeyOldValue) //ucKeyValueBK<42>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µļ<C2B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ϼ<EFBFBD>ֵ<EFBFBD><D6B5>ͬ<EFBFBD><CDAC>
|
|||
|
{
|
|||
|
uiKeyInvalidCnt++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
|
|||
|
if(uiKeyValidCnt >= KEY_S_TIME) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
|||
|
{ //<2F><><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uiKeyValidCnt >= KEY_S_TIME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ̰<C7B6>
|
|||
|
if(uiKeyInvalidCnt >= KEY_S_TIME) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>һ<EFBFBD>ΰ<EFBFBD><CEB0>º͵<C2BA><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(uiKeyValidCnt >= KEY_L_TIME) //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ̰<C7B6><CCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ucKeyValue = ucKeyOldValue | KEY_STATE_LE; //<2F><><EFBFBD>µ<EFBFBD>ʱ<EFBFBD>䳬<EFBFBD><E4B3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>Ϊ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD>״̬Ŀǰδʹ<CEB4><CAB9>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ucKeyValue = ucKeyOldValue | KEY_STATE_S; //<2F><><EFBFBD>µ<EFBFBD>ʱ<EFBFBD><CAB1>û<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>Ϊ<EFBFBD><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD>Ķ̰<C4B6><CCB0><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
bKeyFlg = 1; //<2F>̰<EFBFBD><CCB0><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬ȥ<E2A3AC><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
goto scanend;
|
|||
|
}
|
|||
|
// else
|
|||
|
// {
|
|||
|
// uiKeyValidCnt++; //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KEY_S_TIME<4D><45><EFBFBD><EFBFBD>KEY_L_TIME<4D><45>һ<EFBFBD>뼰<EFBFBD><EBBCB0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ѷ̰<D1B6><CCB0><EFBFBD>ʶ<EFBFBD><CAB6>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// }
|
|||
|
}
|
|||
|
else //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䶼<EFBFBD><E4B6BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
{
|
|||
|
goto scanend;
|
|||
|
}
|
|||
|
}
|
|||
|
else //ucKeyValueBK<42>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µļ<C2B5>ֵ<EFBFBD><D6B5><EFBFBD>¼<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ϼ<EFBFBD>ֵ<EFBFBD><D6B5>ͬ<EFBFBD><CDAC>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(ucKeyValueBK != KEYVAL_NULL) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µİ<C2B5><C4B0><EFBFBD>
|
|||
|
{
|
|||
|
uiKeyInvalidCnt = 0; //<2F>嵯<EFBFBD><E5B5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
uiKeyValidCnt++; //<2F>ۼӰ<DBBC><D3B0>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(uiKeyValidCnt == KEY_L_TIME) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ﵽ<EFBFBD><EFB5BD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ucKeyValue = ucKeyOldValue | KEY_STATE_L;
|
|||
|
bKeyFlg = 1;
|
|||
|
}
|
|||
|
else if(uiKeyValidCnt == KEY_LC_TIME) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ﵽ<EFBFBD><EFB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD>˰<EFBFBD><CBB0><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
uiKeyValidCnt = KEY_L_TIME;
|
|||
|
ucKeyValue = ucKeyOldValue | KEY_STATE_LC;
|
|||
|
bKeyFlg = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
else //<2F>¼<EFBFBD>ֵ<EFBFBD>ǿռ<C7BF>ֵ<EFBFBD><D6B5>˵<EFBFBD><CBB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
|||
|
{
|
|||
|
ucKeyValue = KEYVAL_NULL; //ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ˣ<EFBFBD><CBA3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
scanend:
|
|||
|
uiKeyValidCnt = 0;
|
|||
|
uiKeyInvalidCnt = 0;
|
|||
|
ucKeyOldValue = ucKeyValueBK;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|