给自己的实验板写的矩阵键盘程序,请前辈帮小弟找错!

2019-07-16 03:00发布

小弟看过郭天祥的视频后,给自己的实验板写的矩阵键盘程序,但是下载后什么反应也没有,又找不出哪里不对。请各位前辈帮小弟找找错在哪里。
程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,temp;
sbit dula=P3^6;
sbit wela=P3^7;
uchar code table[]={
0xc0 , 0xf9 , 0xa4 , 0xb0 , 0x99 , 0x92 ,
0x82 , 0xf8 , 0x80 , 0x90 , 0x88 , 0x80 ,
0xc6 , 0xc0 , 0x86 , 0x8e , 0xff};
void delay(uint z);
void display(uchar aa);
uchar keyscan();
void main()
{
        num=17;        
        dula=1;
        P0=0xff;
        dula=0;

        wela=1;
        P2=0xfe;
        wela=0;        
        while(1)
        {
                display(keyscan());
        }
}
void display(uchar aa)
{
        dula=1;
        P0=table[aa-1];
        dula=0;               
}
uchar keyscan()
{
                P1=0xf7;
                temp=P1;
                temp=temp&0xf0;
                while(1)
                {
                        delay(5);
                        temp=P1;
                        temp=temp&0xf0;
                        while(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xe0: num=1;
                                                break;        
                                        case 0xd0: num=2;
                                                break;        
                                        case 0xb0: num=3;
                                                break;        
                                        case 0x70: num=4;
                                                break;        
                                }
                        while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }
                        }                        
                }

                P1=0xfb;
                temp=P1;
                temp=temp&0xf0;
                while(1)
                {
                        delay(5);
                        temp=P1;
                        temp=temp&0xf0;
                        while(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xe0: num=5;
                                                break;        
                                        case 0xd0: num=6;
                                                break;        
                                        case 0xb0: num=7;
                                                break;        
                                        case 0x70: num=8;
                                                break;        
                                }
                        while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }
                        }                        
                }
                        
                P1=0xfd;
                temp=P1;
                temp=temp&0xf0;
                while(1)
                {
                        delay(5);
                        temp=P1;
                        temp=temp&0xf0;
                        while(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xe0: num=9;
                                                break;        
                                        case 0xd0: num=10;
                                                break;        
                                        case 0xb0: num=11;
                                                break;        
                                        case 0x70: num=12;
                                                break;        
                                }
                        while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }
                        }                        
                }
                        
                P1=0xfe;
                temp=P1;
                temp=temp&0xf0;
                while(1)
                {
                        delay(5);
                        temp=P1;
                        temp=temp&0xf0;
                        while(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xe0: num=13;
                                                break;        
                                        case 0xd0: num=14;
                                                break;        
                                        case 0xb0: num=15;
                                                break;        
                                        case 0x70: num=16;
                                                break;        
                                }
                        while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }
                        }
                                       
                }
return num;
}

void delay(uint z)
{
        uint x,y;
        for(x=110;x>0;x--)
                for(y=z;y>0;y--);
}



               

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