⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getkey.lst

📁 矩阵按键程序
💻 LST
字号:
C51 COMPILER V8.02   GETKEY                                                                12/08/2008 23:20:59 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE GETKEY
OBJECT MODULE PLACED IN getkey.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE getkey.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X51.H>
   2          unsigned char col[4]={0xef,0xdf,0xbf,0x7f};             
   3          unsigned char row[4]={0x07,0x0b,0x0d,0x0e}; 
   4          #define uint unsigned int 
   5          #define uchar unsigned char
   6           
   7          void delaynms(uint  n)
   8          {uchar i;
   9   1      while(n--)
  10   1              {for(i=0;i<125;i++);
  11   2              }
  12   1      }
  13          
  14           
  15          unsigned char GetKeyVal()
  16          {
  17   1              uint i,j,getSta,keyVal;
  18   1              
  19   1              for(i=0;i<4;i++)              
  20   1              {                                                       
  21   2                      P2= col[i];
  22   2                      //delay_us(2);       
  23   2                      if(P2!=col[i])
  24   2                      {
  25   3                              getSta=P2&0x0F;
  26   3                              for(j=0;j<4;j++)    
  27   3                                      if(getSta==row[j])                                 
  28   3                                      {
  29   4                                              keyVal=j+i*4;
  30   4                                              switch (keyVal)         //按键校正
  31   4                                              {
  32   5                                              case 7:
  33   5                                                      keyVal=5;break;
  34   5                                              case 10:
  35   5                                                      keyVal=6;break;
  36   5                                              case 13:
  37   5                                                      keyVal=7;break;
  38   5                                              case 5:
  39   5                                                      keyVal=8;break;
  40   5                                              case 8:
  41   5                                                      keyVal=9;break;
  42   5                                              case 11:
  43   5                                                      keyVal=10;break;
  44   5                                              case 14:
  45   5                                                      keyVal=11;break;
  46   5                                              case 6:
  47   5                                                      keyVal=12;break;
  48   5                                              case 9:
  49   5                                                      keyVal=13;break;
  50   5                                              case 12:
  51   5                                                      keyVal=14;break;
  52   5                                              }
  53   4      
  54   4                                              return keyVal;
  55   4                                      }
C51 COMPILER V8.02   GETKEY                                                                12/08/2008 23:20:59 PAGE 2   

  56   3                      }
  57   2              }
  58   1              return 0xFF;
  59   1      }
  60          //**********************************
  61          void main(void)
  62          {
  63   1      unsigned char temp;
  64   1      P2=0xFF;
  65   1      while (1)
  66   1            {
  67   2              temp=GetKeyVal();
  68   2              if (temp!=0xff)
  69   2              {if(temp==9)P1_0=~P1_0;
  70   3              else if(temp==10)P1_1=~P1_1;
  71   3              else if(temp==11)P1_2=~P1_2;
  72   3              else if(temp==12)P1_3=~P1_3;
  73   3                      
  74   3                      
  75   3                      
  76   3                //lcd_putchar(0x30+temp);     //0~F
  77   3                while(GetKeyVal()!=0xff);     //等待按键弹起
  78   3              }
  79   2              delaynms(10);                   //消除抖动
  80   2              
  81   2      
  82   2            };
  83   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    315    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -