微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51程序问题·····

51程序问题·····

时间:10-02 整理:3721RD 点击:
51程序问题·····                                先说问题吧····
就是矩阵反转扫描函数中的问题···
源函数如下·····
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);     //返回该值
}                           

路过看看

小弟也刚学完这方面,其实程序还没看透。建议你找个正确的代码好好看看,或视频看几次,这个真的不难。要是没有解决,我给你几个代码,并有详细解释。本人无任何企图。

while((KeyPort&0xf0)!=0xf0);中换成cord_l后就死循环了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top