📄 keyscan.c
字号:
void KeyScan(void) /* 键盘扫描 */
{
unsigned char i,j,kv0,kv1,kv2,kv3,kv4;
i = 0;
j = 0;
P1 = 0xEF;
kv0=P1; /* 读入键值 */
P1 = 0xDF;
kv1=P1;
P1 = 0xBF;
kv2=P1;
P1 = 0x7F;
kv3=P1;
P1 = 0xFF;
kv4=P1;
kvn = 0;
for(i=0; i<4; i++) { /* 键值分析 */
if((kv0&0x01)==0) {
kvn = i*4 + 1;
j++;
}
if((kv1&0x01)==0) {
kvn = i*4 + 2;
j++;
}
if((kv2&0x01)==0) {
kvn = i*4 + 3;
j++;
}
if((kv3&0x01)==0) {
kvn = i*4 + 4;
j++;
}
if((kv4&0x01)==0) {
kvn = 17 + i;
j++;
}
kv0 /= 2;
kv1 /= 2;
kv2 /= 2;
kv3 /= 2;
kv4 /= 2;
}
if(j>1) {
kvn = 0; /* 同时按下多键则键值无效 */
}
if(kvn==0) {
kvc = 0;
kvo = 0;
}
else { /* 若键值有效 */
if(kvn==kvo) { /* 若键值与上次键值相同 */
if(kvc<253)
kvc++; /* 同键值计数延时 */
if(kvc>2)
kvn=0; /* 以前键值已有效,则本次无效 */
if(kvo == CLEAR) {
if(kvc==20)
kvn = 0x55; /* 连按清零键达 120*10ms 则置全清*/
}
}
else { /* 若键值与上次键值不同 */
kvo = kvn; /* 记下键值 */
kvc = 1;
kvn = 0; /* 本次键值无效 */
}
}
if(kvc==0) {
kvn=0;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -