发布网友 发布时间:2022-04-26 01:02
共3个回答
热心网友 时间:2022-06-19 02:27
unsigned char KeyScan(void) //键盘扫描函数,使用行列逐级扫描法{ unsigned char Val; KeyPort=0xf0;//这句其实就是整体看看是否有键按下,四行全送0,有键按下,高四位肯定不为全1 if(KeyPort!=0xf0)//表示有按键按下 { DelayMs(10); //去抖if(KeyPort!=0xf0) { //表示有按键按下 KeyPort=0xfe; //检测第一行if(KeyPort!=0xfe) { Val=KeyPort&0xf0; Val+=0x0e; //相当于检测到第一行有键按下,键值=列(高四位)+行(低四位) while(KeyPort!=0xfe); DelayMs(10); //去抖 while(KeyPort!=0xfe); return Val; }热心网友 时间:2022-06-19 02:28
你把十六进制换成2进制,全部读一遍程序就明白了热心网友 时间:2022-06-19 02:28
提问者看错程序了,这是四乘四的矩阵,高四位低四位,不是高八位,全部八位都置1就扫描不到按键操作了。 Val=KeyPort&0xf0是得出按了哪个键,至于Val+=0x0e,没看出来,要看他后面的程序做了什么