📄 ds1302.lst
字号:
C51 COMPILER V8.02 DS1302 10/31/2008 10:53:39 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: C:\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 uchar rt_rbyte()//从ds1302 中读一个字节的信息
31 {
32 1 uchar i;
33 1 uchar R_Byte;
34 1 R_Byte = 0x00;
35 1 DSIO = 1;
36 1 for(i=0; i<8; ++i)
37 1 {
38 2 R_Byte >>= 1;
39 2 DSCK = 1;
40 2 DSCK = 0;
41 2 if(DSIO){
42 3 R_Byte |= 0x80;
43 3 }
44 2 }
45 1 return R_Byte;
46 1 }
47 /* ----------------------------------------- */
48 void GetTime(struct time *p)//读DS1302 内部的时间信息,存在结构指针*p 中
49 {
50 1 rt_reset();
51 1 rt_wbyte(0xbf); /* clock burst read (eight registers) */
52 1 p->sec = rt_rbyte();//秒
53 1 p->minute = rt_rbyte();//分
54 1 p->hour = rt_rbyte();//时
55 1 p->date = rt_rbyte(); //date,星期
C51 COMPILER V8.02 DS1302 10/31/2008 10:53:39 PAGE 2
56 1 p->month = rt_rbyte();//月
57 1 p->week = rt_rbyte(); //day,日
58 1 p->year = rt_rbyte();//年
59 1 rt_rbyte(); /* must read control register in
60 1 burst mode */
61 1 rt_reset();
62 1 DSRST = 0;
63 1 }
64 /* ----------------------------------------- */
65 void SetTime(struct time *p)//将结构指针p 中的时间写入DS1302,更新其内部的时间
66 {
67 1 rt_reset();
68 1 rt_wbyte(0x8e); /* control register */
69 1 rt_wbyte(0); /* disable write protect */
70 1 rt_reset();
71 1 rt_wbyte(0xbe); /* clock burst write (eight registers) */
72 1 rt_wbyte(p->sec);
73 1 rt_wbyte(p->minute);
74 1 rt_wbyte(p->hour);
75 1 rt_wbyte(p->date); //date
76 1 rt_wbyte(p->month);
77 1 rt_wbyte(p->week); //day
78 1 rt_wbyte(p->year);
79 1 rt_wbyte(0x80); /* must write control register in burst mode,enable write protect*/
80 1 rt_reset();
81 1 DSRST = 0;
82 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 197 ----
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 + -