📄 key._h
字号:
//函数说明
//--------------------------------
unsigned char get_key(void);
//--------------------------------
#include "delay.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 'D';
case 0xde:return '#';
case 0xbe:return '0';
case 0x7e:return '*';
case 0xed:return 'C';
case 0xdd:return '9';
case 0xbd:return '8';
case 0x7d:return '7';
case 0xeb:return 'B';
case 0xdb:return '6';
case 0xbb:return '5';
case 0x7b:return '4';
case 0xe7:return 'A';
case 0xd7:return '3';
case 0xb7:return '2';
case 0x77:return '1';
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;
/*上面的写法按下按键只有一个返回值,下面的做法虽然容易理解但是按下按键后可能
会返回多个返回值,故一般采用上面的写法。
unsigned char i;
unsigned char j;//按键记录
i=key_read();
if(i==0x00) //无有效按键按下
return(0x00);
else //有键按下
{
j=i; //保存结果
delay_nms(10); //去抖动
i=key_read();
if(i==j)
return(i);
}
return 0x00;*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -