📄 键盘扫描程序.txt
字号:
#define KEYPAD_PORT P2
sbit C1=KEYPAD_PORT^0;
sbit C2=KEYPAD_PORT^1;
sbit C3=KEYPAD_PORT^2;
sbit R1=KEYPAD_PORT^6;
sbit R2=KEYPAD_PORT^5;
sbit R3=KEYPAD_PORT^4;
sbit R4=KEYPAD_PORT^3;
bit KEYPAD_Scan(char* const pkey, char*const pFuncKey)
{
static data char Old_Key;
char Key=KEYPAD_NO_NEW_DATA;
char Fn_key=(char) 0x00;
C1=0; //扫描列1
if (R1==0) Key='1';
if (R2==0) Key='4';
if (R3==0) Key='7';
if (R4==0) Fn_Key='*';
C1=1;
C2=0; //扫描列2
if (R1==0) Key='2';
if (R2==0) Key='5';
if (R3==0) Key='8';
if (R4==0) Key='0';
C2=1;
C3=0; //扫描列3
if (R1==0) Key='3';
if (R2==0) Key='6';
if (R3==0) Key='9';
if (R4==0) Fn_Key='#';
C3=1;
if (Key==KEYPAD_NO_NEW_DATA)
{ //没有按键被按下(或只是功能键)
Old_Key=KEYPAD_NO_NEW_DATA;
Last_voilid_key_G=KEYPAD_NO_NEW_DATA;
return 0; //no new data
}
//一个按键被按下.通过检查两次来消抖
if (Key==Old_Key)
{ //检测到一个有效的(经过消抖)键按下
//必须是一个新的按键才有效,不允许"自动重复"
if (Key !=Last_valid_key_G)
{ //新的按键!
*pKey=Key;
Last_valid_key_G=Key;
//功能键是否也被按下?
if (Fn_key)
{ //功能键与另一个按键被同时按下
*pFunckey=Fn_key;
}
else
{
*pFunckey=(char) 0x00;
}
return 1;
}
} //没有新的数据
Old_Key=Key;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -