|
帮帮我啊。矩阵键盘扫描前为什么要给P3口赋初值
[复制链接]
- UCHAR keyScan()
- {
- void delay(UINT);
- UCHAR xTemp, yTemp, readKey, reReadKey;
- keyFlag = 0; //扫描按键前清除按键标记
- xTemp = (P3 = 0x0f) & 0x0f; //获取低四位的值,即矩阵键盘的行值
- if(xTemp == 0x0f) //无按下键
- return 0xff;
- yTemp = (P3 = 0xf0) & 0xf0; //获取高四位的值,即矩阵键盘的列值
- readKey = xTemp | yTemp;
- delay(5); //延时后再测
- xTemp = (P3 = 0x0f) & 0x0f; //获取低四位的值,即矩阵键盘的行值
- if(xTemp == 0x0f) //无按下键
- return 0xff;
- yTemp = (P3 = 0xf0) & 0xf0; //获取高四位的值,即矩阵键盘的列值
- reReadKey = xTemp | yTemp;
- if(reReadKey == readKey)
- {
- keyFlag = 1;
- return readKey;
- }
- }
- xTemp = (P3 = 0x0f) & 0x0f; //获取低四位的值,即矩阵键盘的行值 ,P3 = 0x0f我看不懂。。。为什么要给P3赋初值,赋完值后P3的值不就是保持0x0f 不变了吗?去掉赋初值的话程序就有问题了。 这里的赋初值P3 = 0x0f 和P3 = 0xf0到底有什么作用?
- 请大侠帮帮我。
复制代码
|
|