📄 ps_2_kb.h
字号:
#ifndef _PS_2_KB_H
#define _PS_2_KB_H
#include <AT89X51.H>
#define KB_CLK P3_3
#define KB_DATA P3_4
uchar Get_Key(void);
uchar Key_Scan(void);
uchar Key_Scan(void)
{
uchar i,key_temp;
KB_CLK=1; //输入
KB_DATA=1;
key_temp=0;
while(KB_CLK); //第一次为0
for(i=0;i<8;i++)
{
key_temp>>=1;
while(!KB_CLK); //下沿,第一位
while(KB_CLK);
_nop_();
if(KB_DATA)
{
key_temp|=0x80; //低位在前
}
}
while(!KB_CLK); //校验位
while(KB_CLK);
while(!KB_CLK); //停止位
while(KB_CLK);
while(!KB_CLK);
return key_temp;
}
//由于make_code和第二个break_code一样,就取break_code第二个作为键码
uchar Get_Key(void)
{
uchar Key_Code;
Key_Code=Key_Scan(); //make_code
Key_Code=Key_Scan(); //break_code 1
Key_Code=Key_Scan(); //break_code 2
switch(Key_Code)
{
case 0x1c: return 'A';break;
case 0x32: return 'B';break;
case 0x21: return 'C';break;
case 0x23: return 'D';break;
case 0x24: return 'E';break;
case 0x2b: return 'F';break;
case 0x34: return 'G';break;
case 0x33: return 'H';break;
case 0x43: return 'I';break;
case 0x3b: return 'J';break;
case 0x42: return 'K';break;
case 0x4b: return 'L';break;
case 0x3a: return 'M';break;
case 0x31: return 'N';break;
case 0x44: return 'O';break;
case 0x4d: return 'P';break;
case 0x15: return 'Q';break;
case 0x2d: return 'R';break;
case 0x1b: return 'S';break;
case 0x2c: return 'T';break;
case 0x3c: return 'U';break;
case 0x2a: return 'V';break;
case 0x1d: return 'W';break;
case 0x22: return 'X';break;
case 0x35: return 'Y';break;
case 0x1a: return 'Z';break;
case 0x45: return '0';break;
case 0x16: return '1';break;
case 0x1e: return '2';break;
case 0x26: return '3';break;
case 0x25: return '4';break;
case 0x2e: return '5';break;
case 0x36: return '6';break;
case 0x3d: return '7';break;
case 0x3e: return '8';break;
case 0x46: return '9';break;
default: return 0xff; break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -