普中科技单片机开发板HC6800-ES-V2.0矩阵键盘实验无法使用?

2019-03-24 18:13发布

各位大神·,这是我根据普中单片机开发板HC6800-ES-V2.0的矩阵键盘上的讲解编的程序,但达不到预期效果,显示倒是可以显示,但按键只能按一次,比如按s1就显示0,但接着按其他键就没反应了,还是0。求大神指导。
#include<reg51.h>
void Delay10ms();
unsigned char S[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                                                                                                                          
void Delay10ms();                                                                                                                                  
void main()
{
  unsigned char a=0;
  
  P2=0x0f;
  while(1)
  {
          if(P2!=0x0f)               
        {
          Delay10ms();
          if(P2!=0x0f)
          {
           switch (P2)
           {
                   case(0x07):M=1;break;
                case(0x0b):M=2;break;
                case(0x0d):M=3;break;
                case(0x0e):M=4;break;
           }
           P2=0xf0;
           switch(P2)
           {
            case(0x70):M=M;break;
                case(0xb0):M=M+4;break;
                case(0xd0):M=M+8;break;
                case(0xe0):M=M+12;break;
           }
           while((a<50)&&(P2!=0xf0))
           {
            Delay10ms();
            a++;
           }
           switch(M)
           {
                   case(1):P0=S[0];break;
                case(2):P0=S[1];break;
            case(3):P0=S[2];break;
                case(4):P0=S[3];break;
                case(5):P0=S[4];break;
                case(6):P0=S[5];break;
                case(7):P0=S[6];break;
                case(8):P0=S[7];break
                case(9):P0=S[8];break;
                case(10):P0=S[9];break;
                                                                 
           }
          }
         }
        }
}
       

void Delay10ms()
{
unsigned char a,b,c;
   for(c=1;c>0;c--)
     for(b=38;b>0;b--)
          for(a=130;a>0;a--);
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。