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

📄 main.lst

📁 这是我以前做过的51单片机实验代码
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  04/24/2008 18:07:04 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<1602lcd.h>
   3          #include<stdio.h>
   4          sbit p17=P1^7;
   5          sbit p16=P1^6;
   6          sbit p15=P1^5;
   7          sbit p14=P1^4;
   8          sbit p13=P1^3;
   9          int t=0,s=0,min=0,hour=0,day=18,mon=4,year=2008,temp=0;//时间初值
  10          int set=0;     //设置变量
  11          void timer() interrupt 1
  12          {
  13   1      IT1=0;
  14   1      TH0=0X4C;
  15   1      TL0=0X00;
  16   1      t++;
  17   1      IT1=1;
  18   1      }
  19          
  20          void zd()interrupt 2
  21          {
  22   1              EX1 = 0;
  23   1              hour++;
  24   1              EX1 = 1;
  25   1      }
  26          
  27          void delayms(int t)
  28          {
  29   1       int i;
  30   1       while(t--)
  31   1       {
  32   2        /* 对于11.0592M时钟,约延时1ms */
  33   2        for (i=0;i<125;i++)
  34   2        {}
  35   2       }
  36   1      }
  37          
  38          void main()
  39          {
  40   1      Init_LCD();
  41   1      EA=0;
  42   1      TMOD=0X01;
  43   1      TH0=0X4C;
  44   1      TL0=0X00;
  45   1              EX1 = 1;
  46   1              IT0 = 1;
  47   1      ET0=1;
  48   1      EA=1;
  49   1      TR0=1;
  50   1      while(1)
  51   1        {
  52   2              if(t==20) 
  53   2              {
  54   3                 t=0;
  55   3                 s++;
C51 COMPILER V8.08   MAIN                                                                  04/24/2008 18:07:04 PAGE 2   

  56   3                 temp=!temp;
  57   3           }
  58   2               PutNumXY_LCD(7,1,s,2); //输出秒
  59   2               if(s==60) //秒判断
  60   2               {
  61   3                s=0;
  62   3                min++;
  63   3                
  64   3               }
  65   2               PutNumXY_LCD(4,1,min,2); //输出分钟
  66   2               if(min==60) //时判断
  67   2               {
  68   3               min=0;
  69   3               hour++;
  70   3               
  71   3               }
  72   2               PutNumXY_LCD(1,1,hour,2);//输出小时
  73   2               if(hour==24) //分判断
  74   2               {
  75   3               hour=0;
  76   3               day++;
  77   3               }
  78   2               PutNumXY_LCD(9,0,day,2);
  79   2               PutStrXY_LCD(3,1,":");  //静态点
  80   2               if(temp==0)                     //动态点
  81   2               PutStrXY_LCD(6,1,":");
  82   2               else
  83   2               PutStrXY_LCD(6,1," ");
  84   2               if(mon<=12)
  85   2               {
  86   3                      switch(mon)              //输出月份
  87   3                      {
  88   4                      case 1 :
  89   4                      case 3 :
  90   4                      case 5 :
  91   4                      case 7 :
  92   4                      case 8 :
  93   4                      case 10 :
  94   4                      case 12 :       if(day==31) {day=1;mon++;} PutNumXY_LCD(6,0,mon,2);break;
  95   4                      case 2 :        if (year%4==0 && year%100!=0 || year%400==0)
  96   4                                              { if(day==29) day=1;mon++;} 
  97   4                                              else {if(day==28) day=1;mon++;}
  98   4                                              PutNumXY_LCD(6,0,mon,2);break;  
  99   4                      case 4 :                                                                                                                        
 100   4                      case 6 :
 101   4                      case 9 :
 102   4                      case 11: if(day==30){day=1;mon++;}PutNumXY_LCD(6,0,mon,2);break;        
 103   4                      }
 104   3               }
 105   2               else {mon=1;year++;}
 106   2               PutNumXY_LCD(1,0,year,4);//输出年
 107   2               PutStrXY_LCD(5,0," ");
 108   2               PutStrXY_LCD(8,0," ");
 109   2               PutStrXY_LCD(11,0," ");
 110   2               PutStrXY_LCD(9,1," ");
 111   2               PutStrXY_LCD(15,1," ");
 112   2       
 113   2              if(p17==0)      //停止计时
 114   2              {
 115   3              TR0=0;
 116   3              p17=1;
 117   3              }
C51 COMPILER V8.08   MAIN                                                                  04/24/2008 18:07:04 PAGE 3   

 118   2              if(p16==0) //开始计时
 119   2              {
 120   3              TR0=1;
 121   3              p16=1;
 122   3              }
 123   2              if(TR0==0) PutStrXY_LCD(13,0,"P");      //暂停显示
 124   2              else PutStrXY_LCD(13,0," ");
 125   2              if(p15==0) //设置选择
 126   2              {
 127   3               delayms(100);
 128   3               if(p15==0)
 129   3               set++;
 130   3               printf("haha\n");      
 131   3               }
 132   2               if(set==6) set=0 ;     //自动清零
 133   2               if(set==1)                     //设置输出
 134   2               {
 135   3                      PutStrXY_LCD(10,1,"S");
 136   3                      PutStrXY_LCD(11,1,"E");
 137   3                      PutStrXY_LCD(12,1,"T");
 138   3                      PutStrXY_LCD(13,1,":");
 139   3                      PutStrXY_LCD(14,1,"m");
 140   3               }
 141   2                       if(set==2)                     
 142   2               {
 143   3                      PutStrXY_LCD(10,1,"S");
 144   3                      PutStrXY_LCD(11,1,"E");
 145   3                      PutStrXY_LCD(12,1,"T");
 146   3                      PutStrXY_LCD(13,1,":");
 147   3                      PutStrXY_LCD(14,1,"h");
 148   3               }
 149   2                       if(set==3)                     
 150   2               {
 151   3                      PutStrXY_LCD(10,1,"S");
 152   3                      PutStrXY_LCD(11,1,"E");
 153   3                      PutStrXY_LCD(12,1,"T");
 154   3                      PutStrXY_LCD(13,1,":");
 155   3                      PutStrXY_LCD(14,1,"d");
 156   3               }
 157   2                       if(set==4)                     
 158   2               {
 159   3                      PutStrXY_LCD(10,1,"S");
 160   3                      PutStrXY_LCD(11,1,"E");
 161   3                      PutStrXY_LCD(12,1,"T");
 162   3                      PutStrXY_LCD(13,1,":");
 163   3                      PutStrXY_LCD(14,1,"M");
 164   3               }
 165   2                       if(set==5)                     
 166   2               {
 167   3                      PutStrXY_LCD(10,1,"S");
 168   3                      PutStrXY_LCD(11,1,"E");
 169   3                      PutStrXY_LCD(12,1,"T");
 170   3                      PutStrXY_LCD(13,1,":");
 171   3                      PutStrXY_LCD(14,1,"y");
 172   3               }
 173   2               
 174   2               if(set==0) 
 175   2               {
 176   3                      PutStrXY_LCD(10,1,"H");
 177   3                      PutStrXY_LCD(11,1,"e");
 178   3                      PutStrXY_LCD(12,1,"l");
 179   3                      PutStrXY_LCD(13,1,"l"); 
C51 COMPILER V8.08   MAIN                                                                  04/24/2008 18:07:04 PAGE 4   

 180   3                  PutStrXY_LCD(14,1,"o");
 181   3               }
 182   2      
 183   2               if(set==1)         //设置分钟
 184   2                      {        
 185   3                      if(p14==0) 
 186   3                      {
 187   4                      delayms(100);
 188   4                      if(p14==0)
 189   4                      min++;
 190   4                      }
 191   3                      }
 192   2               if(set==2)              //设置小时
 193   2                 {
 194   3                  if(p14==0) 
 195   3                      {
 196   4                      delayms(100);
 197   4                      if(p14==0)
 198   4                      hour++;
 199   4                  }
 200   3                 }                     //设置天
 201   2               if(set==3)
 202   2                      {
 203   3                      if(p14==0) 
 204   3                      {
 205   4                      delayms(100);
 206   4                      if(p14==0)
 207   4                      day++;
 208   4                      }
 209   3                      }
 210   2               if(set==4)                      //设置月
 211   2                       {
 212   3                      if(p14==0) 
 213   3                      {
 214   4                      delayms(100);
 215   4                      if(p14==0)
 216   4                      mon++;
 217   4                       }
 218   3                       }
 219   2                        if(set==5)    //设置年
 220   2                       {
 221   3                      if(p14==0) 
 222   3                      {
 223   4                      delayms(100);
 224   4                      if(p14==0)
 225   4                      year++;
 226   4                       }
 227   3                       }
 228   2        }
 229   1      
 230   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1641    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      19
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V8.08   MAIN                                                                  04/24/2008 18:07:04 PAGE 5   


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

⌨️ 快捷键说明

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