📄 ds1302.lst
字号:
C51 COMPILER V7.50 DS1302 06/02/2008 20:59:14 PAGE 1
C51 COMPILER V7.50, 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 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3
4 欢迎访问我的USB专区:http://group.ednchina.com/93/
5 欢迎访问我的blog: http://www.ednchina.com/blog/computer00
6 http://computer00.21ic.org
7
8 DS1302.C file
9
10 作者:Computer-lov
11 建立日期: 2008.05.19
12 修改日期: 2008.05.19
13 版本:V1.0
14 版权所有,盗版必究。
15 Copyright(C) Computer-lov 2008-2018
16 All rights reserved
17 *******************************************************************/
18
19 #include <intrins.h>
20 #include <at89x52.h>
21 #include "ds1302.h"
22 #include "MyType.h"
23
24 /********************************************************************
25 函数功能:DS1302写一字节函数。
26 入口参数:一字节数据。
27 返 回:无。
28 备 注:RST脚要先设置好。
29 ********************************************************************/
30 void DS1302WriteByte(uint8 d)
31 {
32 1 uint8 i;
33 1 for(i=0;i<8;i++)
34 1 {
35 2 if(d&0x01)
36 2 {
37 3 DS_IO=1;
38 3 }
39 2 else
40 2 {
41 3 DS_IO=0;
42 3 }
43 2 DS_SCLK=1;
44 2 _nop_();
45 2 DS_SCLK=0;
46 2 d>>=1;
47 2 }
48 1 DS_IO=1;
49 1 }
50 ////////////////////////End of function//////////////////////////////
51
52 /********************************************************************
53 函数功能:DS1302读一字节函数。
54 入口参数:无。
55 返 回:一字节数据。
C51 COMPILER V7.50 DS1302 06/02/2008 20:59:14 PAGE 2
56 备 注:RST要先设置好。
57 ********************************************************************/
58 uint8 DS1302ReadByte(void)
59 {
60 1 uint8 i,d;
61 1 for(i=0;i<8;i++)
62 1 {
63 2 d>>=1;
64 2 if(DS_IO)
65 2 {
66 3 d|=0x80;
67 3 }
68 2 DS_SCLK=1;
69 2 _nop_();
70 2 DS_SCLK=0;
71 2 }
72 1 return(d);
73 1 }
74 ////////////////////////End of function//////////////////////////////
75
76 uint8 Time[7];
77
78 /********************************************************************
79 函数功能:获取时间函数。
80 入口参数:保存时间的指针。
81 返 回:无。
82 备 注:无。
83 ********************************************************************/
84 void GetTime(uint8 *p)
85 {
86 1 uint8 i;
87 1 DS_SCLK=0;
88 1 DS_RST=1;
89 1 DS1302WriteByte(0xBF); //Burst read ??只写一次不行,返回全1。
90 1 DS_RST=0;
91 1 DS_SCLK=0;
92 1
93 1 DS_RST=1;
94 1 DS1302WriteByte(0xBF); //Burst read
95 1 for(i=0;i<7;i++)
96 1 {
97 2 p[i]=DS1302ReadByte();
98 2 }
99 1 DS_RST=0;
100 1 DS_SCLK=0;
101 1 }
102 ////////////////////////End of function//////////////////////////////
103
104 /********************************************************************
105 函数功能:设置时间函数。
106 入口参数:设置时间的数据指针。
107 返 回:无。
108 备 注:。
109 ********************************************************************/
110 void SetTime(uint8 *p)
111 {
112 1 uint8 i;
113 1 DS_SCLK=0;
114 1 DS_RST=1;
115 1 p[0]&=0x7F; //启动
116 1 p[2]&=0x7F; //24小时制
117 1 DS1302WriteByte(0xBE); //Burst write
C51 COMPILER V7.50 DS1302 06/02/2008 20:59:14 PAGE 3
118 1 for(i=0;i<7;i++)
119 1 {
120 2 DS1302WriteByte(p[i]);
121 2 }
122 1 DS1302WriteByte(0x00);
123 1 DS_RST=0;
124 1 DS_SCLK=0;
125 1 }
126 ////////////////////////End of function//////////////////////////////
127
128 /********************************************************************
129 函数功能:DS1302初始化函数。
130 入口参数:无。
131 返 回:无。
132 备 注:无。
133 ********************************************************************/
134 void DS1302Init(void)
135 {
136 1 uint8 x;
137 1 DS_RST=0;
138 1 DS_SCLK=0;
139 1 DS_RST=1;
140 1 DS1302WriteByte(0x8E); //写WP
141 1 DS1302WriteByte(0x00);
142 1 DS_RST=0;
143 1 DS_SCLK=0;
144 1
145 1 DS_RST=1;
146 1 DS1302WriteByte(0x81); //读地址0
147 1 x=DS1302ReadByte();
148 1 DS_RST=0;
149 1 DS_SCLK=0;
150 1
151 1 x&=0x7F;
152 1
153 1 DS_RST=1;
154 1 DS1302WriteByte(0x80); //写地址0
155 1 DS1302WriteByte(x);
156 1 DS_RST=0;
157 1 DS_SCLK=0;
158 1
159 1 DS_RST=1;
160 1 DS1302WriteByte(0x90); //充电控制
161 1 DS1302WriteByte(0xA5);
162 1 DS_RST=0;
163 1 DS_SCLK=0;
164 1 }
165 ////////////////////////End of function//////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 247 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 6
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 + -