📄 keyscan.c
字号:
#include "AT89X51.H"
//unsigned code MaxScanTime=3;
extern void delay(long time);/////////int time////1000//////
unsigned char LastKeyScanState=0,KeyScanState=0,KeyScanTime=0;
unsigned char PreKeyScan()
{
unsigned char Key;
P2=(P2&0x81)+0x20+0x1e;
Key=0;
if (P2_4==0)Key+=0x01;
if(P2_3==0)Key+=0x02;
if(P2_2==0)Key+=0x04;
if(P2_1==0)Key+=0x08;
P2=(P2&0x81)+0x40+0x1e;
if (P2_4==0)Key+=0x10;
if(P2_3==0)Key+=0x20;
if(P2_2==0)Key+=0x40;
if(P2_1==0)Key+=0x80;
return Key;
}
unsigned char KeyScan()
{
KeyScanState=PreKeyScan();
if(KeyScanState)
{
delay(10);
if(KeyScanState!=PreKeyScan())return 0;
delay(10);
if(KeyScanState!=PreKeyScan())return 0;
delay(10);
if(KeyScanState!=PreKeyScan())return 0;
return KeyScanState;
}
else return 0;
}
unsigned char KeyUpScan()
{
unsigned char Key,UpKey;
Key=KeyScan();
if(Key)
{
UpKey=Key;
while(1)
{
if(Key!=0)UpKey=Key;
else if(PreKeyScan()==0)return UpKey;
Key=KeyScan();
}
}
else
{
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -