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

📄 text1.lst

📁 电子钟实验
💻 LST
字号:
C51 COMPILER V8.02   TEXT1                                                                 10/29/2008 18:32:58 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          sbit rs=P1^6;
   7          sbit rw=P1^5;
   8          sbit ep=P1^4;
   9          
  10          uchar code rr[]={"D:"};
  11          uchar code ff[]={"W:"};
  12          uchar code ss[]={"Time:"};
  13          uchar code table[]={"0123456789-"};
  14          uchar cnt=0,id=0;
  15          uint nn=2008;
  16          uchar hour=23,min=59,sec=45,xx=1,yy=1,tt=1;
  17          uchar qq[]={"000000000000000000"};
  18          uchar flang;
  19          
  20          void delay(uint n) 
  21          {
  22   1        uchar i,j;
  23   1        for(i=0;i<n;i++)
  24   1         for(j=0;j<121;j++)
  25   1         ;
  26   1      }
  27          
  28          void xmjc(void)   //闲忙检测
  29          {
  30   1        rs=0;
  31   1        rw=1;
  32   1        ep=1;
  33   1        while(P2&0x80)
  34   1        ;
  35   1        ep=0;
  36   1      }
  37          
  38          
  39          void xml(unsigned char comm)  //写命令
  40          {
  41   1        xmjc();
  42   1        rs=0;
  43   1        rw=0;
  44   1        ep=1;
  45   1        P2=comm;
  46   1        ep=0;
  47   1      }
  48          
  49          void xsj(unsigned char dat)
  50          {
  51   1       xmjc();
  52   1       rs=1;
  53   1       rw=0;
  54   1       ep=1;
  55   1       P2=dat;
C51 COMPILER V8.02   TEXT1                                                                 10/29/2008 18:32:58 PAGE 2   

  56   1       ep=0;
  57   1      }
  58          void lcd_init(void)      //1602初始化
  59          {
  60   1        xml(0x38);
  61   1        xml(0x06);//光标和显示模式设置
  62   1        xml(0x0c);
  63   1        xml(0x01);
  64   1      }
  65          
  66          
  67          
  68          void sjzh(void)
  69          {uchar ee=10;
  70   1        qq[0]=hour/10;
  71   1        qq[1]=hour%10;
  72   1        qq[2]=ee;
  73   1        qq[3]=min/10;
  74   1        qq[4]=min%10;
  75   1        qq[5]=ee;
  76   1        qq[6]=sec/10;
  77   1        qq[7]=sec%10;
  78   1        qq[8]=nn/1000;
  79   1        qq[9]=nn/100%10;
  80   1        qq[10]=nn%100/10;
  81   1        qq[11]=nn%10;
  82   1        qq[12]=ee;
  83   1        qq[13]=yy/10;
  84   1        qq[14]=yy%10;
  85   1        qq[15]=ee;
  86   1        qq[16]=tt/10;
  87   1        qq[17]=tt%10;
  88   1        }
  89          
  90          void aa(uchar str,uchar lengch)
  91          {
  92   1        uchar i;
  93   1        for(i=0;i<lengch;i++)
  94   1        {
  95   2           xsj(str);
  96   2         }
  97   1      }
  98          
  99          uchar ajqd(void)
 100          { 
 101   1       while(1)
 102   1        {
 103   2          P3=0xff;
 104   2          flang=P3;
 105   2          if(P3!=0xff)
 106   2           {
 107   3            delay(10);
 108   3            if(P3!=0xff) 
 109   3             {while(P3!=0xff);}
 110   3            }
 111   2          return flang;break;
 112   2        }     
 113   1      }
 114          
 115          void disp(void)  
 116          {   
 117   1        uchar i,j,k,m,n;
C51 COMPILER V8.02   TEXT1                                                                 10/29/2008 18:32:58 PAGE 3   

 118   1        xml(0xc0);
 119   1         for(i=0;i<5;i++)
 120   1          {
 121   2           aa(ss[i],1);
 122   2          }
 123   1         sjzh();
 124   1         for(j=0;j<8;j++)
 125   1          {
 126   2           xml(0xc5+j);
 127   2           aa(table[qq[j]],1);
 128   2          }
 129   1          xml(0x80);
 130   1          for(k=0;k<2;k++)
 131   1           {
 132   2                aa(rr[k],1);
 133   2               }
 134   1              for(m=0;m<10;m++)
 135   1            {
 136   2                  xml(0x82+m);
 137   2             aa(table[qq[8+m]],1); 
 138   2                 }
 139   1              xml(0x8d);
 140   1              for(n=0;n<2;n++)
 141   1               {
 142   2                aa(ff[n],1);
 143   2               }
 144   1               xml(0x8f);
 145   1               aa(table[xx],1);
 146   1       }
 147          
 148          
 149          
 150          
 151          void main(void)
 152          { 
 153   1       lcd_init();
 154   1       EA=1;
 155   1       ET0=1;
 156   1       TMOD=0X01;
 157   1       TH0=-50000/256;
 158   1       TL0=-50000%256;
 159   1       TR0=1;
 160   1       
 161   1      while(1) 
 162   1      { 
 163   2         disp();
 164   2         //flang=0xff;
 165   2         ajqd();  
 166   2         if(flang==0xfb){id++;if(id>6)id=0;}
 167   2         switch(id)
 168   2              {
 169   3                  
 170   3                case 1:       xml(0x0e);xml(0x85); delay(10);
 171   3                                      if(flang==0xf7){nn++;if(nn>9999)nn=0;}
 172   3                      break;
 173   3                 case 2:      xml(0x0e);xml(0x88); delay(10);
 174   3                                      if(flang==0xf7){yy++;if(yy>12)yy=1;} 
 175   3                                      break;
 176   3                 case 3:      xml(0x0e);xml(0x8b); delay(10);                                                 
 177   3                                      if(flang==0xf7){tt++;if(tt>31)tt=1;}
 178   3                                      break;
 179   3                 case 4:      xml(0x0e);xml(0x8f); delay(10);
C51 COMPILER V8.02   TEXT1                                                                 10/29/2008 18:32:58 PAGE 4   

 180   3                                       if(flang==0xf7){xx++;if(xx>7)xx=1;}  
 181   3                                      break;
 182   3                 case 5:      xml(0x0e);xml(0xc6); delay(10);
 183   3                                      if(flang==0xf7){hour++;if(hour>23)hour=0;} 
 184   3                                      break;
 185   3                 case 6:      xml(0x0e);xml(0xc9); delay(10);
 186   3                                      if(flang==0xf7){min++;if(min>59)min=1;}
 187   3                                      break;
 188   3                      default:xml(0x0c);        
 189   3                 }
 190   2                 } 
 191   1       } 
 192          
 193             
 194          void zd(void) interrupt 1 using 0
 195          {
 196   1       TH0=-50000/256;
 197   1       TL0=-50000%256;
 198   1       cnt++;
 199   1       if(cnt>20)
 200   1        { 
 201   2          cnt=0;
 202   2          sec++;
 203   2              if(sec>59)
 204   2              {
 205   3                sec=0;
 206   3                min++;
 207   3                if(min>59)
 208   3                 { 
 209   4                   min=0;
 210   4                   hour++;
 211   4                       if(hour>23)
 212   4                         {
 213   5                           hour=0;
 214   5                               xx++;
 215   5                               if(xx>7)
 216   5                               xx=1;
 217   5                               tt++;
 218   5                              {
 219   6                                 if(yy==1||yy==3||yy==5||yy==7||yy==8||yy==10||yy==12)
 220   6                                 { 
 221   7                                   if(tt>31)
 222   7                                   {
 223   8                                     tt=1;
 224   8                                     yy++;
 225   8                                        }
 226   7                                  }
 227   6                                  else if(yy==4||yy==6||yy==9||yy==11)
 228   6                                   {
 229   7                                     if(tt>30)
 230   7                                         {
 231   8                                          tt=1;
 232   8                                          yy++;
 233   8                                         }
 234   7                                    }
 235   6                                  else if(yy==2) 
 236   6                                   {
 237   7                                        if((nn%400==0)||((nn%100!=0)&&(nn%4==0)))
 238   7                                      {
 239   8                                            if(tt>29)
 240   8                                                 {
 241   9                                                   tt=1;
C51 COMPILER V8.02   TEXT1                                                                 10/29/2008 18:32:58 PAGE 5   

 242   9                                                   yy++;
 243   9                                             }
 244   8                                           }
 245   7                                        else if(tt>28)
 246   7                                        {
 247   8                                          tt=1;
 248   8                                              yy++;
 249   8                                        }
 250   7                                       }      
 251   6                                 }                       
 252   5                                      if(yy>12)
 253   5                                       {
 254   6                                         yy=1;
 255   6                                         nn++;
 256   6                                         if(nn>9999)
 257   6                                         nn=0;
 258   6                                        }
 259   5                                  }
 260   4                                }
 261   3                    }
 262   2                 }
 263   1        }
 264          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    996    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     30    ----
   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 + -