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

📄 rtc.lst

📁 基于 PLC935单片机的三相漏电检测系统
💻 LST
字号:
C51 COMPILER V8.05a   RTC                                                                  11/26/2007 12:48:21 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN RTC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RTC.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include"reg935.h"
   3          #include"UserDef.h"
   4          
   5          uint idata delayCount;
   6          uchar data recCurrentTimeBuf[7];                        //暂存当前时间缓冲器[0]=世纪[1]=年[2]=月[3]=日[4]=时[5]=分[6]=秒
   7          
   8          extern uint data delayTime;
   9          extern uchar data recPresetData[4];
  10          extern void ReadEEPROMByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
  11          extern void EEPROMWriteByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
  12          void TimeGenerator(void);       
  13          
  14          void RTC_ISR(void) interrupt 10
  15          {
  16   1              static uint secCount = 0;
  17   1              
  18   1              EA=0;
  19   1      
  20   1              secCount++;
  21   1      
  22   1              RTCCON &= 0x63;                                                         //清除RTC中断标志位
  23   1      
  24   1              TimeGenerator();                                                        //时间产生
  25   1      
  26   1              if(secCount==WRITE_EEPROM_INTERVAL)                 //到写EEPROM  时间
  27   1                      {
  28   2                      ReadEEPROMByte(EEPROM_TIME_ADDR, 7, recCurrentTimeBuf);
  29   2                      secCount = 0;
  30   2                      }
  31   1              
  32   1              EA=1;
  33   1      }
  34          
  35          
  36          //---------------------------------------------------------------------------
  37          //函数名称:void TimeGenerator(void)                                                          
  38          //功能描述:产生时钟                                                                      
  39          //输入:无                                                   
  40          //输出:无                                                                              
  41          //---------------------------------------------------------------------------
  42          void TimeGenerator(void)
  43          {
  44   1              recCurrentTimeBuf[SEC]++;
  45   1              if(recCurrentTimeBuf[SEC]>59)
  46   1                      {
  47   2                      recCurrentTimeBuf[SEC] = 0;
  48   2                      recCurrentTimeBuf[MIN]++;
  49   2                      delayCount++;
  50   2                      if(recCurrentTimeBuf[MIN]>59)
  51   2                              {
  52   3                              recCurrentTimeBuf[MIN] = 0;
  53   3                              recCurrentTimeBuf[HOUR]++;
  54   3                              if(recCurrentTimeBuf[HOUR]>23)
  55   3                                      {
C51 COMPILER V8.05a   RTC                                                                  11/26/2007 12:48:21 PAGE 2   

  56   4                                      recCurrentTimeBuf[HOUR] = 0;
  57   4                                      recCurrentTimeBuf[DATE]++;
  58   4                                      switch(recCurrentTimeBuf[MON])  //查询当前月份
  59   4                                              {
  60   5                                              case 2:                                         //是2  月份
  61   5                                                      if(((recCurrentTimeBuf[YEAR]!=0)&&(recCurrentTimeBuf[YEAR]%4==0))||((recCurrentTimeBuf[YEAR]==0)&&(r
             -ecCurrentTimeBuf[CENT]%4==0)))
  62   5                                                              {
  63   6                                                              //是闰年2 月29  天
  64   6                                                              if(recCurrentTimeBuf[DATE]>29)
  65   6                                                                      recCurrentTimeBuf[DATE] = 1;
  66   6                                                              }
  67   5                                                      else                                                                            
  68   5                                                              {
  69   6                                                              //是平年2 月28  天
  70   6                                                              if(recCurrentTimeBuf[DATE]>28)
  71   6                                                                      recCurrentTimeBuf[DATE] = 1;
  72   6                                                              }
  73   5                                                      
  74   5                                                      break;
  75   5      
  76   5                                              case 1:
  77   5                                              case 3:
  78   5                                              case 5:
  79   5                                              case 7:
  80   5                                              case 8:
  81   5                                              case 10:
  82   5                                              case 12:
  83   5                                                      if(recCurrentTimeBuf[DATE]>31)
  84   5                                                              recCurrentTimeBuf[DATE] = 1;
  85   5                                                      
  86   5                                                      break;
  87   5                                                      
  88   5                                              default:
  89   5                                                      if(recCurrentTimeBuf[DATE]>30)
  90   5                                                              recCurrentTimeBuf[DATE] = 1;
  91   5      
  92   5                                                      break;  
  93   5                                              }
  94   4                                      
  95   4                                      recCurrentTimeBuf[MON]++;
  96   4                                      if(recCurrentTimeBuf[MON]>12)
  97   4                                              {
  98   5                                              recCurrentTimeBuf[MON] = 1;
  99   5                                              recCurrentTimeBuf[YEAR]++;
 100   5                                              if(recCurrentTimeBuf[YEAR]>99)
 101   5                                                      {
 102   6                                                      recCurrentTimeBuf[YEAR] = 0;
 103   6                                                      recCurrentTimeBuf[CENT]++;
 104   6                                                      }
 105   5                                              }
 106   4              
 107   4                                      }
 108   3                              }
 109   2                      }
 110   1      }
 111          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    269    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.05a   RTC                                                                  11/26/2007 12:48:21 PAGE 3   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =      2    ----
   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 + -