南三 发表于 2019-10-2 11:49:29

按键矩阵

       #include "reg52.h"
       
   typedefunsigned char u8;
   typedefunsigned int u16;

       sbit LSA = P2^2;
       sbit LSB = P2^3;
       sbit LSC = P2^4;

        #define GPIO_KEY P1;
        #define GPIO_DIG P0;

   u8 KeyValue;

       u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                            0x7d,0x07,0x7f,0x6f,0x77,0x7c,
                                                0x39,0x5e,0x79,0x71,0x00};
       
       void KeyDown()
       {
                u8 a=0;
                     GPIO_KEY = 0x0f;
                  if(GPIO_KEY != 0x0f)
                        {
                                delay(1000);
                                if(GPIO_KEY != 0x0f)
                                {
                                        GPIO_KEY = 0x0f;
                                        switch(GPIO_KEY)//列
                                       {
                                                           case 0x07:KeyValue=0;        break;
                                                           case 0x0b:KeyValue=1;        break;
                                                           case 0x0d:KeyValue=2;        break;
                                                           case 0x0e:KeyValue=3;        break;
                                       }
                                       GPIO_KEY = 0xf0;
                                       switch(GPIO_KEY)//行
                                       {
                                                           case 0x70:KeyValue=KeyValue;       break;
                                                           case 0xb0:KeyValue=KeyValue+4;       break;
                                                           case 0xd0:KeyValue=KeyValue+8;       break;
                                                           case 0xe0:KeyValue=KeyValue+12; break;
                                       }
                                       while((a<50)&&(GPIO_KEY!=0xf0))
                                       {
                                                          delay(1000);
                                                          a++;
                                       }
                                }
                        }
       }
       
       void delay(u16 i)
       {
          while(i--);
       }
       void main()
       {
                LSA=0;
                          LSB=0;
                          LSC=0;
                       
                        while(1)
                        {
                              KeyDown();
                                  GPIO_DIG=smgduan;
                        }
                       
       }                  
提示:MAIN.C(23): error C141: syntax error near '!='
          MAIN.C(23): error C141: syntax error near ')'
         Target not created
页: [1]
查看完整版本: 按键矩阵