51程序问题·····

2019-03-24 18:35发布

先说问题吧····
就是矩阵反转扫描函数中的问题···

源函数如下·····

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);     //返回该值
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。