用矩阵键盘控制数码管但为什么这个程序烧到51单片机里面去按一次矩阵键盘响一次啊是程序的问题吗?

#include<reg52.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
int H=0,L=0,A=0;
int zxm[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  void delay(int x)
   { 
		 while(x--);
   } 
	void keyproc()
	{
 		P1=0x0f;
		if(P1!=0X0f)
		{
			delay(10);
			if(P1!=0x0f)
			{
				L=P1;
			}
		}
		P1=0xf0;
		if(P1!=0xf0)
		{
			delay(10);
			if(P1!=0xf0)
			{
				H=P1;
			}
		}
			A=H|L;
		switch(A)
		   {
			          case 0x77: P0=0X3f;break;
			          case 0x7b: P0=0X06;break;
			          case 0x7d: P0=0X5b;break;
				        case 0x7e: P0=0x4f;break;

                case 0xb7: P0=0x66;break;
                case 0xbb: P0=0x6d;break;
                case 0xbd: P0=0x7d;break;
                case 0xbe: P0=0x07;break;

                case 0xd7: P0=0x7f;break;
                case 0xdb: P0=0x6f;break;
                case 0xdd: P0=0x77;break;
                case 0xde: P0=0x7c;break;

                case 0xe7: P0=0x39;break;
                case 0xeb: P0=0x5e;break;
                case 0xed: P0=0x79;break;
                case 0xee: P0=0x71;break;
                default:P0=0;
			 }
			
	 }
	void main()
	{
		LSA=1; LSB=0;LSC=0;
		P0=0X00;
	 while(1)
	 {
		keyproc();
	 }
 }

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^