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

📄 text5.lst

📁 最小系统,能够停留1s实现连击,还有部分双键功能
💻 LST
字号:
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TEXT5
OBJECT MODULE PLACED IN Text5.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Text5.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include <reg51.h>
   2          
   3          sfr   ldata=0x90;
   4          sbit  rs=P2^6;
   5          sbit  rw=P2^5;
   6          sbit  en=P2^4;
   7          sbit  busy=P1^7; 
   8          void  lcdready();
   9          void  lcddata(unsigned  char  value);
  10          void  lcdcmd(unsigned  char  value);
  11          void  countprint(void);
  12          void  doublekey(void);
  13          void clear(void);
  14          void  MSDelay(unsigned  int  value);
  15          unsigned        char  keypad[18]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','&',0x20};
  16          unsigned        char  jishu[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  17          unsigned        char  store[18];
  18          unsigned        char  colloc,rowloc;
  19          unsigned        char   n;
  20          unsigned        char   i=0;
  21          unsigned        char  count;
  22          unsigned        char b;
  23          unsigned        char c;
  24          unsigned        char g,s;
  25          unsigned  char   ge=0,shi=0,bai=0;
  26          
  27          void  KEYread(void);
  28          void LCDprint(unsigned  char  row ,unsigned  char  col);
  29          
  30          void  main(void)
  31          {
  32   1              lcdcmd(0x38);
  33   1              lcdcmd(0x0E);
  34   1              lcdcmd(0x01);
  35   1              lcdcmd(0x80);
  36   1              
  37   1              while(1)
  38   1              {
  39   2                      KEYread();
  40   2                      LCDprint(rowloc,colloc);
  41   2              
  42   2                      //doublekey();
  43   2                      count=10;
  44   2                      while(1)
  45   2                      {
  46   3                              if((P0==n)&&(count!=0))
  47   3                              {
  48   4                                      MSDelay(18);
  49   4                                      count--;
  50   4                              }
  51   3                              else
  52   3                                      break;
  53   3                      } 
  54   2                      
  55   2              }
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 2   

  56   1      
  57   1      }
  58          
  59           void  lcdcmd(unsigned  char  value)
  60           {
  61   1               lcdready();
  62   1               ldata=value;
  63   1               rs=0;
  64   1               rw=0;
  65   1               en=1;
  66   1               MSDelay(1);
  67   1               en=0;
  68   1               return;
  69   1       }
  70          
  71          void  lcdready()
  72            {      
  73   1              busy=1;
  74   1          rs=0;
  75   1          rw=1;
  76   1          while(busy==1)
  77   1          {
  78   2                      en=0;
  79   2                      MSDelay(1);
  80   2                      en=1;
  81   2              }
  82   1              return;
  83   1      }
  84          
  85          
  86          
  87          void  KEYread(void)
  88          {
  89   1              P0=0xFF;
  90   1              P0=0xF0;
  91   1      
  92   1              do
  93   1              {
  94   2                      do
  95   2                      {
  96   3                              MSDelay(1);
  97   3                      colloc=P0;
  98   3                              //colloc &=0xF0;
  99   3                      }while(colloc ==0xF0);
 100   2      
 101   2                      MSDelay(1);
 102   2                      colloc=P0;
 103   2                      //colloc &=0xF0;
 104   2              }while(colloc ==0xF0);
 105   1              n=P0;
 106   1      
 107   1              while(1)
 108   1              {
 109   2                      P0|=0x0E;                
 110   2                      if(P0!=0xFE)
 111   2                       {
 112   3                              rowloc=0;
 113   3                              break;
 114   3                       }
 115   2      
 116   2                      P0&=0xF0;
 117   2                      P0|=0x0D;                
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 3   

 118   2                      if(P0!=0xFD)
 119   2                       {
 120   3                              rowloc=1;
 121   3                              break;
 122   3                       }
 123   2      
 124   2                      P0&=0xF0;
 125   2                      P0|=0x0B;        
 126   2                      if(P0 !=0xFB)
 127   2                       {
 128   3                              rowloc=2;
 129   3                              break;
 130   3                       }
 131   2      
 132   2                      P0&=0xF0;
 133   2                      P0|=0x07;                
 134   2                      rowloc=3;
 135   2                      break;
 136   2               }
 137   1                P0&=0xF0;
 138   1                //colloc=P0;
 139   1      
 140   1      }
 141          
 142          void LCDprint(unsigned  char  row,unsigned  char  col)   
 143          {
 144   1              unsigned  char   value;
 145   1              unsigned  char   no;
 146   1      
 147   1              if(col==0xE0)
 148   1                      col=0;
 149   1              else if(col==0xD0)
 150   1                      col=1;
 151   1              else if(col==0xB0)
 152   1                      col=2;
 153   1              else if(col==0x70)
 154   1                      col=3;
 155   1              else if(col==0x60)
 156   1                      col=4;
 157   1              else if(col==0xA0)
 158   1                      col=5;
 159   1              else if(col==0xC0)
 160   1                      col=6;
 161   1              no=col+ row*4;
 162   1              
 163   1              value=keypad[no];
 164   1              store[i%18]=value;
 165   1              if(no==18)
 166   1              {
 167   2                      clear();
 168   2                      lcdcmd(0x10);
 169   2                      i--;
 170   2                      i--;
 171   2                      i--;
 172   2              }
 173   1              /*if(no==16||no==17)
 174   1              {
 175   1                      i++;
 176   1                      clear();
 177   1                      i--;
 178   1                      i--;
 179   1                      store[i%18]=keypad[no];
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 4   

 180   1              }*/
 181   1              i++;
 182   1              if(     i==17)
 183   1              {
 184   2                      lcdcmd(0x80);
 185   2                      lcdcmd(0x01);
 186   2                      i=1;
 187   2              }
 188   1              lcddata(value);
 189   1              
 190   1              lcdcmd(0x14);
 191   1              lcdcmd(0xC0);
 192   1              jishu[no]++;
 193   1              g=jishu[no]%10;
 194   1              s=jishu[no]/10;
 195   1              lcddata(keypad[s]);
 196   1              lcddata(keypad[g]);
 197   1              //lcdcmd(0x14);
 198   1      
 199   1      
 200   1      
 201   1              //lcdcmd(0xC0);
 202   1              
 203   1              countprint();
 204   1      
 205   1              lcdcmd(0x80);
 206   1              
 207   1              for(b=0;b<i;b++)
 208   1              {
 209   2                      lcdcmd(0x14);
 210   2              }
 211   1      
 212   1              //lcdcmd(0x8i);
 213   1              
 214   1      }
 215          
 216          void countprint(void)
 217          {
 218   1      
 219   1              ge++;
 220   1              if(ge==10)
 221   1              {
 222   2                      shi++;
 223   2                      ge=0;
 224   2                      if(shi==10)
 225   2                      {
 226   3                              bai++;
 227   3                              shi=0;
 228   3                      }
 229   2              }       
 230   1              lcdcmd(0xC6);
 231   1              lcddata(keypad[bai]);
 232   1              lcddata(keypad[shi]);
 233   1              lcddata(keypad[ge]);
 234   1      }
 235          
 236          void clear(void)
 237          {
 238   1              //i=i-2;
 239   1              lcdcmd(0x80);
 240   1              lcdcmd(0x01);
 241   1              for(c=0;c<i-2;c++)
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 5   

 242   1                      lcddata(store[c]);
 243   1              lcdcmd(0x14);
 244   1      
 245   1      }
 246          
 247          
 248          
 249          /*void doublekey(void)
 250          {
 251                  if(rowloc==3&&colloc==1)
 252                  {
 253                          MSDelay(10);
 254                          if(P0!=0xE0)
 255                          switch(P0)
 256                          {
 257                                  case 0xA0:      
 258                                          lcdcmd(0x80);
 259                                          lcddata(0x20);
 260                                          //lcdcmd(0xC0);
 261                                          countprint();   
 262                                          break;
 263          
 264                                  case 0x60:
 265                                          P0|=0x0E;                
 266                                          if(P0==0x7E)
 267                                           {
 268                                                  lcdcmd(0x80);
 269                                                  lcddata(0x26);
 270                                                  //lcdcmd(0xC0);
 271                                                  countprint();
 272                                                  break;
 273                                           }
 274          
 275                                          P0&=0xF0;
 276                                          P0|=0x0D;
 277                                                           
 278                                          if(P0==0x7D)
 279                                           {
 280                                                  lcdcmd(0x80);
 281                                                  lcddata(0x7C);
 282                                                  //lcdcmd(0xC0);
 283                                                  countprint();
 284                                                  break;
 285                                           }
 286          
 287                                          P0&=0xF0;
 288                                          P0|=0x0B;                
 289                                          if(P0==0x7B)
 290                                           {
 291                                                  lcdcmd(0x80);
 292                                                  lcddata(0x21);
 293                                                  //lcdcmd(0xC0);
 294                                                  countprint();
 295                                                  break;
 296                                           }
 297          
 298                                          lcdcmd(0x80);
 299                                          lcddata(0x5E);
 300                                          //lcdcmd(0xC0);
 301                                          countprint();
 302                                          break;
 303                                  }
C51 COMPILER V7.50   TEXT5                                                                 06/04/2008 17:04:17 PAGE 6   

 304                          MSDelay(10);
 305                  }
 306          }*/
 307           void  lcddata(unsigned  char  value)
 308           { 
 309   1               lcdready();
 310   1               ldata=value;
 311   1               rs=1;
 312   1               rw=0;
 313   1               en=1;
 314   1               MSDelay(1);
 315   1               en=0;
 316   1               return;
 317   1       }
 318          
 319           void  MSDelay(unsigned  int   value)
 320          {
 321   1              unsigned  int  x,y;
 322   1              for(x=0; x < value; x++)
 323   1                      for(y=0; y< 1275; y++);
 324   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    536    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     67       4
   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 + -