📄 scankey.c
字号:
#include <REG52.H>
void delay_ms(unsigned int ms);
unsigned char ScanKey(void)
{
unsigned char uc_Temp_1,uc_Temp_2,key;
P1=0xff; //P1口置高电平,准备输入
P1=0x0f; //P1口高4位作为输出,输出0,低四位作为输入
if((P1&0x0f) != 0x0f) //如果按键有反应
{
delay_ms(5); //延时去抖
P1=0x0f;
if((P1&0x0f) != 0x0f) //如果为真,则确实有按键按下
{
uc_Temp_1=P1; //把这时P1口状态保存在一个变量中
P1=0xf0; //把P1口高四位置输入,低四位作为输出,注意:这就是'线翻转' (即输入输出翻转)的本质所在
uc_Temp_2=P1; //把这时P1口状态保存在一个变量中
key=(uc_Temp_1|uc_Temp_2);
while(P1!=0xf0);
switch (key)
{
case 0xE7: return (0);
case 0xEE: return (1);
case 0xDE: return (2);
case 0xBE: return (3);
case 0xED: return (4);
case 0xDD: return (5);
case 0xBD: return (6);
case 0xEB: return (7);
case 0xDB: return (8);
case 0xBB: return (9);
default: return key;
}
}
}
return (0xff);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -