📄 sd2k3drv.lst
字号:
163 /* */
164 /* 历史记录: */
165 /* spot 2005-10-05 Creat Inital version. (Version 1.0) */
166 /****************************************************************************/
167 u_char sd2300_receive_byte(void)
168 {
169 1 u_char i=8;
170 1 u_char ddata=0;
171 1
172 1 SDA=1;
173 1 while(i--)
174 1 {
175 2 ddata <<= 1;
176 2 SCL=0;
177 2 sd2300_wait();
178 2 SCL=1;
179 2 sd2300_wait();
C51 COMPILER V7.09 SD2K3DRV 10/09/2005 20:45:31 PAGE 4
180 2 if(SDA)
181 2 {
182 3 ddata |= 0x01;
183 3 }
184 2
185 2 }
186 1 SCL=0;
187 1 return ddata;
188 1 }
189
190 /****************************************************************************/
191 /* 函数名:sd2300_read_date */
192 /* 功 能:读取sd2300时钟数据 */
193 /* 作 者:spot */
194 /* 输 入:无 */
195 /* 输 出:无 */
196 /* */
197 /* 历史记录: */
198 /* spot 2005-10-05 Creat Inital version. (Version 1.0) */
199 /****************************************************************************/
200 void sd2300_read_date(void)
201 {
202 1 u_char i;
203 1
204 1 sd2300_start();
205 1 sd2300_send_byte(0x64);
206 1 sd2300_wait_ack();
207 1 sd2300_send_byte(0x00); /* 从秒开始读取数据 */
208 1 sd2300_wait_ack();
209 1
210 1 sd2300_start();
211 1 sd2300_send_byte(0x65);
212 1 sd2300_wait_ack();
213 1
214 1 for (i=0; i<7; i++)
215 1 {
216 2 date[6-i] = sd2300_receive_byte();
217 2
218 2 if (i != 6) /* 最后一个数据不应答 */
219 2 {
220 3 sd2300_ack();
221 3 }
222 2 }
223 1
224 1 sd2300_no_ack();
225 1 sd2300_stop();
226 1 }
227
228 /****************************************************************************/
229 /* 函数名:sd2300_write_date */
230 /* 功 能:写入sd2300时钟数据 */
231 /* 作 者:spot */
232 /* 输 入:无 */
233 /* 输 出:无 */
234 /* */
235 /* 历史记录: */
236 /* spot 2005-10-05 Creat Inital version. (Version 1.0) */
237 /****************************************************************************/
238 void sd2300_write_date(void)
239 {
240 1 u_char i;
241 1
C51 COMPILER V7.09 SD2K3DRV 10/09/2005 20:45:31 PAGE 5
242 1 sd2300_start();
243 1 sd2300_send_byte(0x64);
244 1 sd2300_wait_ack();
245 1 sd2300_send_byte(0x00); /* 从秒开始写入数据 */
246 1 sd2300_wait_ack();
247 1
248 1
249 1 for(i=0; i<7; i++)
250 1 {
251 2 sd2300_send_byte(date[6-i]);
252 2 sd2300_wait_ack();
253 2 }
254 1 sd2300_stop();
255 1 }
256
257 /****************************************************************************/
258 /* 函数名:sd2300_write_config */
259 /* 功 能:写sd2300控制寄存器 */
260 /* 作 者:spot */
261 /* 输 入:无 */
262 /* 输 出:无 */
263 /* */
264 /* 历史记录: */
265 /* spot 2005-10-05 Creat Inital version. (Version 1.0) */
266 /****************************************************************************/
267 void sd2300_write_config(void)
268 {
269 1 sd2300_start();
270 1 sd2300_send_byte(0x64);
271 1 sd2300_wait_ack();
272 1 sd2300_send_byte(0xf0); /* 写控制寄存器2 */
273 1 sd2300_wait_ack();
274 1 sd2300_send_byte(0x20); /* 24小时制,关中断 */
275 1 sd2300_wait_ack();
276 1 sd2300_stop();
277 1 }
278
C51 COMPILER V7.09 SD2K3DRV 10/09/2005 20:45:31 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
sd2300_write_config. . . . . . . . . . PUBLIC CODE PROC 0000H -----
u_long . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
u_short. . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
sd2300_read_date . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
date . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0000H 7
_sd2300_send_byte. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
demand . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
u_int. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
sd2300_write_date. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
sd2300_ack . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
sd2300_start . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
sd2300_wait. . . . . . . . . . . . . . PUBLIC CODE PROC 0009H -----
sd2300_wait_ack. . . . . . . . . . . . PUBLIC CODE PROC 0010H -----
errtime. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
sd2300_stop. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
SDA. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0086H 1
SCL. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0087H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
sd2300_no_ack. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
sd2300_receive_byte. . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ddata. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -