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

📄 main_v2.lst

📁 KEIL下编的SST89E58单片机万年历(定时器)程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 459   2                      display();
 460   2                      }
 461   1               else
 462   1                      return;
 463   1               wink_ena=1;
 464   1      }
 465          
 466          
 467          //时间调整闪屏
 468          void wink_set(u8 wink)
 469          {
 470   1              switch(wink)
 471   1              {
 472   2              case 0:
 473   2                      break;
 474   2              case 1:
 475   2                      {               
 476   3                              put_char(0,0,' ');
 477   3                              put_char(1,0,' ');
 478   3                              put_char(2,0,' ');
 479   3                              put_char(3,0,' ');
 480   3                              break;
 481   3                      }
 482   2              case 2:
 483   2                      {
 484   3                              put_char(5,0,' ');
 485   3                              put_char(6,0,' ');
 486   3                              break;
 487   3                      }
 488   2              case 3:
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 9   

 489   2                      {
 490   3                              put_char(8,0,' ');
 491   3                              put_char(9,0,' ');
 492   3                              break;
 493   3                      }
 494   2              case 4:
 495   2                      {
 496   3                              put_char(8,1,' ');
 497   3                              put_char(9,1,' ');
 498   3                              break;
 499   3                      }
 500   2              case 5:
 501   2                      {
 502   3                              put_char(11,1,' ');
 503   3                              put_char(12,1,' ');
 504   3                              break;
 505   3                      }
 506   2              case 6:
 507   2                      {
 508   3                              put_char(14,1,' ');
 509   3                              put_char(15,1,' ');
 510   3                              break;
 511   3                      }
 512   2              default: break;
 513   2              }
 514   1              no_op_time+=1;
 515   1              if(no_op_time>MAX_NO_OP_TIME)
 516   1                      {
 517   2                      sys_mode=1;
 518   2                      sys_config();
 519   2                      no_op_time=0;
 520   2                      }
 521   1      }
 522          
 523          void sys_config()
 524          {
 525   1              if(sys_mode==sys_mode_pre)
 526   1                      return;
 527   1              if(sys_mode==0)
 528   1                      {
 529   2                      wink_ena=1;
 530   2                      wink_mode=1;
 531   2                      no_op_time=0;
 532   2                      put_str("TIMEADJ",1);
 533   2                      display();
 534   2                      }
 535   1              else if(sys_mode==1)
 536   1                      {
 537   2                      wink_mode=0;
 538   2                      put_str("                ",0);
 539   2                      put_str("TIME            ",1);
 540   2                      display();
 541   2                      }
 542   1              
 543   1              else if(sys_mode==2)
 544   1                      {
 545   2                      wink_ena=0;
 546   2                      put_str("   STOPWATCH    ",0);
 547   2                      put_str("                ",1);
 548   2                      display();
 549   2                      stop_ena=1;
 550   2                      }
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 10  

 551   1              else if(sys_mode==3)
 552   1                      {
 553   2                      wink_ena=0;
 554   2                      put_str("                ",1);
 555   2                      put_str("    Calander    ",0);
 556   2                      lon_calander();
 557   2                      stop_ena=0;
 558   2                      }
 559   1                      
 560   1              sys_mode_pre=sys_mode;
 561   1      }
 562          void lon_calander()
 563          {
 564   1              u16 dayto11=0;
 565   1              u16 daytochun=0;
 566   1              u16 temp_day=0;
 567   1              bit same_year_flag;
 568   1              u8 lon_year_table[13];
 569   1              u16 lon_year;
 570   1              u8 lon_month=0,lon_day=0;
 571   1              u8 max_month;
 572   1              u8 leap;
 573   1              u8 i;
 574   1      
 575   1              if(year>2100||year<1901)
 576   1                      {
 577   2                      put_str(" OUT OF RANGE!  ",1);
 578   2                      return;
 579   2                      }
 580   1      
 581   1              for(i=0;i<month-1;i++)
 582   1                      dayto11+=non_leap_table[i+(calc_day(year)?12:0)];
 583   1      /*              put_char(2,0,dayto11/100+48);
 584   1                      put_char(3,0,dayto11%100/10+48);
 585   1                      put_char(4,0,dayto11%100%10+48);*/
 586   1      
 587   1                      dayto11+=day;
 588   1          for(i=1;i<((calender_tab[year-1901][2]&0x60)>>5);i++)
 589   1                      daytochun+=non_leap_table[i+(calc_day(year)?12:0)-1];
 590   1                      daytochun+=(calender_tab[year-1901][2]&0x1f);
 591   1      
 592   1      
 593   1              if(dayto11>=daytochun)
 594   1                      {
 595   2                      same_year_flag=1;
 596   2                      daytochun=dayto11-daytochun+1;
 597   2                      lon_year=year;
 598   2                      }
 599   1              else
 600   1                      {
 601   2                      same_year_flag=0;
 602   2                      daytochun=daytochun-dayto11;
 603   2                      lon_year=year-1;
 604   2                      }
 605   1      
 606   1              for(i=0;i<13;i++)
 607   1                      {
 608   2                      if(i<4)
 609   2                              lon_year_table[3-i]=((calender_tab[lon_year-1901][0]>>i)&0x01)?30:29;
 610   2                      else if(i>=4&&i<12)
 611   2                              lon_year_table[i]=((calender_tab[lon_year-1901][1]<<(i-4))&0x80)?30:29;
 612   2                      else
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 11  

 613   2                              lon_year_table[12]=(calender_tab[lon_year-1901][2]&0x80)?30:29;
 614   2                      }
 615   1      
 616   1                      leap=((calender_tab[lon_year-1901][0]&0xf0)>>4);
 617   1      
 618   1               if(leap==0)
 619   1                      max_month=12;
 620   1               else
 621   1                      {
 622   2                      max_month=13;
 623   2                      put_char(15,0,0xff);
 624   2                      }
 625   1      
 626   1                      if(same_year_flag)
 627   1                              {
 628   2                                      for(lon_month=0;lon_month<max_month;lon_month++)        
 629   2                                      {
 630   3                                      temp_day+=lon_year_table[lon_month];    
 631   3                                      if(temp_day>=daytochun)
 632   3                                                      {
 633   4                                                      lon_day=daytochun+lon_year_table[lon_month]-temp_day;
 634   4                                                      lon_month+=1;
 635   4                                                      break;
 636   4                                                      }
 637   3                                      }
 638   2                              }
 639   1                      else
 640   1                              {
 641   2                                      for(lon_month=max_month-1;lon_month>=0;lon_month--)
 642   2                                      {
 643   3                                              temp_day+=lon_year_table[lon_month];    
 644   3                                              if(temp_day>=daytochun)
 645   3                                                      {
 646   4                                                      lon_day=temp_day-daytochun+1;
 647   4                                                      lon_month+=1;
 648   4                                                      break;
 649   4                                                      }
 650   3                                              
 651   3                                      }                                       
 652   2                                      
 653   2                              }
 654   1      
 655   1                                      put_char(3,1,lon_year/1000+48);
 656   1                                      put_char(4,1,(lon_year%1000)/100+48);
 657   1                                      put_char(5,1,lon_year%1000%100/10+48);
 658   1                                      put_char(6,1,lon_year%1000%100%10+48);
 659   1                                      if(leap)
 660   1                                      {
 661   2                                      if(lon_month==(leap+1))
 662   2                                              put_str("LM",1);
 663   2                                      if(lon_month>leap)
 664   2                                              lon_month-=1;
 665   2                                      }
 666   1                                      put_char(8,1,lon_month/10+48);
 667   1                                      put_char(9,1,lon_month%10+48);
 668   1      
 669   1      
 670   1                                      put_char(11,1,lon_day/10+48);   
 671   1                                      put_char(12,1,lon_day%10+48);
 672   1                                      put_char(7,1,'-');
 673   1                                      put_char(10,1,'-');
 674   1      }
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 12  

 675          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3136    ----
   CONSTANT SIZE    =    738    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26      31
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -