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

📄 1602c.lst

📁 包插说明书,PCB,SCH图,及N多源代码例子,网上卖的很火的一款
💻 LST
字号:
C51 COMPILER V7.07   1602C                                                                 10/06/2006 22:47:33 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE 1602C
OBJECT MODULE PLACED IN 1602c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602c.c BROWSE INCDIR(C:\Attached Softwares\Keil\C51\INC\Atmel\;C:\ATTACHED
                    - SOFTWARES\KEIL\C51\INC\) DEBUG OBJECTEXTEND

stmt level    source

   1          #include "at89x52.h"
   2          #include "intrins.h"
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define nop _nop_()
   6          #define  SCAN_CYCLE 10000
   7          #define  CYCLE  20
   8          sbit RS=P2^7;
   9          sbit RW=P2^6;
  10          sbit E=P2^5;
  11          #define DB0_DB7 P0
  12          uchar cycle,TEMP;
  13          uchar Dataflag,Cmdflag;
  14          uint counti;
  15          uint i=0;
  16          static const uchar code wenzi[]={0x4f,0x77,0x65,0x6e,0x20,0x53,0x74,0x75,
  17                                           0x64,0x69,0x6f,0x20,0x69,0x73,0x20,0x61,
  18                                                                           0x69,0x6d,0x69,0x6e,0x67,0x20,0x61,0x74,
  19                                                                           0x20,0x6f,0x66,0x66,0x65,0x72,0x69,0x6e,
  20                                                                           0x67,0x20,0x73,0x74,0x61,0x74,0x65,0x2d,
  21                                                                           0x6f,0x66,0x2d,0x61,0x72,0x74,0x20,0x64,
  22                                                                           0x65,0x73,0x69,0x67,0x6e,0x20,0x66,0x6f,
  23                                                                           0x72,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,
  24                                                                           0x65,0x72,0x73,0x21};
  25          void init();
  26          void ScreenInitString(void);
  27          void Write(uchar tempdata);
  28          void WriteDDR(uchar tempdata);
  29          void CheckBusy();
  30          void Write1(uchar tempdata);
  31          void WriteDDR1(uchar tempdata);
  32          void CheckBusy1();
  33          void Delay(uint N);
  34          
  35          main()
  36          {
  37   1          T2CON=0x38;                 /*令定时器2作为串口波特率发生器
  38   1                                              /*|TF2|EXF2|RCLK|TCLK|EXEN2|TR2|C/T2|CP/RL2|*/
  39   1              TL2=0xd9;                       /*设定串口波特率为9600,晶振为12MHz*/
  40   1              TH2=0xff;               
  41   1              RCAP2L=0xd9;        /*根据串口波特率9600设定自动重载寄存器*/
  42   1              RCAP2H=0xff;            
  43   1          TR2=1;
  44   1      
  45   1              TMOD=0x11;                      /*Timer0工作在案MODE1,16位定时器,Timer1工作在MODE2,自动重新装载模式*/
  46   1                                              /*|    定时器1        |     定时器1       |*/
  47   1                                              /*| GATE|C/T| M1 | M0 | GATE|C/T| M1 | M0 |*/
  48   1              TH0=(65536-SCAN_CYCLE)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/
  49   1          TL0=(65536-SCAN_CYCLE)%256;                                 /*启动TEMER0*/
  50   1              SCON=0x50;                      /*设定UART工作在MODE3模式,可传送和接收数据,REN=1*/
  51   1                                                  /*| SM0| SM1| SM2| REN| TB8| RB8| TI | RI |*/
  52   1          IE=0x92;                    /*使能总中断、Timer0,1中断、外部中断1,2*/
  53   1                                              /*| EA| - | ET2| ES | ET1| EX1| ET0| EX0|*/
  54   1              cycle=50;
C51 COMPILER V7.07   1602C                                                                 10/06/2006 22:47:33 PAGE 2   

  55   1              SP=60;
  56   1              P2=0x00;
  57   1              init();
  58   1              counti=0;
  59   1              ScreenInitString();
  60   1              while(1)
  61   1              nop;
  62   1      }
  63          void Delay(uint N)
  64          {
  65   1          for(i=0;i<N;i++)
  66   1              i=i;
  67   1      }
  68          void init()
  69          {
  70   1          RS=0;
  71   1              RW=0;
  72   1              E=1;
  73   1          Write(0x38);
  74   1          Delay(1000);
  75   1              Write(0x38);
  76   1          Delay(1000);
  77   1              Write(0x38);
  78   1              Write(0x0F);
  79   1              Write(0x06);
  80   1              Write(0x01);
  81   1      }
  82          
  83          void ScreenInitString(void)
  84          {
  85   1          Write(0x80);
  86   1              WriteDDR(0x3E);
  87   1          WriteDDR(0x3E);
  88   1          WriteDDR(0x4F);
  89   1          WriteDDR(0x77);
  90   1          WriteDDR(0x65);
  91   1          WriteDDR(0x6E);
  92   1          WriteDDR(0x20);
  93   1          WriteDDR(0x20);
  94   1          WriteDDR(0x53);
  95   1          WriteDDR(0x74);
  96   1          WriteDDR(0x75);
  97   1          WriteDDR(0x64);
  98   1          WriteDDR(0x69);
  99   1          WriteDDR(0x6F);
 100   1          WriteDDR(0x3C);
 101   1          WriteDDR(0x3C);
 102   1      
 103   1          Write(0xC0);
 104   1              WriteDDR(0x44);
 105   1          WriteDDR(0x65);
 106   1          WriteDDR(0x73);
 107   1          WriteDDR(0x69);
 108   1          WriteDDR(0x67);
 109   1          WriteDDR(0x6E);
 110   1          WriteDDR(0x20);
 111   1          WriteDDR(0x66);
 112   1          WriteDDR(0x6F);
 113   1          WriteDDR(0x72);
 114   1          WriteDDR(0x20);
 115   1          WriteDDR(0x79);
 116   1          WriteDDR(0x6F);
C51 COMPILER V7.07   1602C                                                                 10/06/2006 22:47:33 PAGE 3   

 117   1          WriteDDR(0x75);
 118   1          WriteDDR(0x21);
 119   1          WriteDDR(0x21);
 120   1      }
 121          void Write(uchar tempdata)
 122          {
 123   1          DB0_DB7=tempdata;
 124   1              RS=0;
 125   1              RW=0;
 126   1              E=0;
 127   1              nop;
 128   1              E=1;
 129   1              nop;
 130   1              CheckBusy();
 131   1      }
 132          void WriteDDR(uchar tempdata)
 133          {
 134   1          DB0_DB7=tempdata;
 135   1              RS=1;
 136   1              nop;
 137   1              RW=0;
 138   1              E=0;
 139   1              nop;
 140   1              E=1;
 141   1              nop;
 142   1              CheckBusy();
 143   1      }
 144          void CheckBusy()
 145          {
 146   1              DB0_DB7=0xff;
 147   1              RW=1;
 148   1              RS=0;
 149   1              E=0;
 150   1              nop;
 151   1              E=1;
 152   1              do
 153   1              {
 154   2                      nop;
 155   2              TEMP=DB0_DB7;
 156   2              }while((TEMP&0x80)==0x80);
 157   1              RW=0;
 158   1      } 
 159          void Write1(uchar tempdata)
 160          {
 161   1          DB0_DB7=tempdata;
 162   1              RS=0;
 163   1              RW=0;
 164   1              E=0;
 165   1              nop;
 166   1              E=1;
 167   1              nop;
 168   1              CheckBusy1();
 169   1      }
 170          void WriteDDR1(uchar tempdata)
 171          {
 172   1          DB0_DB7=tempdata;
 173   1              RS=1;
 174   1              nop;
 175   1              RW=0;
 176   1              E=0;
 177   1              nop;
 178   1              E=1;
C51 COMPILER V7.07   1602C                                                                 10/06/2006 22:47:33 PAGE 4   

 179   1              nop;
 180   1              CheckBusy1();
 181   1      }
 182          void CheckBusy1()
 183          {
 184   1              DB0_DB7=0xff;
 185   1              RW=1;
 186   1              RS=0;
 187   1              E=0;
 188   1              nop;
 189   1              E=1;
 190   1              do
 191   1              {
 192   2                      nop;
 193   2              TEMP=DB0_DB7;
 194   2              }while((TEMP&0x80)==0x80);
 195   1              RW=0;
 196   1      }
 197                  
 198          void service_int0 () interrupt 1 using 2
 199          {
 200   1              cycle--;
 201   1              if(cycle==0)
 202   1              {
 203   2                  cycle=CYCLE;
 204   2              if(counti<=14)
 205   2                      {
 206   3                          WriteDDR1(wenzi[counti]);
 207   3                              counti++;
 208   3                      }
 209   2                      else if(counti>14 && counti<sizeof(wenzi))
 210   2                      {
 211   3                          Write1(0x07);
 212   3                  WriteDDR1(wenzi[counti]);
 213   3                              counti++;
 214   3                      }
 215   2                      else
 216   2                      {
 217   3                  counti=0;
 218   3                  Write1(0x01);
 219   3                          Write1(0x06);
 220   3                      }
 221   2              }
 222   1              TH0=(65536-SCAN_CYCLE)/256; 
 223   1          TL0=(65536-SCAN_CYCLE)%256; 
 224   1      }
 225          
 226          void service_int1 () interrupt 4 using 1
 227          {
 228   1          if(TI==1)
 229   1              {
 230   2                  TI=0;
 231   2                      return;
 232   2              }
 233   1              else
 234   1              {
 235   2              uchar v;
 236   2              while(RI!=1);
 237   2                  {
 238   3                      RI=0;
 239   3                          v=SBUF;
 240   3                          if(v==65)//A        
C51 COMPILER V7.07   1602C                                                                 10/06/2006 22:47:33 PAGE 5   

 241   3                          {
 242   4                                      TR0=1;             //Start timer
 243   4                                      Write1(0x01);
 244   4                                      counti=0;
 245   4                          }
 246   3                          else if(v==66)//B   
 247   3                          {
 248   4                                      TR0=0;             //Stop timer
 249   4                          }
 250   3                  else if(v==67)//C
 251   3                          {
 252   4                                  Write1(0x01);      //CLR Screen
 253   4                          }
 254   3                              else if(v==68)//D
 255   3                          {
 256   4                                  Write1(0x18);      //Set string left moving
 257   4                          }
 258   3                              else if(v==69)//E
 259   3                          {
 260   4                                  Write1(0x1C);      //Set label right moving
 261   4                          }
 262   3                              else
 263   3                              {
 264   4                                  WriteDDR1(v);
 265   4                                  SBUF=v;
 266   4                                  while(TI!=1);
 267   4                                  TI=0;
 268   4                              }
 269   3              }
 270   2              }
 271   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    643    ----
   CONSTANT SIZE    =     68    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       1
   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 + -