先说问题吧····
就是矩阵反转扫描函数中的问题···
源函数如下·····
unsigned char KeyScan(void) //键盘扫描函数,使用行列反转扫描法
{
unsigned char cord_h,cord_l;//行列值中间变量
KeyPort=0x0f; //行线输出全为0
cord_h=KeyPort&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
DelayMs(10); //去抖
if((KeyPort&0x0f)!=0x0f)···········
这里也有疑问····也是吧keyport&0x0f换成cord_h可以不可以·
{
cord_h=KeyPort&0x0f; //读入列线值
KeyPort=cord_h|0xf0; //输出当前列线值
cord_l=KeyPort&0xf0; //读入行线值
while((KeyPort&0xf0)!=0xf0);//等待松开并输出/
/······问题处在这里··我把while里面的keyport&0xf0换成cord_l为什么就不能工作了···他们不是等价的吗?
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}
此帖出自
小平头技术问答
一周热门 更多>