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

📄 rtc.lst

📁 世纪民生公司的带网络功能的单片机CS6209开发http服务器的演示源代码。
💻 LST
字号:
C51 COMPILER V7.50   RTC                                                                   10/12/2006 15:31:41 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN .\Release\Rtc.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\lib\Rtc.c LARGE OPTIMIZE(9,SIZE) BROWSE ORDER MODDP2 INCDIR(..\..\inc
                    -\) DEBUG OBJECTEXTEND PRINT(.\Release\Rtc.lst) OBJECT(.\Release\Rtc.obj)

line level    source

   1          
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          #include "hpserver.h"
   5          #include "rtc_api.h"
   6          
   7          /*
   8          #define RTCDAYL   0x0FFC8
   9          #define RTCDAYH  0x0FFC7
  10          #define RTCHOUR  0x0FFC6
  11          #define RTCMIN     0x0FFC5
  12          #define RTCSEC     0x0FFC4
  13          */
  14          void rtc_date_write(unsigned char des_addr,unsigned int wr_data)
  15          {
  16   1              int i;
  17   1      //      XBYTE[RTCMASK]=0x55;
  18   1      //      XBYTE[RTCMASK]=0xaa;
  19   1              i=XBYTE[RTCDAYH]&0xc0;
  20   1              XBYTE[RTCDAYH]=((wr_data>>8)&0xff)|i;
  21   1              i=XBYTE[RTCDAYH];
  22   1              i=XBYTE[RTCDAYH]&0xc0;
  23   1              XBYTE[RTCDAYL]=(wr_data&0xff)|i;
  24   1                      i=XBYTE[RTCDAYL];
  25   1      //      XBYTE[RTCMASK]=0xa5;
  26   1      }
*** WARNING C280 IN LINE 14 OF ..\..\LIB\RTC.C: 'des_addr': unreferenced local variable
  27          void rtc_time_write(unsigned char des_addr,unsigned char wr_data)//write to hour and minute register
  28          {
  29   1          int i,ret_val;
  30   1      //      printf("wr_data=%bx\n",wr_data);
  31   1      //      XBYTE[RTCMASK]=0x55;
  32   1      //      XBYTE[RTCMASK]=0xaa;
  33   1              switch(des_addr)
  34   1              {
  35   2                      case 5:
  36   2                              i=XBYTE[RTCMIN]&0xc0;
  37   2                      //      printf("in case i=%d,wr_data|i=%d\n",i,wr_data|i);
  38   2                              XBYTE[RTCMIN]=wr_data|i;
  39   2                              break;
  40   2                      case 6:
  41   2                              i=XBYTE[RTCHOUR]&0xe0;
  42   2                      //      printf("in case i=%d,wr_data|i=%d\n",i,wr_data|i);
  43   2                              XBYTE[RTCHOUR]=wr_data|i;
  44   2                              break;
  45   2                      default:
  46   2                              break;
  47   2               }
  48   1      //      XBYTE[RTCMASK]=0xa5;
  49   1              ret_val=XBYTE[RTCHOUR]&0x1f;
  50   1      //      printf("hour_val=%d\n",ret_val);
  51   1              ret_val=XBYTE[RTCMIN]&0x3f;
  52   1      //      printf("min_val=%d\n\n",ret_val);
  53   1      }
C51 COMPILER V7.50   RTC                                                                   10/12/2006 15:31:41 PAGE 2   

  54          
  55          char* print_current_time(void)
  56          {
  57   1              char dest[16];
  58   1              unsigned int hour_val,min_val,sec_val;
  59   1              hour_val=rtc_read(0x06);
  60   1              
  61   1              min_val=rtc_read(0x05);
  62   1              sec_val=rtc_read(0x04);
  63   1              //printf("%d:%d:%d\n",hour_val,min_val,sec_val);
  64   1              sprintf(dest,"%d:%d:%d\n",hour_val,min_val,sec_val);
  65   1              return dest;
  66   1      }
  67          
  68          unsigned int rtc_read(unsigned char des_addr)//,unsigned char wr_data)
  69          {
  70   1         
  71   1              unsigned int ret_val=0;
  72   1              unsigned int ret_val2=0;
  73   1      
  74   1            switch(des_addr)
  75   1            {
  76   2                      case 4:
  77   2                              ret_val=XBYTE[RTCSEC]&0x3f;
  78   2                              break;
  79   2                      case 5:
  80   2                              ret_val=XBYTE[RTCMIN]&0x3f;
  81   2                              break;
  82   2                      case 6:
  83   2                              ret_val=XBYTE[RTCHOUR]&0x1f;
  84   2                              break;
  85   2                      case 7:
  86   2                              ret_val=XBYTE[RTCDAYH];
  87   2                              ret_val2=XBYTE[RTCDAYL];
  88   2                              ret_val=(ret_val<<8)+ret_val2;
  89   2                              break;
  90   2                      default:
  91   2                              break;
  92   2              }
  93   1              return ret_val;
  94   1      }
  95          
  96          char *print_current_date(void)
  97          {
  98   1              char dest[16];
  99   1              int year_val=2000,month_val=1,date_val=1;
 100   1              unsigned int day_val;//,hour_val,min_val,sec_val;
 101   1              day_val=rtc_read(0x07);
 102   1              while(day_val>365)
 103   1              {
 104   2                      if(check_leap_year(year_val))
 105   2                              day_val--;
 106   2                      day_val=day_val-365;
 107   2                      year_val++;
 108   2              }
 109   1              while(1)
 110   1              {
 111   2              if(day_val==0)                          //the date of last day of the leap year
 112   2                      {
 113   3                              year_val--;
 114   3                              break;
 115   3                      }
C51 COMPILER V7.50   RTC                                                                   10/12/2006 15:31:41 PAGE 3   

 116   2              if(day_val<=31&&day_val>0)                                      //Jan
 117   2                      {
 118   3                              date_val=day_val;
 119   3                              break;
 120   3                      }
 121   2              day_val=day_val-31;
 122   2              month_val++;
 123   2              if(check_leap_year(year_val))
 124   2              {
 125   3                      if(day_val<=29&&day_val>0)
 126   3                      {
 127   4                              date_val=day_val;
 128   4                              break;
 129   4                      }
 130   3                      else
 131   3                              day_val=day_val-29;
 132   3              }
 133   2              else
 134   2              {
 135   3                      if(day_val<=28&&day_val>0)
 136   3                      {
 137   4                              date_val=day_val;
 138   4                              break;
 139   4                      }
 140   3                      else
 141   3                              day_val=day_val-28;
 142   3              }
 143   2                 month_val++;
 144   2              if(day_val<=31&&day_val>0)                              //Mar
 145   2                      {
 146   3                              date_val=day_val;
 147   3                              break;
 148   3                      }
 149   2              day_val=day_val-31;
 150   2              month_val++;
 151   2              if(day_val<=30&&day_val>0)
 152   2                      {
 153   3                              date_val=day_val;
 154   3                              break;
 155   3                      }
 156   2              day_val=day_val-30;
 157   2              month_val++;
 158   2              if(day_val<=31&&day_val>0)                              //May
 159   2                      {
 160   3                              date_val=day_val;
 161   3                              break;
 162   3                      }
 163   2              day_val=day_val-31;
 164   2              month_val++;
 165   2              if(day_val<=30&&day_val>0)
 166   2                      {
 167   3                              date_val=day_val;
 168   3                              break;
 169   3                      }
 170   2              day_val=day_val-30;
 171   2              month_val++;
 172   2              if(day_val<=31&&day_val>0)                              //Jul
 173   2                      {
 174   3                              date_val=day_val;
 175   3                              break;
 176   3                      }
 177   2              day_val=day_val-31;
C51 COMPILER V7.50   RTC                                                                   10/12/2006 15:31:41 PAGE 4   

 178   2              month_val++;
 179   2              if(day_val<=31&&day_val>0)                              //Aug
 180   2                      {
 181   3                              date_val=day_val;
 182   3                              break;
 183   3                      }
 184   2              day_val=day_val-31;
 185   2              month_val++;
 186   2              if(day_val<=30&&day_val>0)
 187   2                      {
 188   3                              date_val=day_val;
 189   3                              break;
 190   3                      }
 191   2              day_val=day_val-30;
 192   2              month_val++;
 193   2              if(day_val<=31&&day_val>0)                              //Oct
 194   2                      {
 195   3                              date_val=day_val;
 196   3                              break;
 197   3                      }
 198   2              day_val=day_val-31;
 199   2              month_val++;
 200   2              if(day_val<=30&&day_val>0)
 201   2                      {
 202   3                              date_val=day_val;
 203   3                              break;
 204   3                      }
 205   2              day_val=day_val-30;
 206   2              month_val++;
 207   2              if(day_val<=31&&day_val>0)                              //Dec
 208   2                      {
 209   3                              date_val=day_val;
 210   3                              break;
 211   3                      }
 212   2             }
 213   1           // printf("\n%d-%d-%d\n",year_val,month_val,date_val);
 214   1              sprintf(dest,"%d-%d-%d\n",year_val,month_val,date_val);
 215   1              return dest;
 216   1      }
 217          
 218          int check_leap_year(int year)
 219          {
 220   1              if((year%4)!=0)
 221   1                      return 0;
 222   1              if(((year%4)==0)&&((year%100)!=0))
 223   1                      return 1;
 224   1              if(((year%100)==0)&&((year%400)==0))
 225   1                      return 1;
 226   1              else
 227   1                      return 0;
 228   1      }
 229          
 230          int get_days(unsigned int year,unsigned int month,unsigned int date)
 231          {
 232   1              unsigned int day_val=0;
 233   1              int year_val,month_val;
 234   1              for(year_val=year-1;year_val>=0x7d0;year_val--)
 235   1              {
 236   2                      if(check_leap_year(year_val)==1)
 237   2                              day_val=day_val+0x16e;
 238   2                      else
 239   2                              day_val=day_val+0x16d;
C51 COMPILER V7.50   RTC                                                                   10/12/2006 15:31:41 PAGE 5   

 240   2              }
 241   1              if((check_leap_year(year)==1)&&(month>2))
 242   1              //if(check_leap_year(year)==1)
 243   1                      day_val=day_val+1;
 244   1              month_val=month-1;
 245   1              switch(month_val)
 246   1              {
 247   2                      case 11:
 248   2                              day_val=day_val+0x14e;
 249   2                              break;
 250   2                      case 10:
 251   2                              day_val=day_val+0x130;
 252   2                              break;
 253   2                      case 9:
 254   2                              day_val=day_val+0x111;
 255   2                              break;
 256   2                      case 8:
 257   2                              day_val=day_val+0xf3;
 258   2                              break;
 259   2                      case 7:
 260   2                              day_val=day_val+0xd4;
 261   2                              break;
 262   2                      case 6:
 263   2                              day_val=day_val+0xb5;
 264   2                              break;
 265   2                      case 5:
 266   2                              day_val=day_val+0x97;
 267   2                              break;
 268   2                      case 4:
 269   2                              day_val=day_val+0x78;
 270   2                              break;
 271   2                      case 3:
 272   2                              day_val=day_val+0x5a;
 273   2                              break;
 274   2                      case 2:
 275   2                              day_val=day_val+0x3b;
 276   2                              break;
 277   2                      case 1:
 278   2                              day_val=day_val+0x1f;
 279   2                              break;
 280   2                      default:
 281   2                              break;
 282   2               }
 283   1               day_val=day_val+date;
 284   1               printf("dat_val=%d\n",day_val);
 285   1               return day_val;
 286   1      }
 287          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1181    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----      55
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -