📄 rtc.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 + -