奇怪的矩阵键盘问题

2019-07-16 05:18发布


本人系新手。在进行矩阵键盘实验时,没有按照常规的方法(一行行扫描全部列举出来),而是用循环扫描的方法,结果出现了问题:如果按下的第一个键是第一行按键时,能正常显示;而后第一行按键就没有任何反应。
用Keil软件调试没有问题。
望解答!!

(不得不附上不完全代码
uchar code table1[]={0x70,0xb0,0xd0,0xe0};
uint table2[]={0xfe,0xfd,0xfb,0xf7};
void main()
{
        while(1)
        {
                for(j = 0;j<4;j++)//行扫描
                {
                        P3 = table2[j];//将检测第j行的代码赋给P3
                        temp = P3;
                        if((temp&0xf0)!=0xf0)//有键被按下
                        {
                                t = 10;
                                while(t--) display(num,1);
                                if((P3&0xf0)!=0xf0)//确认有键被按下
                                {
                                         temp = temp&0xf0;
                                         while((P3&0xf0)!=0xf0);
                                         for(i = 0;i<4;i++)
                                         {
                                                 if(table1==temp)//列扫描
                                                {
                                                        num = j*4+i+1;
                                                }
                                         }
                                }
                        }
                        display(num,1);                        
                }
        }
}


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