📄 keyboard.c
字号:
#define KEY P0
unsigned char key_get; //得到的键值
unsigned char key_cnt; //已得到的键数量
unsigned char key_press;
const unsigned char key_map[16]= //设置键盘的逻辑值与程序计算键值的映
射
{ //按手机
键盘设置
1,2,3,0x0a,
4,5,6,0x0b,
7,8,9,0x0c,
0x0e,0,0x0f,0x0d
};
void init_key(void) /*初始化*/
{
unsigned char i;
key_get=0;key_cnt=0xff;//-1
key_press=0;//flag=0;
for(i=0;i<4;i++)
led_buf[i]=0;//led_buf[i]=16;//不显示
}
void key_scan(void) /*键盘扫描*/
{
int i,j;
unsigned char scancode=0xef;//高位扫描
//KEY=0x0f;//00001111B
//for(i=0;i<1000;i++); //延时
if(KEY==0x0e) //00001110
j=0; //在第0列(列输入)
else if(KEY==0x0d) //00001101
j=1; //在第1列(列输入)
else if(KEY==0x0b) //00001011
j=2; //在第2列(列输入)
else if(KEY==0x07) //00000111
j=3; //在第3列(列输入)
KEY=scancode;//11101111B
for(i=0;i<4;i++) //在第i行
{
if(KEY!=scancode)
break;
else
{scancode=(scancode<<1)|0x0f;//扫描
码左移一位,低四位为1
KEY=scancode;
}
}
key_get=key_map[i*4+j];
}
unsigned char key_event() /*确定键盘事件,能判断键盘是否松开*/
{
unsigned char flag=0;
int i;
KEY=0x0f;
for(i=0;i<50;i++); //延时去抖动
if((key_press==0)&&(KEY<0x0f))//有按键
{
key_press=1;
key_scan();
}
else if((key_press==1)&&(KEY==0x0f))//已松开按键
{
key_press=0;
flag=1;
}
return flag;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -