|
C语言写的矩阵键盘扫描程序,怎么分别判断按下的键所在的行和列。
[复制链接]
有一种方法是给低位赋1110 1101 1011 0111,然后进行扫描。。
我在书上看到另外一种做法。。就是分别判断所在的行和列的。。
- //下面这段代码是我从书上抄的。。在switch那里我改了一下而已。先做个简单和测试
- //但本来按下第一个键就led亮的。但是没有反应。。
- //请问这段扫描键盘的代码是错在哪里?怎么改呢。。
- void keyScan()
- {
- void delay(UINT);
-
- UCHAR xTemp, yTemp, readKey, reReadKey;
-
- xTemp = (P3 = 0x0f) & 0x0f; //扫描按键行值
- if(xTemp == 0x0f) //无键按下
- return;
- yTemp = (P3 = 0xf0) & 0xf0; //列值
- readKey = xTemp | yTemp;
- delay(5); //延迟
- xTemp = (P3 = 0x0f) & 0x0f; //扫描按键行值
- if(xTemp == 0x0f)
- return;
- yTemp = (P3 = 0xf0) & 0xf0;
- readKey = xTemp | yTemp;
- if(readKey == reReadKey)
- {
- switch(readKey)
- {
- case 0xee: P1 = 0x00;while(1); //测试按下第一个键
- case 0xde:break;
- }
-
- }
-
- }
复制代码
|
|