📄 keyboard.c
字号:
#include "..\INC\includes.h" /* uC/OS interface */
void Read_value(int data);
void __irq Keyboard_Int(void);
volatile U16 value=16;
volatile U32 keyend;
unsigned char Scandata[4][4]={
{15,14,13,12},
{11,10,9,8},
{7,6,5,4},
{3,2,1,0}
};
unsigned char st[4][4]= {
{0x8e,0x86,0xa1,0xc6},
{0x83,0x88,0x90,0x80},
{0xf8,0x82,0x92,0x99},
{0xb0,0xa4,0xf9,0xc0}
};
U16 Test_keyboard()
{
int i;
unsigned int save_B,save_G,save_E,save_UE,save_F,save_UF;
keyend=0;
save_B=rGPBCON;
save_F=rGPFCON;
save_E=rGPECON;
save_UE=rGPEUP;
save_UF=rGPFUP;
save_G=rGPGCON;
rGPBCON &= 0x3ffffd;
rGPBCON |= 0x01; //GPB0 OUT
rGPBDAT = 0x0;
rGPECON=rGPECON & 0xffC03d45;
rGPECON=rGPECON | 0x145; //GPE0\1\3\4:Output;GPE2,GPE7~GPE10:Input
rGPEUP=rGPEUP | 0x1b; //GPE0\1\3\4 pull-up DISABLE
rGPEDAT = rGPEDAT & 0xffe4; //GPE0\1\3\4:Output0
rGPGCON &= 0xffffffd5;
rGPGCON |= 0x15; //GPG0,1,2 IO about smg
rGPGDAT=0x0;
rSMG0= 0xb6;
rGPGDAT=0x7;
rGPEDAT = rGPEDAT & 0xfffe;//置GPE0为低,扫描键盘第四行
rGPEDAT = rGPEDAT | 0x1a; //GPE1、3、4为高
i=3; //KEY 0 1 2 3
Read_value(i);
rGPEDAT = rGPEDAT & 0xfffd;//置GPE1为低,扫描键盘第三行
rGPEDAT = rGPEDAT | 0x19; //GPE0、3、4为高
i=2; //KEY 4 5 6 7
Read_value(i);
rGPEDAT = rGPEDAT & 0xfff7;//置GPE3为低,扫描键盘第二行
rGPEDAT = rGPEDAT | 0x13; //GPE0、1、4为高
i=1; //KEY 8 9 A B
Read_value(i);
rGPEDAT = rGPEDAT & 0xffef;//置GPE4为低,扫描键盘第一行
rGPEDAT = rGPEDAT | 0x0b; //GPE0、1、3为高
i=0; //KEY C D E F
Read_value(i);
return value;
}
void Read_value(int data)
{
unsigned int keydata1,keydata2;
keydata1=(rGPEDAT>>7) & 0xf;
Delay(100);
keydata2=(rGPEDAT>>7) & 0xf;
if(keydata1==keydata2)
{
switch(keydata1)
{
case(0x7)://KEY 0 4 8 C
rGPGDAT=0x0;
rSMG0= st[data][3];
rGPGDAT=0x7;
value=Scandata[data][3];
break;
case(0xb)://KEY 1 5 9 D
rGPGDAT=0x0;
rSMG0= st[data][2];
rGPGDAT=0x7;
value=Scandata[data][2];
break;
case(0xd)://KEY 2 6 A E
rGPGDAT=0x0;
rSMG0= st[data][1];
rGPGDAT=0x7;
value=Scandata[data][1];
break;
case(0xe)://KEY 3 7 B F
rGPGDAT=0x0;
rSMG0= st[data][0];
rGPGDAT=0x7;
value=Scandata[data][0];
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -