📄 ds1302.lst
字号:
C51 COMPILER V8.02 DS1302 05/27/2008 11:54:25 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ds1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "DS1302.h"
2 #include <reg52.h>
3 #define uchar unsigned char
4 #define uchar unsigned char
5 /* -----------------------------------------------------------------------
6 */
7 void rt_reset()//复位DS1302
8 {
9 1 DSCK = 0;
10 1 DSRST = 0;
11 1 DSRST = 1;
12 1 }
13 /* --------------------------------------------------------------------- */
14 void rt_wbyte(uchar W_Byte)//写一个字节的内容到ds1302 中
15 {
16 1 uchar i;
17 1 for(i = 0; i < 8; ++i)
18 1 {
19 2 DSIO = 0;
20 2 if(W_Byte & 0x01)
21 2 {
22 3 DSIO = 1; /* set port pin high to read data */
23 3 }
24 2 DSCK = 0;
25 2 DSCK = 1;
26 2 W_Byte >>= 1;
27 2 }
28 1 }
29 /* -----------------------------------------------------------------------
30 */
31 uchar rt_rbyte()//从ds1302 中读一个字节的信息
32 {
33 1 uchar i;
34 1 uchar R_Byte;
35 1 R_Byte = 0x00;
36 1 DSIO = 1;
37 1 for(i=0; i<8; ++i)
38 1 {
39 2 R_Byte >>= 1;
40 2 DSCK = 1;
41 2 DSCK = 0;
42 2 if(DSIO){
43 3 R_Byte |= 0x80;
44 3 }
45 2 }
46 1 return R_Byte;
47 1 }
48 /* ----------------------------------------- */
49 void GetTime(struct time *p)//读DS1302 内部的时间信息,存在结构指针*p 中
50 {
51 1 rt_reset();
52 1 rt_wbyte(0xbf); /* clock burst read (eight registers) */
53 1 p->sec = rt_rbyte();//秒
54 1 p->minute = rt_rbyte();//分
55 1 p->hour = rt_rbyte();//时
C51 COMPILER V8.02 DS1302 05/27/2008 11:54:25 PAGE 2
56 1 p->date = rt_rbyte(); //date,星期
57 1 p->month = rt_rbyte();//月
58 1 p->week = rt_rbyte(); //day,日
59 1 p->year = rt_rbyte();//年
60 1 rt_rbyte(); /* must read control register in
61 1 burst mode */
62 1 rt_reset();
63 1 DSRST = 0;
64 1 }
65 /* ----------------------------------------- */
66 void SetTime(struct time *p)//将结构指针p 中的时间写入DS1302,更新其内部的时间
67 {
68 1 rt_reset();
69 1 rt_wbyte(0x8e); /* control register */
70 1 rt_wbyte(0); /* disable write protect */
71 1 rt_reset();
72 1 rt_wbyte(0x90); /* trickle charger register */
73 1 rt_wbyte(0xab); /* enable, 2 dDSIOdes, 8K resistor */
74 1 rt_reset();
75 1 rt_wbyte(0xbe); /* clock burst write (eight registers) */
76 1 rt_wbyte(p->sec);
77 1 rt_wbyte(p->minute);
78 1 rt_wbyte(p->hour);
79 1 rt_wbyte(p->date); //date
80 1 rt_wbyte(p->month);
81 1 rt_wbyte(p->week); //day
82 1 rt_wbyte(p->year);
83 1 rt_wbyte(0x80); /* must write control register in burst mode,enable write protect*/
84 1 rt_reset();
85 1 DSRST = 0;
86 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 207 ----
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 + -