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

📄 dds.lst

📁 AT89S52的万年历程序源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 426          void music()
 427          {
 428   1          flag=0;
 429   1          detect();
 430   1              if(flag==5)
 431   1              {
 432   2                      flag=0;
 433   2              clrscreen();                                                            
 434   2                      while(flag!=6)
 435   2                      {
 436   3                              detect();
 437   3                              if(key==2)
 438   3                              key=0;
 439   3                              if(key==5)
 440   3                              key=0;
 441   3                              write_com(0x90);
 442   3                  hzkdis(song[key]);
 443   3                              //for(i=0;song[key][i]!='\0';i++)
 444   3                              //{                                             
 445   3                              //      write_date(song[key][i]);
 446   3                      //      }
 447   3                              if(flag==5)
 448   3                              {
 449   4                                      InitialSound();
 450   4                                      switch(key)
 451   4                                      {
 452   5                                      case 0:Play(tale,0,3,300);break;
 453   5                                              case 1:Play(Love,0,3,340);break;
 454   5                                      }
 455   4                                      ring_song=key;
 456   4                                      while(!esc);
 457   4                              }                             
 458   3                      }
 459   2              clrscreen();
 460   2                      //write_order(0x01);
 461   2                      key=1;  
 462   2              }
 463   1      }
 464          
 465          //星期 
 466          //(百年%4*5天+年+年/4+月星期表+日+2天)%7        
 467          unsigned char getweek(unsigned year,unsigned char month,unsigned char day)
 468          {
 469   1          unsigned week;
 470   1          unsigned char moontab1[]={3,6,0,3,5,1,3,6,2,4,0,2},moontab2[]={4,0,0,3,5,1,3,6,2,4,0,2};
 471   1          if((0==year%400)||(0==year%4&&0!=year%100))
 472   1          week=((year/100)%4*5+year%100+(year%100)/4+moontab1[month-1]+day+2)%7;
 473   1          else
 474   1          week=((year/100)%4*5+year%100+(year%100)/4+moontab2[month-1]+day+2)%7;
 475   1          return week;
 476   1      }
 477          void pagerili(unsigned char k)
 478          {
 479   1          unsigned char fline=(k-1)*21+7-rili_week+1;
 480   1          unsigned char j;
 481   1          unsigned char line[]={0x91,0x89,0x99};
 482   1          if(k==0)
 483   1          {
 484   2              write_com(0x90);
 485   2              write_data(time[rili_set[0]/10]);
 486   2              write_data(time[rili_set[0]%10]);
 487   2              write_data(time[rili_set[1]/10]);
C51 COMPILER V7.06   DDS                                                                   04/21/2009 14:42:16 PAGE 9   

 488   2              write_data(time[rili_set[1]%10]);
 489   2              hzkdis("年"); 
 490   2              write_data(time[rili_set[2]/10]);
 491   2              write_data(time[rili_set[2]%10]);
 492   2              hzkdis("月");
 493   2              return; 
 494   2          }   
 495   1          write_com(0x80);
 496   1          hzkdis("周一二三四五六日");    
 497   1          for(j=0;j<3;j++)
 498   1          {
 499   2              write_com(line[j]);
 500   2             /* if(j==0&&k==1)
 501   2              {
 502   2                      for(i=1;i<=8-rili_week;i++)
 503   2                  {
 504   2                              write_com(0x90+rili_week);
 505   2                          write_data(' ');
 506   2                      write_data(time[i]);
 507   2                              }
 508   2                              continue;
 509   2                  }*/
 510   2              for(i=1;i<=7&&(fline+j*7+i-7)<=rili_monthday;i++)
 511   2              {
 512   3                  if((fline+i+j*7)<17)
 513   3                  write_data(' ');
 514   3                  else
 515   3                  write_data(time[(fline+i+j*7-7)/10]);
 516   3                  if((fline+i+j*7)<8)
 517   3                  write_data(' ');
 518   3                              else
 519   3                  write_data(time[(fline+i+j*7-7)%10]);
 520   3              }
 521   2                      
 522   2          }
 523   1      }
 524          
 525          void rilidis()
 526          {
 527   1          rili_year=rili_set[0]*100+rili_set[1];
 528   1          rili_month=rili_set[2];
 529   1          rili_week=getweek(rili_year,rili_month,1);
 530   1          if(rili_month==4||rili_month==6||rili_month==9||rili_month==11)
 531   1              rili_monthday=30;
 532   1          else if(rili_month==2)
 533   1          {
 534   2              if(rili_year%400==0||(rili_year%4==0&&rili_year%100!=0))
 535   2              rili_monthday=29;
 536   2              else
 537   2              rili_monthday=28;
 538   2          }
 539   1          else rili_monthday=31;
 540   1          pagerili(0);
 541   1          flag=0;
 542   1          while(flag!=6)
 543   1          {
 544   2              detect();
 545   2              if(flag==1)
 546   2              {
 547   3                  flag=0;
 548   3                  if(sum<3)
 549   3                  sum++;
C51 COMPILER V7.06   DDS                                                                   04/21/2009 14:42:16 PAGE 10  

 550   3              }
 551   2              if(flag==2)
 552   2              {
 553   3                  flag=0;
 554   3                  if(sum>0)
 555   3                  sum--;
 556   3              } 
 557   2                      pagerili(sum);   
 558   2          }
 559   1      }
 560          
 561          void rili() 
 562          {
 563   1          unsigned char rili_setsign=0;
 564   1          flag=0;
 565   1          detect();
 566   1          if(flag==5)
 567   1          {
 568   2              flag=0;
 569   2              while(flag!=6)
 570   2              {                                       
 571   3                  write_com(0x80);
 572   3                  write_data(time[rili_set[0]/10]);
 573   3                  write_data(time[rili_set[0]%10]);
 574   3              write_data(time[rili_set[1]/10]);
 575   3                  write_data(time[rili_set[1]%10]);
 576   3                  hzkdis("年"); 
 577   3                  write_data(time[rili_set[2]/10]);
 578   3                  write_data(time[rili_set[2]%10]);
 579   3                  hzkdis("月"); 
 580   3                  detect();
 581   3                  if(flag==1)
 582   3                  {
 583   4                          flag=0;
 584   4                          rili_set[rili_setsign]+=1;
 585   4                  }
 586   3                  else if(flag==2)
 587   3                  {
 588   4                      flag=0;
 589   4                      if(rili_set[rili_setsign]>0)
 590   4                      rili_set[rili_setsign]-=1;
 591   4                  }
 592   3              else if(flag==3)
 593   3              {
 594   4                  flag=0;
 595   4                  rili_setsign++;
 596   4                  if(rili_setsign==3)
 597   4                  rili_setsign=0;
 598   4              }
 599   3              else if(flag==4)
 600   3              {
 601   4                  flag=0;
 602   4                  rili_set[rili_setsign]+=10;
 603   4              }
 604   3              else if(flag==5)
 605   3                  {
 606   4                      rilidis();
 607   4                  flag=6;
 608   4                  }
 609   3              if(rili_setsign==0||rili_setsign==1)
 610   3              {
 611   4                  if(rili_set[rili_setsign]>=100)
C51 COMPILER V7.06   DDS                                                                   04/21/2009 14:42:16 PAGE 11  

 612   4                  rili_set[rili_setsign]=0;
 613   4              }
 614   3              else if(rili_setsign==2)
 615   3              {
 616   4                  if(rili_set[rili_setsign]>12||rili_set[rili_setsign]<1)
 617   4                  rili_set[rili_setsign]=1;
 618   4              }                               
 619   3              }
 620   2              rili_set[0]=rili_set[1]=0;
 621   2              rili_set[2]=1;
 622   2              sum=0;
 623   2              key=4;
 624   2              clrscreen();
 625   2          }
 626   1      }
 627          
 628          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4644    ----
   CONSTANT SIZE    =   2151    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24      97
   IDATA SIZE       =     48    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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