📄 ds12887.lst
字号:
C51 COMPILER V6.12 DS12887 09/04/2004 08:17:25 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DS12887
OBJECT MODULE PLACED IN D:\DDYK\DS12887.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\DDYK\DS12887.C DB SB OE
stmt level source
1 /*************************************************************
2 文件名称:ds12c887.c
3 适用范围:时钟芯片ds12c887的驱动程序
4 *************************************************************/
5 #include <absacc.h>
6
7 /* 命令常量定义 */
8 #define CMD_START_DS12C887 0x20 /* 开启时钟芯片
9 */
10 #define CMD_START_OSCILLATOR 0x70 /* 开启振荡器,
11 处于抑制状态 */
12 #define CMD_CLOSE_DS12C887 0x30 /* 关掉时钟芯片
13 */
14 /* 所有的置位使用或操作,清除使用与操作 */
15 #define MASK_SETB_SET 0x80 /* 禁止刷新 */
16 #define MASK_CLR_SET 0x7f /* 使能刷新 */
17 #define MASK_SETB_DM 0x04 /* 使用HEX格式
18 */
19 #define MASK_CLR_DM 0xfb /* 使
20 用BCD码格式 */
21 #define MASK_SETB_2412 0x02 /* 使
22 用24小时模式 */
23 #define MASK_CLR_2412 0xfd /* 使用12小时模
24 式 */
25 #define MASK_SETB_DSE 0x01 /* 使用夏令时 */
26 #define MASK_CLR_DSE 0xfe /* 不使用夏令时
27 */
28
29 /* 寄存器地址通道定义 */
30 xdata char chSecondsChannel _at_ 0xdf00;
31 xdata char chMinutesChannel _at_ 0xdf02;
32 xdata char chHoursChannel _at_ 0xdf04;
33 xdata char chDofWChannel _at_ 0xdf06;
34 xdata char chDateChannel _at_ 0xdf07;
35 xdata char chMonthChannel _at_ 0xdf08;
36 xdata char chYearChannel _at_ 0xdf09;
37 xdata char chCenturyChannel _at_ 0xdf32;
38 xdata char chRegA _at_ 0xdf0a;
39 xdata char chRegB _at_ 0xdf0b;
40 xdata char chRegC _at_ 0xdf0c;
41 xdata char chRegD _at_ 0xdf0d;
42
43 /* 函数声明部分 */
44 void StartDs12c887(void);
45 void CloseDs12c887(void);
46 void InitDs12c887(void);
47 unsigned char GetSeconds(void);
48 unsigned char GetMinutes(void);
49 unsigned char GetHours(void);
50 unsigned char GetDate(void);
51 unsigned char GetMonth(void);
52 unsigned char GetYear(void);
53 unsigned char GetCentury(void);
54 void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
55 chHours);
C51 COMPILER V6.12 DS12887 09/04/2004 08:17:25 PAGE 2
56 void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear);
57
58 /*************************************************************
59 函数功能:该函数用来启动时钟芯片工作
60 应用范围:仅在时钟芯片首次使用时用到一次
61 入口参数:
62 出口参数:
63 *************************************************************/
64 void StartDs12c887(void)
65 {
66 1 chRegA = CMD_START_DS12C887;
67 1 }
68
69 /*************************************************************
70 函数功能:该函数用来关闭时钟芯片
71 应用范围:一般用不到
72 入口参数:
73 出口参数:
74 *************************************************************/
75 void CloseDs12c887(void)
76 {
77 1 chRegA = CMD_CLOSE_DS12C887;
78 1 }
79
80 void InitDs12c887()
81 {
82 1 StartDs12c887();
83 1 chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
84 1 chRegB = chRegB & MASK_CLR_DM | MASK_SETB_2412 \
85 1 & MASK_CLR_DSE;
86 1
87 1 /* 使用BCD码格式、24小时模式、不使用
88 1 夏令时 */
89 1 chCenturyChannel = 0x21; /* 设
90 1 置为21世纪 */
91 1 chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
92 1 }
93
94 /*************************************************************
95 函数功能:该函数用来从时钟芯片读取秒字节
96 应用范围:
97 入口参数:
98 出口参数:
99 *************************************************************/
100 unsigned char GetSeconds(void)
101 {
102 1 return(chSecondsChannel);
103 1 }
104
105 /*************************************************************
106 函数功能:该函数用来从时钟芯片读取分字节
107 应用范围:
108 入口参数:
109 出口参数:
110 *************************************************************/
111 unsigned char GetMinutes(void)
112 {
113 1 return(chMinutesChannel);
114 1 }
115
116 /*************************************************************
117 函数功能:该函数用来从时钟芯片读取小时字节
C51 COMPILER V6.12 DS12887 09/04/2004 08:17:25 PAGE 3
118 应用范围:
119 入口参数:
120 出口参数:
121 *************************************************************/
122 unsigned char GetHours(void)
123 {
124 1 return(chHoursChannel);
125 1 }
126
127 /*************************************************************
128 函数功能:该函数用来从时钟芯片读取日字节
129 应用范围:
130 入口参数:
131 出口参数:
132 *************************************************************/
133 unsigned char GetDate(void)
134 {
135 1 return(chDateChannel);
136 1 }
137 /*************************************************************
138 函数功能:该函数用来从时钟芯片读取月字节
139 应用范围:
140 入口参数:
141 出口参数:
142 *************************************************************/
143 unsigned char GetMonth(void)
144 {
145 1 return(chMonthChannel);
146 1 }
147
148 /*************************************************************
149 函数功能:该函数用来从时钟芯片读取年字节
150 应用范围:
151 入口参数:
152 出口参数:
153 *************************************************************/
154 unsigned char GetYear(void)
155 {
156 1 return(chYearChannel);
157 1 }
158
159 /*************************************************************
160 函数功能:该函数用来从时钟芯片读取世纪字节
161 应用范围:
162 入口参数:
163 出口参数:
164 *************************************************************/
165 unsigned char GetCentury(void)
166 {
167 1 return(chCenturyChannel);
168 1 }
169
170 /*************************************************************
171 函数功能:该函数用来设置时钟芯片的时间
172 应用范围:
173 入口参数:chSeconds、chMinutes、chHours是设定时间的压缩BCD码
174 出口参数:
175 *************************************************************/
176 void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
177 chHours)
178 {
179 1 chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
C51 COMPILER V6.12 DS12887 09/04/2004 08:17:25 PAGE 4
180 1 chSecondsChannel = chSeconds;
181 1 chMinutesChannel = chMinutes;
182 1 chHoursChannel = chHours;
183 1 chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
184 1 }
185
186 /*************************************************************
187 函数功能:该函数用来设置时钟芯片的日期
188 应用范围:
189 入口参数:chDate、chMonth、chYear是设定日期的压缩BCD码
190 出口参数:
191 *************************************************************/
192 void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear)
193 {
194 1 chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
195 1 chDateChannel = chDate;
196 1 chMonthChannel = chMonth;
197 1 chYearChannel = chYear;
198 1 chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
199 1 }
C51 COMPILER V6.12 DS12887 09/04/2004 08:17:25 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
chDateChannel. . . . . . . . . . . . . PUBLIC XDATA CHAR DF07H 1
GetMinutes . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_SetDate . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chDate . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
chMonth. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
chYear . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
GetCentury . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chMonthChannel . . . . . . . . . . . . PUBLIC XDATA CHAR DF08H 1
chYearChannel. . . . . . . . . . . . . PUBLIC XDATA CHAR DF09H 1
_SetTime . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chSeconds. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
chMinutes. . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
chHours. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
chHoursChannel . . . . . . . . . . . . PUBLIC XDATA CHAR DF04H 1
CloseDs12c887. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
GetDate. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
GetMonth . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chRegA . . . . . . . . . . . . . . . . PUBLIC XDATA CHAR DF0AH 1
chRegB . . . . . . . . . . . . . . . . PUBLIC XDATA CHAR DF0BH 1
chRegC . . . . . . . . . . . . . . . . PUBLIC XDATA CHAR DF0CH 1
chRegD . . . . . . . . . . . . . . . . PUBLIC XDATA CHAR DF0DH 1
GetYear. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
GetHours . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
StartDs12c887. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
InitDs12c887 . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chSecondsChannel . . . . . . . . . . . PUBLIC XDATA CHAR DF00H 1
chMinutesChannel . . . . . . . . . . . PUBLIC XDATA CHAR DF02H 1
GetSeconds . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
chCenturyChannel . . . . . . . . . . . PUBLIC XDATA CHAR DF32H 1
chDofWChannel. . . . . . . . . . . . . PUBLIC XDATA CHAR DF06H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 144 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -