4*4任意双键按钮按下判断

2019-07-15 19:19发布

本帖最后由 mdevi 于 2014-6-28 11:58 编辑

请问,任意的双键按钮是怎样来判断的?单键按钮判断可以,但是双键按钮按下出现1 和 8 ,4 和 5判断是一样的,请问如何区别这角对线出现的按钮。
我使用的是行扫描法:PA2-PA5  PC3-PC5为所用的引脚。

xPORT_A=xPORT_A&(~0x3C); //0x3C(111100)
Wait_ms(10);
tmp=xPORT_C;
tmp=tmp&0x38; //00111000
if(0x38 != tmp)
{
  Wait_ms(10); // Eliminating shiver
  
  if(0x38 != (tmp & 0x38))
  {
   sccode = ~0x04; //从PA2开始扫描
   while(0xFF != sccode)
   {
    xPORT_A = sccode;
    tmp = xPORT_C;
    tmp = tmp & 0x38 ;
    if(0x38 != tmp )
    {
     recode = ((sccode & 0x3C) >> 2) & 0x0f | 0xf0; //PA: xxxx 00 >>2 = xxxx  11111101
     tmpi =  (~((tmp << 1) & 0xf0 | 0x0f)) & 0x7f | (~recode);    //Mode:xxx(pc) xxxx(pa)
     KeyCode[tmpj++] =  tmpi;
    }
     sccode = (sccode << 1)|0x01;  
       Wait_ms(10);
   }
  }
j = tmpj;
i = fnKeycode(tmpj);
ComplexFlag = ComplexFlag + 1;
}  

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。