📄 keyboard.c
字号:
/******************************************************************/
/*** 文件名 : keyboard.c ********/
/*** 输 入 : 无 ********/
/*** 输 出 : 按键值 1 - 16 ********/
/*** ********/
/*** 建立 时间 : 2009年3月9号 ********/
/*** 最后修改日期 : 2009年3月9号 ********/
/******************************************************************/
//////延时函数/////////////////
#define uint unsigned int
#define uchar unsigned char
void delay()
{
unsigned int a = 50;
while(a--);
}
/*********************** 主要函数 ******* **/
/*** keyx,keyy分别为某个I/O口检测时的横或纵向码 ***/
/*** addx,addy分别为按键坐标值 1,2,3,4 ***/
unsigned char keyboard()
{
unsigned char keyx = 0,keyy = 0,addx = 0,addy = 0,keynum = 0;
P1 = 0x0f; //检测前先给P1口赋值
keyx = P1; //P1变化后的值赋给keyx
P1 = 0xf0;
keyy = P1;
/// 以下防抖动 //////////
delay();
if(keyx == 0x0f || keyy == 0xf0)
return 0;
delay();
P1 = 0x0f;
keyx = P1;
P1 = 0xf0;
keyy = P1;
if(keyx == 0x0f || keyy == 0xf0)
return 0;
/// 将键码转换为坐标1-4 ///////////
switch(keyx)
{
case 0x0e : addx = 1; break;
case 0x0d : addx = 2; break;
case 0x0b : addx = 3; break;
case 0x07 : addx = 4; break;
}
switch(keyy)
{
case 0xe0 : addy = 1; break;
case 0xd0 : addy = 2; break;
case 0xb0 : addy = 3; break;
case 0x70 : addy = 4; break;
}
/// 将坐标转换为开关号1-16 ///////////
keynum = 4 * (addy-1) + addx;
if(keynum)
return keynum;
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -