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

📄 key4x4.lst

📁 矩阵键盘和LCD1602显示 按单个键数字将显示1602上
💻 LST
字号:
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEY4X4
OBJECT MODULE PLACED IN H:\MYPROJ~1\矩阵键盘\KEY4X4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE H:\MYPROJ~1\矩阵键盘\KEY4X4.C DB SB OE

line level    source

   1          #include "reg51.h"
   2          #include"intrins.h"
   3          #define  uchar unsigned char
   4          #define  uint  unsigned int
   5          #define nop  _nop_()                    /*定义空操作指令*/
   6          sbit lcdrs=P3^2;
   7          sbit lcdrw=P3^3;
   8          sbit lcden=P3^4;
   9          unsigned char temp,num1;
  10          unsigned char key;
  11          unsigned char i,j;
  12          uint count,num;
  13          uchar code table[]={"I LOVE ME!"};
  14          sbit K1=P2^7;
  15          sbit K2=P2^6;
  16          sbit K3=P2^5;
  17          sbit K4=P2^4;
  18          sbit K5=P2^3;
  19          sbit K6=P2^2;
  20          sbit K7=P2^1;
  21          sbit K8=P2^0;
  22          uchar keyscan();
  23          void delay1s(void)
  24          {
  25   1      
  26   1        unsigned char i,j,k;
  27   1      
  28   1        for(k=100;k>0;k--)
  29   1      
  30   1        for(i=20;i>0;i--)
  31   1      
  32   1        for(j=248;j>0;j--);
  33   1      
  34   1      }
  35          
  36          
  37          
  38          void delay(uint z)
  39          {uchar x,y;
  40   1       for(x=z;x>0;x--)
  41   1          for(y=110;y>0;y--);
  42   1      }
  43          
  44          void lcdwrite_com(uchar com)
  45          { lcdrw=0;
  46   1       lcdrs=0;
  47   1       P0=com;
  48   1       delay(5);
  49   1       lcden=1;
  50   1       delay(5);
  51   1       lcden=0;
  52   1      }
  53          void lcdwrite_data(uchar date)
  54          {
  55   1       lcdrs=1;
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 2   

  56   1       lcdrw=0;
  57   1       P0=date;
  58   1       delay(5);
  59   1       lcden=1;
  60   1       delay(5);
  61   1       lcden=0;
  62   1      }
  63          void lcdinit()
  64          {
  65   1      lcden=0;
  66   1      lcdwrite_com(0x38);
  67   1      
  68   1      lcdwrite_com(0x01);
  69   1      lcdwrite_com(0x0C);
  70   1      lcdwrite_com(0x06);
  71   1      lcdwrite_com(0x80);
  72   1      
  73   1      }
  74          void delaykey()
  75          {
  76   1        for(i=50;i>0;i--)
  77   1           for(j=200;j>0;j--);
  78   1      }
  79          
  80          void main(void)
  81          {   lcdinit();
  82   1         while(1)
  83   1          { 
  84   2          keyscan();
  85   2          
  86   2           
  87   2          }  //while
  88   1      }
  89          uchar keyscan()
  90          {
  91   1           P2=0x7f;
  92   1            //K1=0;
  93   1            temp=P2;
  94   1            temp=temp & 0x0f;
  95   1            if (temp!=0x0f)
  96   1              {
  97   2                 delaykey();
  98   2                temp=P2;
  99   2                temp=temp & 0x0f;
 100   2                if (temp!=0x0f)
 101   2                  {
 102   3                    temp=P2;
 103   3                    temp=temp & 0x0f;
 104   3                    switch(temp)
 105   3                      {
 106   4                        case 0x0e:
 107   4                          key='F';
 108   4                        lcdwrite_com(0x01);
 109   4      
 110   4                          break;
 111   4                        case 0x0d:
 112   4                          key='B';
 113   4                          lcdwrite_com(0x01);
 114   4                          break;
 115   4                        case 0x0b:
 116   4                          key=0X38;
 117   4                          lcdwrite_com(0x01);
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 3   

 118   4                          break;
 119   4                        case 0x07:
 120   4                          key=0x34;
 121   4                          lcdwrite_com(0x01);
 122   4                          break;
 123   4                      }
 124   3                //    temp=P2;
 125   3      
 126   3                  lcdwrite_data(key);
 127   3      
 128   3      
 129   3                  //  temp=temp & 0x0f;
 130   3                    while(temp!=0x0f)       //释放键消抖
 131   3                      {
 132   4                        temp=P2;
 133   4                        temp=temp & 0x0f;
 134   4                      }
 135   3                  }
 136   2              }
 137   1      
 138   1            P2=0xbf;
 139   1           // K2=0;
 140   1            temp=P2;
 141   1            temp=temp & 0x0f;
 142   1            if (temp!=0x0f)
 143   1              {
 144   2              delaykey();
 145   2                temp=P2;
 146   2                temp=temp & 0x0f;
 147   2                if (temp!=0x0f)
 148   2                  {
 149   3                    temp=P2;
 150   3                    temp=temp & 0x0f;
 151   3                    switch(temp)
 152   3                      {
 153   4                        case 0x0e:
 154   4                          key='E';
 155   4                          lcdwrite_com(0x01);
 156   4                          break;
 157   4                        case 0x0d:
 158   4                          key='A';
 159   4                          lcdwrite_com(0x01);
 160   4                          break;
 161   4                        case 0x0b:
 162   4                          key=0X37;
 163   4                          lcdwrite_com(0x01);
 164   4                          break;
 165   4                        case 0x07:
 166   4                          key=0X33;
 167   4                         lcdwrite_com(0x01);
 168   4                          break;
 169   4                      }
 170   3                   // temp=P2;
 171   3                    //P1^0=~P1^0;
 172   3                lcdwrite_data(key);
 173   3                    //temp=temp & 0x0f;
 174   3                    while(temp!=0x0f)
 175   3                      {
 176   4                        temp=P2;
 177   4                        temp=temp & 0x0f;
 178   4                      }
 179   3                  }
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 4   

 180   2              }
 181   1      
 182   1            P2=0xdf;
 183   1           // K3=0;
 184   1            temp=P2;
 185   1            temp=temp & 0x0f;
 186   1            if (temp!=0x0f)
 187   1              {
 188   2              delaykey();
 189   2                temp=P2;
 190   2                temp=temp & 0x0f;
 191   2                if (temp!=0x0f)
 192   2                  {
 193   3                    temp=P2;
 194   3                    temp=temp & 0x0f;
 195   3                    switch(temp)
 196   3                      {
 197   4                        case 0x0e:
 198   4                          key='D';
 199   4                          lcdwrite_com(0x01);
 200   4                          break;
 201   4                        case 0x0d:
 202   4                          key=0X30;
 203   4                         lcdwrite_com(0x01);
 204   4                          break;
 205   4                        case 0x0b:
 206   4                          key=0X36;
 207   4                         lcdwrite_com(0x01);
 208   4                          break;
 209   4                        case 0x07:
 210   4                          key=0X32;
 211   4                       lcdwrite_com(0x01);
 212   4                          break;
 213   4                      }
 214   3                   // temp=P2;
 215   3                    //P1^0=~P1^0;
 216   3                  lcdwrite_data(key);
 217   3                   // temp=temp & 0x0f;
 218   3                    while(temp!=0x0f)
 219   3                      {
 220   4                        temp=P2;
 221   4                        temp=temp & 0x0f;
 222   4                      }
 223   3                  }
 224   2              }
 225   1      
 226   1            P2=0xef;
 227   1           // K4=0;
 228   1            temp=P2;
 229   1            temp=temp & 0x0f;
 230   1            if (temp!=0x0f)
 231   1              {
 232   2               delaykey();
 233   2                temp=P2;
 234   2                temp=temp & 0x0f;
 235   2                if (temp!=0x0f)
 236   2                  {
 237   3                    temp=P2;
 238   3                    temp=temp & 0x0f;
 239   3                    switch(temp)
 240   3                      {
 241   4                        case 0x0e:
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 5   

 242   4                          key='C';
 243   4                          lcdwrite_com(0x01);
 244   4                          break;
 245   4                        case 0x0d:
 246   4                          key=0X39;
 247   4                        lcdwrite_com(0x01);
 248   4                          break;
 249   4                        case 0x0b:
 250   4                          key=0X35;
 251   4                      lcdwrite_com(0x01);
 252   4                          break;
 253   4                        case 0x07:
 254   4                          key=0X31;
 255   4                       lcdwrite_com(0x01);
 256   4                          break;
 257   4                      }
 258   3                  //  temp=P2;
 259   3                    //P1^0=~P1^0;
 260   3                   lcdwrite_data(key);
 261   3                   // temp=temp & 0x0f;
 262   3                    while(temp!=0x0f)
 263   3                      {
 264   4                        temp=P2;
 265   4                        temp=temp & 0x0f;
 266   4                      }
 267   3                    }
 268   2                 }
 269   1      
 270   1      }
*** WARNING C173 IN LINE 270 OF H:\MYPROJ~1\矩阵键盘\KEY4X4.C: missing return-expression
C51 COMPILER V8.02   KEY4X4                                                                12/30/2008 12:02:56 PAGE 6   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
num1 . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
lcden. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
table. . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  11
lcdrs. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
lcdrw. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
count. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0001H  2
delay1s. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
temp . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
_lcdwrite_data . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  date . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
key. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0004H  1
num. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0005H  2
delaykey . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_lcdwrite_com. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  com. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
i. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0007H  1
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0008H  1
lcdinit. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     000FH  -----
  z. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  x. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  y. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
keyscan. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    491    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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