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

📄 rtc.lst

📁 单片机实现消息队列的例子
💻 LST
字号:
C51 COMPILER V7.10   RTC                                                                   12/14/2004 10:51:17 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN .\rtc.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\rtc.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\r
                    -tc.lst) OBJECT(.\rtc.obj)

line level    source

   1          /*************************************************/
   2          
   3          /****************实时时钟********************/
   4          
   5          /*************2003年4月16日*********************/
   6          
   7          /************WROTE BY WANGSW********************/
   8          #include "reg52x2.h"
   9          #include "define.h"
  10          
  11          #include "lcd.h"
  12          #include "iic.h"
  13          #include "rtc.h"
  14          
  15          
  16          static RTCType eRTCType;
  17          
  18          byte data g_RTCPool[4];
  19          
  20          RTCMember g_RTCMember;
  21          
  22          
  23          static byte code Pcf8563Init[16] =                              /*实时时钟初始化数据*/
  24          {
  25                  0x00,                   /*控制状态寄存器TEST|0  |STOP|  0       |TTESTC|0        |0        |0        */
  26                  0x00,                   /*控制状态寄存器  0     | 0     |  0      |  TI/TP|  AF |  TF |AIE  |TIE   */
  27          
  28                  0x30,                   /*second                D7=VL(voltage low)*/
  29                  0x29,                   /*minute*/
  30                  0x00,                   /*hour*/
  31                  0x00,                   /*day*/
  32                  0x00,                   /*week*/
  33                  0x00,                   /*month                 D7=centruy*/
  34                  0x00,                   /*year*/
  35          
  36                  0x80,                   /*minute alarm  D7=alarm enable 低电平有效*/
  37                  0x80,                   /*hour alarm            D7=alarm enable*/
  38                  0x80,                   /*day alarm             D7=alarm enable*/
  39                  0x80,                   /*week alarm            D7=alarm enable*/
  40          
  41                  0x83,                   /*D7=FE:clkout enable           D1,D0:
  42                                                                                                  00:  32.768KHz
  43                                                                                                  01:1024
  44                                                                                                  10:32
  45                                                                                                  11:1
  46                                                                                                  */
  47                  0x00,                   /*D7=TE:timer enable            D1,D0:
  48                                                                                                  00:4096Hz
  49                                                                                                  01:64
  50                                                                                                  10:1
  51                                                                                                  11:1/60
  52                                                                                                  */
  53                  0x00                    /*timer back data倒计数值*/
  54          };
C51 COMPILER V7.10   RTC                                                                   12/14/2004 10:51:17 PAGE 2   

  55          
  56          
  57          #ifndef SOFT_RTC                        /*r如果定义了外围硬件实时时钟计数*/
              /******************************************************************************************
              *函数名:                Int1RTC
              *参数:                  无
              *返回值:                无
              *描述:                  
              *编写:                  王绍伟
              *版本信息:              V1.0                    2003年8月15日
              ******************************************************************************************/
              static void Int1RTC(void) interrupt 2
              {
                      EA = 0;         /*r关闭所有中断*/
                      msg_queue_in(MSG_RTC, NONE);
                      EA = 1;
              }
              #endif
  73          
  74          extern void rtc_pcf8563_init(void)
  75          {
  76   1              while(!iic_send_str(PCF8563, 0x00, Pcf8563Init, 16))
  77   1              {
  78   2                      delay(0x200);
  79   2              }
  80   1              iic_rcv_str(PCF8563, 0x02, g_RTCPool, 2);
  81   1      }
  82          
  83          /******************************************************************************************
  84          *函数名:                rtc_init
  85          *参数:                  hour            
  86                                          minute
  87                                          second
  88          *返回值:                无
  89          *描述:                  实时软件时钟计数器初始化
  90          *编写:                  王绍伟
  91          *版本信息:              V1.0                    2003年8月15日
  92          ******************************************************************************************/
  93          extern void rtc_soft_init(byte hour, byte minute, byte second)
  94          {
  95   1              g_RTCMember.hour = hour;
  96   1              g_RTCMember.minute = minute;
  97   1              g_RTCMember.second = second;
  98   1              g_RTCPool[0] = g_DAA[g_RTCMember.second];
  99   1              g_RTCPool[1] = g_DAA[g_RTCMember.minute];
 100   1              g_RTCPool[2] = g_DAA[g_RTCMember.hour];
 101   1      }
 102          
 103          
 104          /******************************************************************************************
 105          *函数名:                rtc_process
 106          *参数:                  无
 107          *返回值:                无
 108          *描述:                  定义时钟从秒->分钟->小时的进位规则,并抛出已过一秒时
 109                                          钟的消息
 110          *编写:                  王绍伟
 111          *版本信息:              V1.0                    2003年8月15日
 112          ******************************************************************************************/
 113          extern void rtc_soft_routine(void)
 114          {
 115   1      #ifdef SOFT_RTC
 116   1              if(++g_RTCMember.second > 59)
C51 COMPILER V7.10   RTC                                                                   12/14/2004 10:51:17 PAGE 3   

 117   1              {
 118   2                      g_RTCMember.second = 0;
 119   2                      g_RTCMember.minute++;
 120   2              }
 121   1              
 122   1              if(g_RTCMember.minute > 59)
 123   1              {
 124   2                      g_RTCMember.minute = 0;
 125   2                      g_RTCMember.hour++;
 126   2              }
 127   1              msg_queue_in(MSG_RTC, RTC_SECOND);
 128   1      #endif
 129   1      }
 130          
 131          
 132          /******************************************************************************************
 133          *函数名:                rtc_read
 134          *参数:                  无
 135          *返回值:                g_RTC           时钟结构体
 136          *描述:                  读取当前时钟结构体内容
 137          *编写:                  王绍伟
 138          *版本信息:              V1.0            2003年8月15日
 139          ******************************************************************************************/
 140          extern RTCMember rtc_soft_read(void)
 141          {
 142   1              return(g_RTCMember);
 143   1      }
 144          
 145          
 146          extern void rtc_pcf8563_process(RTCType eRTCType)
 147          {
 148   1              eRTCType = eRTCType;
 149   1              iic_rcv_str(PCF8563, 0x02, g_RTCPool, 2);
 150   1      }
 151          
 152          extern void rtc_soft_process(RTCType eRTCType)
 153          {
 154   1              eRTCType = eRTCType;                    /*以备今后用*/
 155   1              g_RTCPool[0] = g_DAA[g_RTCMember.second];
 156   1              g_RTCPool[1] = g_DAA[g_RTCMember.minute];
 157   1              g_RTCPool[2] = g_DAA[g_RTCMember.hour];
 158   1      }
 159          
 160          /**************************应用程序*********************************/
 161          
 162          
 163          


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