📄 keyboard.c
字号:
#include "pic.h"
#include "myfuncs.h"
#include "keyboard.h"
const char KeyCode[16][2]={{0b11101110,7},
{0b11101101,8},
{0b11101011,9},
{0b11100111,'/'},
{0b11011110,4},
{0b11011101,5},
{0b11011011,6},
{0b11010111,'*'},
{0b10111110,1},
{0b10111101,2},
{0b10111011,3},
{0b10110111,'-'},
{0b01111110,0},
{0b01111101,'C'},
{0b01111011,'='},
{0b01110111,'+'}
};
char scankeypad()
{
char key4H=0,key4L=0,ScanCode=0,i=0;
TRISC=0xF0; // 低四位输出,高四位输入
PORTC=0x00; // 低四位输出0
asm("nop");
asm("nop"); // 等待输出信号稳定
key4H=PORTC; //读取高四位内容
key4H=key4H&0xF0; // 只需要高四位,所以把低四位屏蔽掉
if(key4H!=0xF0) // 有键盘按下
{
delay(20); //软件消除抖动
key4H=PORTC; //重新读取PORTC高四位
if(key4H!=0xF0) // 真的有键盘按下吗?
{
TRISC=0x0F; //高低四位IO方向转换
PORTC=0x00; // 高四位输出0,第四位等待输入
asm("nop");
asm("nop"); //等待输出稳定。
key4L=PORTC; //读取低四位
key4L=key4L&0x0F; //屏蔽高四位内容
if(key4L!=0x0F) // 如果不为0x0F,说明有按键按下
{
ScanCode=key4H+key4L; //高四位<<4+低四位为键盘扫描码
i=0;
while(ScanCode!=KeyCode[i][0])
{
i++;
}
return(KeyCode[i][1]);
}
}
}
return NO_KEY;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -