矩阵键盘按键下降沿检测功能 点击:374 | 回复:0



德展自动化

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 14回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2005年12月27日
发表于:2014-10-31 08:19:52
楼主

这段代码是矩阵按按钮的下降沿检测程序,如果相应的按钮按下并弹起的时候执行相应的功能,但是在实际应用中总是出现一个问题:有2个按键同时按下的时候,有时候会出现这个子程序之外的程序都不执行了,可能是在这段代码中发生了死循环的情况,现在将这段代码贴上来,大家帮我分析一下。

void KeyDown()

{

   char a=0;

   jzjp=0x0f;

   if(jzjp!=0x0f)//读取按键是否按下

   {

       Delay100us();//延时10ms进行消抖

       if(jzjp!=0x0f)//再次检测键盘是否按下

       {

           jzjp=0X0F;  //测试列

           switch(jzjp)

           {

           case(0X07):cj=0;break;

           case(0X0b):cj=1;break;

           case(0X0d): cj=2;break;

           case(0X0e):cj=3;break;

           }

           jzjp=0XF0;    //测试行

           switch(jzjp)

           {

           case(0X70):cj=cj;jzjp=0X0F;break;

           case(0Xb0):cj=cj+4;jzjp=0X0F;break;

           case(0Xd0): cj=cj+8;jzjp=0X0F;break;

           case(0Xe0):cj=cj+12;jzjp=0X0F;break;

           }

       }

   }

   //以下是脉冲检测,有按键按下的时候执行变量“zdsl”自减功能按键按下一次,zdsl的值减1:

   if((jzjp!=0x0f)&&zdsy>0)      

       {  

       Delay100us();

       if(jzjp!=0x0f)

           {

           while(jzjp!=0x0f);

           zdsy=zdsy-1;

           }

       }

}




热门招聘
相关主题

官方公众号

智造工程师