📄 ds1302.lst
字号:
271 1
272 1 P2=0xfd;
273 1 P0=tab[1];
274 1 delayms1(1);
275 1
276 1 P2=0xf7;
277 1 P0=tab[year1/10];
278 1 delayms1(1);
279 1
280 1 P2=0xef;
281 1 P0=tab[year1%10];
282 1 delayms1(1);
283 1
284 1 }
285
286
287 void displaymonth(void)
288 {
289 1
290 1 P2=0xfe;
291 1 P0=0x8c;
292 1 delayms1(1);
293 1
294 1 P2=0xfd;
295 1 P0=tab[2];
296 1 delayms1(1);
297 1
298 1 P2=0xf7;
299 1 P0=tab[month1/10];
300 1 delayms1(1);
301 1
302 1 P2=0xef;
303 1 P0=tab[month1%10];
C51 COMPILER V7.06 DS1302 06/27/2008 11:23:52 PAGE 6
304 1 delayms1(1);
305 1
306 1 }
307
308 void displayday(void)
309 {
310 1
311 1
312 1 P2=0xfe;
313 1 P0=0x8c;
314 1 delayms1(1);
315 1
316 1 P2=0xfd;
317 1 P0=tab[3];
318 1 delayms1(1);
319 1
320 1 P2=0xf7;
321 1 P0=tab[day1/10];
322 1 delayms1(1);
323 1
324 1 P2=0xef;
325 1 P0=tab[day1%10];
326 1 delayms1(1);
327 1
328 1 }
329
330 void displayweek(void)
331 {
332 1
333 1 P2=0xfe;
334 1 P0=0x8c;
335 1 delayms1(1);
336 1
337 1 P2=0xfd;
338 1 P0=tab[4];
339 1 delayms1(1);
340 1
341 1 P2=0xf7;
342 1 P0=tab[week1/10];
343 1 delayms1(1);
344 1
345 1 P2=0xef;
346 1 P0=tab[week1%10];
347 1 delayms1(1);
348 1
349 1 }
350
351
352 void displaysecond(void)
353 {
354 1
355 1 P2=0xfe;
356 1 P0=0x8c;
357 1 delayms1(1);
358 1
359 1 P2=0xfd;
360 1 P0=tab[7];
361 1 delayms1(1);
362 1
363 1 P2=0xf7;
364 1 P0=tab[second1/10];
365 1 delayms1(1);
C51 COMPILER V7.06 DS1302 06/27/2008 11:23:52 PAGE 7
366 1
367 1 P2=0xef;
368 1 P0=tab[second1%10];
369 1 delayms1(1);
370 1
371 1
372 1
373 1 }
374 /****************************************************************************
375 函数功能:数码管显示子程序
376 入口参数:k
377 出口参数:
378 ****************************************************************************/
379 void display(void)
380 {
381 1 P2=0xfe;
382 1 P0=tab[hour/16];
383 1 delay1();
384 1
385 1 P2=0xfd;
386 1 P0=tab[hour%16];
387 1 delay1();
388 1
389 1 // P2=0xfb;
390 1 // P0=0xbf; //显示"-"
391 1 // delay1();
392 1
393 1 P2=0xfb;
394 1 P0=tab[minute/16];
395 1 delay1();
396 1
397 1 P2=0xf7;
398 1 P0=tab[minute%16];
399 1 delay1();
400 1
401 1 // P2=0xdf;
402 1 // P0=0xbf; //显示"-"
403 1 // delay1();
404 1
405 1 P2=0xef;
406 1 P0=tab[second/16];
407 1 delay1();
408 1
409 1 P2=0xdf;
410 1 P0=tab[second%16];
411 1 delay1();
412 1 }
413
414
415 /****************************************************************************
416 函数功能:数码管显示子程年年序
417 入口参数:k
418 出口参数:
419 ***********************年月日*****************************************************/
420 void display1(void)
421 {
422 1 P2=0xfe;
423 1 P0=tab[year/16];
424 1 delay1();
425 1
426 1 P2=0xfd;
427 1 P0=tab[year%16];
C51 COMPILER V7.06 DS1302 06/27/2008 11:23:52 PAGE 8
428 1 delay1();
429 1
430 1 // P2=0xfb;
431 1 // P0=0xbf; //显示"-"
432 1 // delay1();
433 1
434 1 P2=0xfb;
435 1 P0=tab[month/16];
436 1 delay1();
437 1
438 1 P2=0xf7;
439 1 P0=tab[month%16];
440 1 delay1();
441 1
442 1 // P2=0xdf;
443 1 // P0=0xbf; //显示"-"
444 1 // delay1();
445 1
446 1 P2=0xef;
447 1 P0=tab[day/16];
448 1 delay1();
449 1
450 1 P2=0xdf;
451 1 P0=tab[day%16];
452 1 delay1();
453 1 }
454
455
456 /*****************************************************************************
457 函数功能:向DS1302送一字节数据子程序
458 入口参数:
459 出口参数:
460 *****************************************************************************/
461 void InputByte(unsigned char byte1)
462 {
463 1 char i;
464 1 for(i=8;i>0;i--)
465 1 {
466 2 DS1302_IO=(bit)(byte1&0x01);
467 2 DS1302_CLK=1;
468 2 _nop_();
469 2 DS1302_CLK=0;
470 2 byte1>>=1;
471 2 }
472 1 return;
473 1 }
474
475 /*****************************************************************************
476 函数功能:读DS1302一个字节子程序
477 入口参数:
478 出口参数:
479 *****************************************************************************/
480 unsigned char outputbyte(void)
481 {
482 1 unsigned char i;
483 1 unsigned ucdat=0;
484 1 for(i=8;i>0;i--)
485 1 {
486 2 DS1302_IO=1;
487 2 ucdat>>=1;
488 2 if(DS1302_IO)ucdat|=0x80;
489 2 DS1302_CLK=1;
C51 COMPILER V7.06 DS1302 06/27/2008 11:23:52 PAGE 9
490 2 _nop_();
491 2 DS1302_CLK=0;
492 2 }
493 1 return(ucdat);
494 1 }
495
496 /*****************************************************************************
497 函数功能:向DS1302某地址写一字节数据子程序
498 入口参数:addr,TDat
499 出口参数:
500 *****************************************************************************/
501 void write_ds1302(unsigned char addr,unsigned char TDat)
502 {
503 1 DS1302_RST=0;
504 1 _nop_();
505 1 DS1302_CLK=0;
506 1 _nop_();
507 1 DS1302_RST=1;
508 1 InputByte(addr);
509 1 _nop_();
510 1 InputByte(TDat);
511 1 DS1302_CLK=1;
512 1 _nop_();
513 1 DS1302_RST=0;
514 1 }
515
516 /*****************************************************************************
517 函数功能:读DS1302地址子程序
518 入口参数:add
519 出口参数:timedata
520 *****************************************************************************/
521 unsigned char read_ds1302(unsigned char addr)
522 {
523 1 unsigned char timedata;
524 1 DS1302_RST=0;
525 1 _nop_();
526 1 DS1302_CLK=0;
527 1 _nop_();
528 1 DS1302_RST=1;
529 1 InputByte(addr);
530 1 timedata=OutputByte();
*** WARNING C206 IN LINE 530 OF DS1302.C: 'OutputByte': missing function-prototype
531 1 DS1302_CLK=1;
532 1 _nop_();
533 1 DS1302_RST=0;
534 1 return(timedata);
535 1 }
536
537 /*****************************************************************************
538 函数功能:初始化DS1302子程序
539 入口参数:time[](全局变量)
540 出口参数:
541 *****************************************************************************/
542 void initial_ds1302()
543 {
544 1 write_ds1302(0x8e,0x00); //写保护寄存器,在对时钟或RAM写前WP一定要为0
545 1 write_ds1302(0x8c,time[0]); //年
546 1 write_ds1302(0x88,time[1]); //月
547 1 write_ds1302(0x86,time[2]); //日
548 1 write_ds1302(0x8A,time[3]); //星期
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -