📄 key.h
字号:
int Keyboard(void)
{static uint8_t ScanCode=0xF7,TempNum=16,LastNum=16,CurrentNum=16,Times=0;
switch(ScanCode) // 扫描信号
{
case 0xF7:ScanCode=0xFB; break; //扫描信号:0111→1011
case 0xFB:ScanCode=0xFD; break; // 1011→1101
case 0xFD:ScanCode=0xFE; break; // 1101→1110
case 0xFE:ScanCode=0xF7; break; // 1110→0111
default: ScanCode=0xF7;break;
}
/*在main()函数里需将DDRC设成0x0F,即PC7~PC4为输入,PC3~PC0为输出。
下面PORTC=ScanCode意味着,将PC7~PC4设为带上拉功能的输入,
而PC3~PC0输出扫描信号。*/
PORTC=ScanCode;
switch(PINC)
{
/*TempNum记录读到的键值,由于此键值需经进一步处理,
所以是暂时数值(TempNum)。Times用以记录没有读到有效键值的次数,
如果次数达到4次(即扫描一轮后没有发现有效键值),
就表示没有键按下。*/
case 0xE7:TempNum=0;Times=0;break;
case 0xD7:TempNum=1;Times=0;break;
case 0xB7:TempNum=2;Times=0;break;
case 0x77:TempNum=3;Times=0;break;
case 0xEB:TempNum=4;Times=0;break;
case 0xDB:TempNum=5;Times=0;break;
case 0xBB:TempNum=6;Times=0;break;
case 0x7B:TempNum=7;Times=0;break;
case 0xED:TempNum=8;Times=0;break;
case 0xDD:TempNum=9;Times=0;break;
case 0xBD:TempNum=10;Times=0;break;
case 0x7D:TempNum=11;Times=0;break;
case 0xEE:TempNum=12;Times=0;break;
case 0xDE:TempNum=13;Times=0;break;
case 0xBE:TempNum=14;Times=0;break;
case 0x7E:TempNum=15;Times=0;break;
default:{
Times++;
if (Times==4)
{
TempNum=16;
Times=0;
}
}break;
}
LastNum=CurrentNum;
CurrentNum=TempNum;
if (CurrentNum==LastNum) return(16);
else return(CurrentNum);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -