📄 key.h
字号:
//函数说明
//--------------------------------
unsigned char get_key(void);
//--------------------------------
#ifndef __key_h
#define __key_h
unsigned char key_read(void)
{
unsigned char i;
/*获取列地址*/
DDRB=0xf0; //高4位输出,低4位输入
PORTB=0x0f;//高4位输出0,低4位带上拉输入
delay_nms(1);
i=PINB&0x0f;
/*获取行地址*/
DDRB=0x0f;//高4位输入,低4位输出
PORTB=0xf0;//低4位输出0,高4位带上拉输入
delay_nms(1);
i|=PINB&0xf0;
switch(i)
{
case 0xff:return 0x00;
case 0xee:return '0';
case 0xde:return '1';
case 0xbe:return '2';
case 0x7e:return '3';
case 0xed:return '4';
case 0xdd:return '5';
case 0xbd:return '6';
case 0x7d:return '7';
case 0xeb:return '8';
case 0xdb:return '9';
case 0xbb:return 'A';
case 0x7b:return 'B';
case 0xe7:return 'C';
case 0xd7:return 'D';
case 0xb7:return 'E';
case 0x77:return 'F';
default:return 0x00;
}
}
unsigned char get_key(void)
{
unsigned char i;
static unsigned char j;//按键记录
i=key_read();
if(i==0x00) //无有效按键按下
{
j=0x00; //清除按键记录
return 0x00; //程序退出
}
if(j==0x00) //为新按键
{
j=i; //保存本次结果
delay_nms(10); //延时去抖动
i=key_read();
if(i==j)
return i;
}
return 0x00;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -