⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 基于AT89S52控制芯片的电子万年历程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -