📄 keysca.txt
字号:
/*键盘扫描函数 读取当前键盘的状态 有按键按下返回相应按键值 无按键按下返回"0x00"*/
unsigned char key_read(void)
{ unsigned char i;
DDRA = 0x00; /*获取列地址*/
PORTA = 0x0F;
DDRA = 0xF0;
i = PINA;
DDRA = 0x00; /*获取行地址*/
PORTA = 0xF0;
DDRA = 0x0F;
i |= PINA;
DDRA = 0x00; /*输出复位*/
PORTA = 0xFF;
switch (i)
{/*将按键码转换成键值*/
case 0x00: return 0x00;
case 0xEE: return '1';
case 0xDE: return '2';
case 0xBE: return '3';
case 0x7E: return 'A';
case 0xED: return '4';
case 0xDD: return '5';
case 0xBD: return '6';
case 0x7D: return 'B';
case 0xEB: return '7';
case 0xDB: return '8';
case 0xBB: return '9';
case 0x7B: return 'C';
case 0xE7: return '*';
case 0xD7: return '0';
case 0xB7: return '#';
case 0x77: return 'D';
default : return 0x00;
}
}
/*键盘读取函数 /*按键获取函数 获取按键信号,其中包含有状态记录及按键去颤抖。 有正确按键按下返回相应按键值 无正确按键按下返回"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_ms(10); /*去按键颤抖*/
i = key_read();
if(i == j)
{ return i; }
}
return 0x00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -