关于矩阵键盘程序

2019-07-15 19:39发布

请教下矩阵键盘程序加了去抖程序哪里错误。
个人用的反转法,发现不加去抖程序的时候运行正常。加了去抖反而检测不出按键了,求教。
程序如下,“//”后面的内容加了为去抖的。

uchar scan()
{
//        P1=0xf0;
//        temp=P1;
//        if(temp!=0xf0)
//        {
//                delay(5);
//                temp=P1;
//                if(temp!=0xf0)
//                {
                        P1=0xf0;
                        delay(5);
                    temp=P1&0xF0;
                    temp=~((temp>>4)|0xf0);
                        switch(temp)
                        {
                                case 8:key=1;break;
                                case 4:key=2;break;
                                case 2:key=3;break;
                                case 1:key=4;break;
                                default:key=17;
                        }                        
                    P1=0x0f;        //低四位输入
                    delay(5);  
                    temp=P1&0x0f;
                    temp=~(temp|0xF0);
                        switch(temp)
                        {
                                case 8:key=key+0;break;
                                case 4:key=key+4;break;
                                case 2:key=key+8;break;
                                case 1:key=key+12;break;
                                default:key=17;
                        }
//                           }}
        return key;
        }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。