📄 key.c
字号:
//-------------------------- 3 2 1 0
//------------------------- 4 dKey4 dKey8 dKeyC dKeyG
//------------------------- 5 dKey3 dKey7 dKeyB dKeyF
//------------------------- 6 dKey2 dKey6 dKeyA dKeyE
//------------------------- 7 dKey1 dKey5 dKey9 dKeyD
//--------------------------76543210
#define dKey1 1 // 01110111=77
#define dKey2 2 // 10110111=b7
#define dKey3 3 // 11010111=d7
#define dKey4 4 // 11100111=e7
#define dKey5 5 // 01111011=7b
#define dKey6 6 // 10111011=bb
#define dKey7 7 // 11011011=db
#define dKey8 8 // 11101011=eb
#define dKey9 9 // 01111101=7d
#define dKeyA 10 // 10111101=bd
#define dKeyB 11 // 11011101=dd
#define dKeyC 12 // 11101101=ed
#define dKeyD 13 // 01111110=7e
#define dKeyE 14 // 10111110=be
#define dKeyF 15 // 11011110=de
#define dKey0 0 // 11101110=ee
const unsigned char KeycodeNum[]=
//dKey0,dKey1,dKey2,dKey3,dKey4,dKey5,dKey6,dKey7,dKey8,dKey9,dKeyA,dKeyB,dKeyC,dKeyD,dKeyE,dKeyF.
{ 0xee, 0x77, 0xb7, 0xd7, 0xe7, 0x7b, 0xbb, 0xdb, 0xeb, 0x7d, 0xbd, 0xed, 0x7e, 0xbe, 0xde, 0xee};
//
// ---------------------------------------------------------------------
void INT_KeyTest(void) //键反转法检测键盘
{
unsigned char j,i,KeyCodeTemp,KeyCode;
KeyPORT=0xf0;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
KeyDDR=0x0f;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
j=(KeyPIN&0xf0);
if (j==0xf0)
{
KeyBeforeCodeTemp=j; //无键按下
KeyDelayCou=0;
bKeyPress=0;
return;
}
// -----------------------------------------------
// -----------------------------------------------
KeyBeforeCodeTemp=j;
if (bKeyPress!=0) return;
if (KeyDelayCou<0x40)
{
KeyDelayCou++;
return;
}
else {bKeyPress=0x55;KeyDelayCou=0;} //键盘延迟是否足够
if (bKeyGetted==dTrue) return; //键值取得,还未处理 返回
// Led2FlashTimes=1;
KeyPORT=0xf0;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
KeyDDR=0x0f;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
KeyCode=(KeyPIN&0xf0); //取键代码
KeyPORT=0x0f;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
KeyDDR=0xf0;
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();
KeyCodeTemp=(KeyPIN&0x0f);
KeyCode+=KeyCodeTemp; //键盘行列代码合并
//Led2FlashTimes=KeyCode;
for (i=0;i<16;) //键值取得
{
if (KeyCode==KeycodeNum[i])
{
KeyValue=i;
bKeyGetted=0x55;
break;
}
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -