📄 main.lst
字号:
433 3 switch(current){ /*根据当前设定项目加减时间*/
434 4 case CUR_MINUTE:set_min++;break;
435 4 case CUR_HOUR:set_hour++;break;
436 4 case CUR_DAY:set_day++;break;
437 4 case CUR_WEEKDAY:set_weekday++;break;
438 4 case CUR_MONTH:set_month++;break;
439 4 case CUR_YEAR:set_year++;break;
440 4 case CUR_SECOND:set_second++;break;
441 4 }
442 3 ModTime(&tm); /*调整时间*/
443 3 ModShow(tm); /*调整显示内容*/
444 3 DisplayString(0,0,str1);
445 3 DisplayString(0,1,str2);
446 3 tm.minutes = (tm.minutes>>4)*10+(tm.minutes&0x0f); /*BCD到HEX*/
447 3 tm.hours = (tm.hours>>4)*10+(tm.hours&0x0f);
448 3 tm.days = (tm.days>>4)*10+(tm.days&0x0f);
449 3 tm.weekdays = tm.weekdays;
450 3 tm.mon_cen = (tm.mon_cen>>4)*10+(tm.mon_cen&0x0f);
451 3 tm.years = (tm.years>>4)*10+(tm.years&0x0f);
452 3 tm.seconds = (tm.seconds>>4)*10+(tm.seconds&0x0f);
453 3 PCF8563_SetTime(tm); /*设定时间*/
454 3 }else if(showitem == SHOW_ALARM){ /*如果显示闹钟*/
455 3 switch(current){ /*根据当前设定项目加减闹钟*/
456 4 case CUR_MINUTE:setalarm_min++;break;
457 4 case CUR_HOUR:setalarm_hour++;break;
458 4 }
459 3 ModAlarm(&alm); /*调整闹钟*/
460 3 tm.minutes = alm.minute; /*待显*/
461 3 tm.hours = alm.hour;
462 3 tm.days = alm.day;
463 3 tm.weekdays = alm.weekday;
464 3 ModShow(tm); /*调整显示内容*/
465 3 DisplayString(0,0,str1);
466 3 DisplayString(0,1,str2);
467 3 alm.minute = (alm.minute>>4)*10 + (alm.minute&0x0f); /*BCD到HEX*/
468 3 alm.hour = (alm.hour>>4)*10 + (alm.hour&0x0f);
469 3 alm.day = (alm.day>>4)*10 + (alm.day&0x0f);
470 3 alm.weekday = (alm.weekday>>4)*10 + (alm.weekday&0x0f);
471 3 PCF8563_SetAlarm(alm,1,1,0,0); /*设定闹钟*/
472 3 }
473 2 break;
474 2 case 0x04: /*DEC*/
475 2 if(showitem == SHOW_TIME){ /*如果显示时间*/
476 3 PCF8563_ReadTime(&tm); /*读时间*/
477 3 set_min = (tm.minutes>>4)*10+(tm.minutes&0x0f); /*BCD到HEX*/
478 3 set_hour = (tm.hours>>4)*10+(tm.hours&0x0f);
479 3 set_day = (tm.days>>4)*10+(tm.days&0x0f);
480 3 set_weekday = tm.weekdays;
481 3 set_month = (tm.mon_cen>>4)*10+(tm.mon_cen&0x0f);
482 3 set_year = (tm.years>>4)*10+(tm.years&0x0f);
483 3 set_second = (tm.seconds>>4)*10+(tm.seconds&0x0f);
484 3 switch(current){ /*根据当前设定项目加减时间*/
485 4 case CUR_MINUTE:set_min--;break;
486 4 case CUR_HOUR:set_hour--;break;
C51 COMPILER V7.50 MAIN 03/19/2009 16:09:25 PAGE 9
487 4 case CUR_DAY:set_day--;break;
488 4 case CUR_WEEKDAY:set_weekday--;break;
489 4 case CUR_MONTH:set_month--;break;
490 4 case CUR_YEAR:set_year--;break;
491 4 case CUR_SECOND:set_second--;break;
492 4 }
493 3 ModTime(&tm); /*调整时间*/
494 3 ModShow(tm); /*调整显示内容*/
495 3 DisplayString(0,0,str1);
496 3 DisplayString(0,1,str2);
497 3 tm.minutes = (tm.minutes>>4)*10+(tm.minutes&0x0f); /*BCD到HEX*/
498 3 tm.hours = (tm.hours>>4)*10+(tm.hours&0x0f);
499 3 tm.days = (tm.days>>4)*10+(tm.days&0x0f);
500 3 tm.weekdays = tm.weekdays;
501 3 tm.mon_cen = (tm.mon_cen>>4)*10+(tm.mon_cen&0x0f);
502 3 tm.years = (tm.years>>4)*10+(tm.years&0x0f);
503 3 tm.seconds = (tm.seconds>>4)*10+(tm.seconds&0x0f);
504 3 PCF8563_SetTime(tm); /*设定时间*/
505 3 }else if(showitem == SHOW_ALARM){ /*如果显示闹钟*/
506 3 switch(current){ /*根据当前设定项目加减闹钟*/
507 4 case CUR_MINUTE:setalarm_min--;break;
508 4 case CUR_HOUR:setalarm_hour--;break;
509 4 }
510 3 ModAlarm(&alm); /*调整闹钟*/
511 3 tm.minutes = alm.minute; /*待显*/
512 3 tm.hours = alm.hour;
513 3 tm.days = alm.day;
514 3 tm.weekdays = alm.weekday;
515 3 ModShow(tm); /*调整显示内容*/
516 3 DisplayString(0,0,str1);
517 3 DisplayString(0,1,str2);
518 3 alm.minute = (alm.minute>>4)*10 + (alm.minute&0x0f); /*BCD到HEX*/
519 3 alm.hour = (alm.hour>>4)*10 + (alm.hour&0x0f);
520 3 alm.day = (alm.day>>4)*10 + (alm.day&0x0f);
521 3 alm.weekday = (alm.weekday>>4)*10 + (alm.weekday&0x0f);
522 3 PCF8563_SetAlarm(alm,1,1,0,0); /*设定闹钟*/
523 3 }
524 2 break;
525 2 }
526 1 }
527
528 void ModAlarm(struct alarm *alm)
529 {
530 1 if(setalarm_min == 60){ /*如果分钟大于59*/
531 2 setalarm_min = 0;
532 2 }else if(setalarm_min == 0xFF){ /*如果分钟小于0*/
533 2 setalarm_min = 59;
534 2 }
535 1 alm->minute = (setalarm_min%10) | ((setalarm_min/10)<<4); /*HEX到BCD*/
536 1
537 1 if(setalarm_hour == 24){ /*如果小时大于23*/
538 2 setalarm_hour = 0;
539 2 }else if(setalarm_hour == 0xFF){ /*如果小时小于0*/
540 2 setalarm_hour = 23;
541 2 }
542 1 alm->hour = (setalarm_hour%10) | ((setalarm_hour/10)<<4); /*HEX到BCD*/
543 1 }
544
545 void ModTime(struct time *tm)
546 {
547 1 if(set_min == 60){ /*如果分钟大于59*/
548 2 set_min = 0;
C51 COMPILER V7.50 MAIN 03/19/2009 16:09:25 PAGE 10
549 2 }else if(set_min == 0xff){ /*如果分钟小于0*/
550 2 set_min = 59;
551 2 }
552 1 tm->minutes = (set_min%10) | ((set_min/10)<<4); /*HEX到BCD*/
553 1
554 1 if(set_hour == 24){ /*如果小时大于23*/
555 2 set_hour = 0;
556 2 }else if(set_hour == 0xff){ /*如果小时小于0*/
557 2 set_hour = 23;
558 2 }
559 1 tm->hours = (set_hour%10) | ((set_hour/10)<<4); /*HEX到BCD*/
560 1
561 1 if(set_day==31 && (tm->mon_cen==4 || tm->mon_cen==6 || tm->mon_cen==9 || tm->mon_cen==11)){
562 2 set_day = 1;
563 2 }else if(set_day==29 && (tm->mon_cen==2 && tm->years%4!=0)){
564 2 set_day = 1;
565 2 }else if(set_day==30 && (tm->mon_cen==2 && tm->years%4==0)){
566 2 set_day = 1;
567 2 }else if(set_day == 32){
568 2 set_day = 1;
569 2 }else if(set_day==0 && (tm->mon_cen==4 || tm->mon_cen==6 || tm->mon_cen==9 || tm->mon_cen==11)){
570 2 set_day = 30;
571 2 }else if(set_day==0 && (tm->mon_cen==2 && tm->years%4!=0)){
572 2 set_day = 28;
573 2 }else if(set_day==0 && (tm->mon_cen==2 && tm->years%4==0)){
574 2 set_day = 29;
575 2 }else if(set_day == 0){
576 2 set_day = 31;
577 2 }
578 1 tm->days = (set_day%10)|((set_day/10)<<4); /*HEX到BCD*/
579 1
580 1 if(set_weekday == 7){ /*如果星期大于6*/
581 2 set_weekday = 0;
582 2 }else if(set_weekday == 0xff){ /*如果星期小于0*/
583 2 set_weekday = 6;
584 2 }
585 1 tm->weekdays = (set_weekday%10)|((set_weekday/10)<<4); /*HEX到BCD*/
586 1
587 1 if(set_month == 13){ /*如果月份大于12*/
588 2 set_month = 1;
589 2 }else if(set_month == 0){ /*如果月份小于1*/
590 2 set_month = 12;
591 2 }
592 1 tm->mon_cen = (set_month%10)|((set_month/10)<<4); /*HEX到BCD*/
593 1
594 1 if(set_year == 100){ /*如果年份大于100*/
595 2 set_year = 0;
596 2 }else if(set_year == 0xff){ /*如果年份小于0*/
597 2 set_year = 99;
598 2 }
599 1 tm->years = (set_year%10)|((set_year/10)<<4); /*HEX到BCD*/
600 1
601 1 if(set_second == 60){ /*如果秒大于59*/
602 2 set_second = 0;
603 2 }else if(set_second == 0xff){ /*如果秒小于0*/
604 2 set_second = 59;
605 2 }
606 1 tm->seconds = (set_second%10)|((set_second/10)<<4); /*HEX到BCD*/
607 1 }
608
609
610
C51 COMPILER V7.50 MAIN 03/19/2009 16:09:25 PAGE 11
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
C51 COMPILATION COMPLETE. 1 WARNING(S), 2 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -