📄 key.c
字号:
#include "PublicDef.h"
#include "PublicFunction.h"
BYTE KeyData;
struct
{
WORD Delay;
BYTE WaitTime;
BYTE Stau;
BYTE ScanFlag;
BYTE ChekFlag;
BYTE OldKey;
} Keys;
BYTE Key_Func;
BYTE KeyUpContinue=0,KeyDownContinue=0,KeyLeftContinue=0,KeyRightContinue=0;
void ScanKey(void)
{
static BYTE scan_delay=0;
if (Pin_KEY_START)
{
scan_delay=0;
Keys.ScanFlag=SCAN_NO;
return;
}
if (scan_delay==0)
{
scan_delay=1;
Keys.ScanFlag=SCAN_DELAY;
return;
}
Keys.ScanFlag=SCAN_NO;
scan_delay=0;
Keys.ScanFlag=SCAN_YES;
KeyData=KEY_SCAN_START;
}
void GetKey(void)
{
if (Keys.ScanFlag==SCAN_NO)
{
Keys.Delay=0;
Keys.Stau=bKEY_RELEASE;
return ;
}
if (KeyData!=Keys.OldKey)
{
Keys.OldKey=KeyData;
Keys.Delay=800;
Keys.Stau=bKEY_PRESS;
Keys.ChekFlag=1;
}
else if (!Keys.Delay)
{
if ((Keys.Stau==bKEY_PRESS)||(Keys.Stau==bKEY_REPEAT))
{
Keys.Delay=50;
Keys.Stau=bKEY_CONTINU;
}
else
{
if (Keys.Stau==bKEY_CONTINU)
Keys.Delay=50;
else
{
Keys.Delay=800;
Keys.Stau=bKEY_REPEAT;
}
}
Keys.ChekFlag=1;
}
Keys.ScanFlag=0;
}
void KeyScanToFunc(void)
{
if (Keys.Stau==bKEY_CONTINU)
Key_Func=KEY_NO_KEY;
else
{
switch (KeyData)
{
case KEY_SCAN_START:
Key_Func=KEY_START;
break;
default: Key_Func=KEY_NO_KEY;
break;
}
}
}
void Chek_key(void)
{
if (Keys.ChekFlag)
{
KeyScanToFunc();
Keys.ChekFlag=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -