📄 020.lst
字号:
168 返 回 值:无
169 ***********************************************************************/
170 void BurstR1302T(uchar *pRClock)
171 {
172 1 uchar i;
173 1 T_RST = 0;
174 1 T_CLK = 0;
175 1 T_RST = 1;
176 1 RTInputByte(0xbf); /* 0xbf:时钟多字节读命令 */
177 1 for (i=8; i>0; i--)
178 1 {
179 2 *pRClock = RTOutputByte(); /* 读1Byte数据 */
C51 COMPILER V7.09 020 09/03/2008 11:18:50 PAGE 4
180 2 pRClock++;
181 2 }
182 1 T_CLK = 1;
183 1 T_RST = 0;
184 1 }
185 /********************************************************************
186
187 函 数 名:BurstW1302R()
188 功 能:往DS1302寄存器数写入数据(多字节方式)
189 说 明:先写地址,后写数据(寄存器多字节方式)
190 调 用:RTInputByte()
191 入口参数:pWReg: 寄存器数据地址
192 返 回 值:无
193 ***********************************************************************/
194 void BurstW1302R(uchar *pWReg)
195 {
196 1 uchar i;
197 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作*/
198 1 T_RST = 0;
199 1 T_CLK = 0;
200 1 T_RST = 1;
201 1 RTInputByte(0xfe); /* 0xbe:时钟多字节写命令 */
202 1 for (i=31; i>0; i--) /* 31Byte 寄存器数据 */
203 1 {
204 2 RTInputByte(*pWReg); /* 写1Byte数据*/
205 2 pWReg++;
206 2 }
207 1 T_CLK = 1;
208 1 T_RST = 0;
209 1 }
210 /********************************************************************
211
212 函 数 名:BurstR1302R()
213 功 能:读取DS1302寄存器数据
214 说 明:先写地址,后读命令/数据(寄存器多字节方式)
215 调 用:RTInputByte() , RTOutputByte()
216 入口参数:pRReg: 寄存器数据地址
217 返 回 值:无
218 ***********************************************************************/
219 void BurstR1302R(uchar *pRReg)
220 {
221 1 uchar i;
222 1 T_RST = 0;
223 1 T_CLK = 0;
224 1 T_RST = 1;
225 1 RTInputByte(0xff); /* 0xff:时钟多字节读命令 */
226 1 for (i=31; i>0; i--) /*31Byte 寄存器数据 */
227 1 {
228 2 *pRReg = RTOutputByte(); /* 读1Byte数据 */
229 2 pRReg++;
230 2 }
231 1 T_CLK = 1;
232 1 T_RST = 0;
233 1 }
234 /********************************************************************
235
236 函 数 名:Set1302()
237 功 能:设置初始时间
238 说 明:先写地址,后读命令/数据(寄存器多字节方式)
239 调 用:W1302()
240 入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年
241 7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B
C51 COMPILER V7.09 020 09/03/2008 11:18:50 PAGE 5
242 返 回 值:无
243 ***********************************************************************/
244 void Set1302(uchar *pClock)
245 {
246 1 uchar i;
247 1 uchar ucAddr = 0x80;
248 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
249 1 for(i =7; i>0; i--)
250 1 {
251 2 W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */
252 2 pClock++;
253 2 ucAddr +=2;
254 2 }
255 1 W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
256 1 }
257 /********************************************************************
258
259 函 数 名:Get1302()
260 功 能:读取DS1302当前时间
261 说 明:
262 调 用:R1302()
263 入口参数:ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
264 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
265 返 回 值:无
266 ***********************************************************************/
267 void Get1302()
268 {
269 1 uchar i;
270 1 uchar ucAddr = 0x81;
271 1 for (i=0; i<7; i++)
272 1 {
273 2 {
274 3 ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
275 3 ucAddr += 2;
276 3
277 3 //return ucCurtime[i];
278 3 }
279 2 //send_char(ucCurtime[i]);
280 2 P1=0x20;
281 2 P2=table[ucCurtime[3]&0x0f];
282 2 delay_ms(1);
283 2
284 2 P1=0x10;
285 2 P2=table[(0xf0&ucCurtime[3])>>4];
286 2 delay_ms(1);
287 2
288 2 P1=0x08;
289 2 P2=table[(0x0f&ucCurtime[4])];
290 2 delay_ms(1);
291 2
292 2 P1=0x04;
293 2 P2=table[(0xf0&ucCurtime[4])>>4];
294 2 delay_ms(1);
295 2
296 2 P1=0x02;
297 2 P2=table[0x0f&ucCurtime[6]];
298 2 delay_ms(1);
299 2
300 2 P1=0x01;
301 2 P2=table[(0xf0&ucCurtime[6])>>4];
302 2 delay_ms(1);
303 2
C51 COMPILER V7.09 020 09/03/2008 11:18:50 PAGE 6
304 2
305 2 }
306 1 }
307 /*//////////////////////////////////////////////////////////////////////*/
308
309 main()
310 {
311 1
312 1 uchar *point;
313 1 uchar w1[7]={0x58,0x59,0x23,0x29,0x07,0x07,0x07};
314 1 point=&w1;
315 1
316 1 //com_set();
317 1 Set1302(point);
318 1
319 1 while(1)
320 1 {
321 2 Get1302();
322 2 }
323 1 }
324
325
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 396 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 8
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 + -