📄 ds1032.lst
字号:
C51 COMPILER V7.50 DS1032 01/01/2003 07:52:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DS1032
OBJECT MODULE PLACED IN ds1032.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds1032.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #pragma small
2 #include <reg51.h>
3 #define uchar unsigned char
4
5 sbit ds1032_clk=P1^0;
6 sbit ds1032_dat=P1^1;
7 sbit ds1032_rst=P1^2;
8
9 sbit ACC_0=ACC^0;
10 sbit ACC_1=ACC^1;
11 sbit ACC_2=ACC^2;
12 sbit ACC_3=ACC^3;
13 sbit ACC_4=ACC^4;
14 sbit ACC_5=ACC^5;
15 sbit ACC_6=ACC^6;
16 sbit ACC_7=ACC^7;
17
18
19 void write(void) //写ds1032操作
20 {
21 1 ds1032_dat=ACC_0;
22 1 ds1032_clk=1;ds1032_clk=0;
23 1 ds1032_dat=ACC_1;
24 1 ds1032_clk=1;ds1032_clk=0;
25 1 ds1032_dat=ACC_2;
26 1 ds1032_clk=1;ds1032_clk=0;
27 1 ds1032_dat=ACC_3;
28 1 ds1032_clk=1;ds1032_clk=0;
29 1 ds1032_dat=ACC_4;
30 1 ds1032_clk=1;ds1032_clk=0;
31 1 ds1032_dat=ACC_5;
32 1 ds1032_clk=1;ds1032_clk=0;
33 1 ds1032_dat=ACC_6;
34 1 ds1032_clk=1;ds1032_clk=0;
35 1 ds1032_dat=ACC_7;
36 1 ds1032_clk=1;ds1032_clk=0;
37 1 }
38
39 void read(void) //读ds1032操作
40 {ACC_0=ds1032_dat;
41 1 ds1032_clk=1;
42 1 ds1032_clk=0;
43 1 ACC_1=ds1032_dat;
44 1 ds1032_clk=1;
45 1 ds1032_clk=0;
46 1 ACC_2=ds1032_dat;
47 1 ds1032_clk=1;
48 1 ds1032_clk=0;
49 1 ACC_3=ds1032_dat;
50 1 ds1032_clk=1;
51 1 ds1032_clk=0;
52 1 ACC_4=ds1032_dat;
53 1 ds1032_clk=1;
54 1 ds1032_clk=0;
55 1 ACC_5=ds1032_dat;
C51 COMPILER V7.50 DS1032 01/01/2003 07:52:47 PAGE 2
56 1 ds1032_clk=1;
57 1 ds1032_clk=0;
58 1 ACC_6=ds1032_dat;
59 1 ds1032_clk=1;
60 1 ds1032_clk=0;
61 1 ACC_7=ds1032_dat;
62 1 ds1032_clk=1;
63 1 ds1032_clk=0;
64 1 }
65
66 uchar readram_b(uchar address) //从ram中读出一个字节
67 {ds1032_rst=0;
68 1 ds1032_clk=0;
69 1 ds1032_rst=1;
70 1 ACC=address;
71 1 write();
72 1 ds1032_dat=1;
73 1 read();
74 1 return ACC;
75 1 }
76
77
78 uchar readrtc_b(uchar address) //从ds1032中读出一个字节
79 {
80 1 ds1032_rst=0;
81 1 ds1032_clk=0; //清时钟总线
82 1 ds1032_rst=1;
83 1 ACC=address;
84 1 write();
85 1 ds1032_dat=1;
86 1 read();
87 1 return ACC;
88 1 }
89
90 void writeram_b(uchar address,uchar number) //向RAM中写入一字节
91 {ds1032_clk=0;
92 1 ds1032_rst=0;
93 1 ds1032_rst=1;
94 1 ACC=address;
95 1 write();
96 1 ACC=number;
97 1 write();
98 1 ds1032_rst=0;
99 1 ds1032_clk=1;
100 1 }
101
102 void writertc_b(uchar address,uchar number) //向DS1032中写入一字节
103 {ds1032_clk=0;
104 1 ds1032_rst=0;
105 1 ds1032_rst=1;
106 1 ACC=address;
107 1 write();
108 1 ACC=number;
109 1 write();
110 1 ds1032_rst=0;
111 1 ds1032_clk=1;
112 1 }
113
114 void readram(uchar data *buffer,uchar size) //从RAM中读出多字节
115 {register uchar a,b;
116 1 ds1032_clk=0;
117 1 ds1032_rst=0;
C51 COMPILER V7.50 DS1032 01/01/2003 07:52:47 PAGE 3
118 1 ds1032_rst=1;
119 1 ACC=0XFF;
120 1 write();
121 1 ds1032_dat=1;
122 1 for(a=0;a<size;a++)
123 1 {ACC_0=ds1032_dat;
124 2 ds1032_clk=1;ds1032_clk=0;ACC_1=ds1032_dat;
125 2 ds1032_clk=1;ds1032_clk=0;ACC_2=ds1032_dat;
126 2 ds1032_clk=1;ds1032_clk=0;ACC_3=ds1032_dat;
127 2 ds1032_clk=1;ds1032_clk=0;ACC_4=ds1032_dat;
128 2 ds1032_clk=1;ds1032_clk=0;ACC_5=ds1032_dat;
129 2 ds1032_clk=1;ds1032_clk=0;ACC_6=ds1032_dat;
130 2 ds1032_clk=1;ds1032_clk=0;ACC_7=ds1032_dat;
131 2 b=ACC;
132 2 *(buffer+a)=b;
133 2 ds1032_clk=1;ds1032_clk=0;
134 2 }
135 1 ds1032_rst=0;ds1032_clk=1;
136 1 }
137
138
139
140 void readrtc(uchar data *buffer,uchar size) //从DS1032中读出多字节
141 {register uchar a;
142 1 uchar b;
143 1 ds1032_clk=0;
144 1 ds1032_rst=0;
145 1 ds1032_rst=1;
146 1 ACC=0Xbf;
147 1 write();
148 1 ds1032_dat=1;
149 1 for(a=0;a<size;a++) //读出DS1032数据
150 1 {ACC_0=ds1032_dat;
151 2 ds1032_clk=1;ds1032_clk=0;ACC_1=ds1032_dat;
152 2 ds1032_clk=1;ds1032_clk=0;ACC_2=ds1032_dat;
153 2 ds1032_clk=1;ds1032_clk=0;ACC_3=ds1032_dat;
154 2 ds1032_clk=1;ds1032_clk=0;ACC_4=ds1032_dat;
155 2 ds1032_clk=1;ds1032_clk=0;ACC_5=ds1032_dat;
156 2 ds1032_clk=1;ds1032_clk=0;ACC_6=ds1032_dat;
157 2 ds1032_clk=1;ds1032_clk=0;ACC_7=ds1032_dat;
158 2 b=ACC;
159 2 *(buffer+a)=b;
160 2 ds1032_clk=1;ds1032_clk=0;
161 2 }
162 1 ds1032_rst=0;ds1032_clk=1;
163 1 }
164
165 void writeram(uchar data *buffer,uchar size) //向RAM中写入多字节
166 {register uchar a;
167 1 ds1032_clk=0;
168 1 ds1032_rst=0;
169 1 ds1032_rst=1;
170 1 ACC=0XFE;
171 1 write();
172 1 for(a=0;a<size;a++)
173 1 {ACC=*(buffer+a);
174 2 write();
175 2 }
176 1 ds1032_rst=0;
177 1 ds1032_clk=1;
178 1 }
179 void writertc(uchar data *buffer,uchar size) //向DS1032中写入多字节
C51 COMPILER V7.50 DS1032 01/01/2003 07:52:47 PAGE 4
180 {register uchar a;
181 1 ds1032_clk=0;
182 1 ds1032_rst=0;
183 1 ds1032_rst=1;
184 1 ACC=0Xbe;
185 1 write();
186 1 for(a=0;a<size;a++)
187 1 {ACC=*(buffer+a);
188 2 write();
189 2 }
190 1 ds1032_rst=0;
191 1 ds1032_clk=1;
192 1 }
193
194 uchar readsec(void) //从DS1032中读出秒字节
195 {return readrtc_b(0x81);}
196
197
198 uchar readmin(void)//从DS1032中读出分字节
199 {return readrtc_b(0x83);}
200
201 uchar readhr(void) //从DS1032中读出时字节
202 {return readrtc_b(0x85);}
203
204 uchar readday(void) //从DS1032中读出日字节
205 {return readrtc_b(0x87);}
206
207 uchar readmonth(void) //从DS1032中读出月字节
208 {return readrtc_b(0x89);}
209
210 uchar readweek(void) //从DS1032中读星秒字节
211 {return readrtc_b(0x8b);}
212
213 uchar readyear(void) //从DS1032中读出年字节
214 {return readrtc_b(0x8d);}
215
216 uchar writesec(uchar number) //向DS1032中写入秒字节
217 {writertc_b(0x80,number);}
*** WARNING C173 IN LINE 217 OF DS1032.C: missing return-expression
218
219 uchar writemin(uchar number) //向DS1032中写入秒字节
220 {writertc_b(0x82,number);}
*** WARNING C173 IN LINE 220 OF DS1032.C: missing return-expression
221
222 uchar writehr(uchar number) //向DS1032中写入秒字节
223 {writertc_b(0x84,number);}
*** WARNING C173 IN LINE 223 OF DS1032.C: missing return-expression
224
225 uchar writeday(uchar number) //向DS1032中写入秒字节
226 {writertc_b(0x86,number);}
*** WARNING C173 IN LINE 226 OF DS1032.C: missing return-expression
227
228 uchar writemonth(uchar number) //向DS1032中写入秒字节
229 {writertc_b(0x88,number);}
*** WARNING C173 IN LINE 229 OF DS1032.C: missing return-expression
230
231 uchar writeweek(uchar number) //向DS1032中写入秒字节
232 {writertc_b(0x8a,number);}
*** WARNING C173 IN LINE 232 OF DS1032.C: missing return-expression
233
234 uchar writeyear(uchar number) //向DS1032中写入秒字节
235 {writertc_b(0x8c,number);}
C51 COMPILER V7.50 DS1032 01/01/2003 07:52:47 PAGE 5
*** WARNING C173 IN LINE 235 OF DS1032.C: missing return-expression
236
237 uchar writecontrol(uchar number) //向慢速充电控制寄存器写入控制字
238 {writertc_b(0x90,number);}
*** WARNING C173 IN LINE 238 OF DS1032.C: missing return-expression
239
240 void disablewp(void) //禁止写保护
241 {writertc_b(0x80,0);}
242
243 void enablewp(void) //允许写保护
244 {writertc_b(0x8e,0x80);}
245
246 void main(void)
247 {uchar sec,min,hr,day,month,week,year;
248 1 uchar data buffer1[32]={32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57
-,58,59,60,61,62,63};
249 1 uchar data buffer2[8]={45,45,15,13,3,2,01,0};
250 1
251 1 //读DS1032
252 1 disablewp(); //禁止写保护
253 1 writecontrol(0xaa); //向慢充电控制寄存器写入控制字节
254 1 writeram(buffer1,31); //读DS1032RAM
255 1
256 1 writertc(buffer2,8); //向DS1032写时钟
257 1 enablewp(); //允许写保护
258 1 readram(buffer1,31); //读DS1032RAM
259 1 readrtc(buffer2,8); //读DS1032时钟
260 1 writesec(11);
261 1 sec=readsec(); //读秒
262 1 min=readmin(); //读分
263 1 hr=readhr(); //读时
264 1 day=readday(); //读日
265 1 month=readmonth(); //读月
266 1 week=readweek();
267 1 // year=readyear();
268 1 ACC=0;
269 1 }
*** WARNING C280 IN LINE 247 OF DS1032.C: 'year': unreferenced local variable
270
271
272
273
274
275
276
277
278
279
280
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 672 ----
CONSTANT SIZE = 40 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 47
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 9 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -