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

📄 12864 万年历.lst

📁 自己写的万年历程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 592          {
 593   1                      if(keynum==4)
 594   1                      {
 595   2                              if(yue==2||yue==4||yue==6||yue==8||yue==9||yue==11||yue==1)
 596   2                              {       
 597   3                                      for(a=0;a<31;a++)
 598   3                                      dec_xq();
 599   3                                      showxq();
 600   3                              }
 601   2                              if(yue==5||yue==7||yue==10||yue==12)
 602   2                              {
 603   3                                      for(a=0;a<30;a++)
 604   3                                      dec_xq();
 605   3                                      showxq();
 606   3                              }
 607   2                              if(yue==3)
 608   2                              {       
 609   3                                      if(((nian+2000)%4==0&&(nian+2000)%100!=0)||((nian+2000)%400==0))
 610   3                                      {
 611   4                                              for(a=0;a<29;a++)
 612   4                                              dec_xq();
 613   4                                              showxq();
C51 COMPILER V7.06   12864_万年繽                                                          03/11/2009 21:07:34 PAGE 11  

 614   4                                      }
 615   3                                      else 
 616   3                                      {
 617   4                                              for(a=0;a<28;a++)
 618   4                                              dec_xq();
 619   4                                              showxq();
 620   4                                      }
 621   3                              }
 622   2                      }                       
 623   1              if(yue==1)
 624   1              {
 625   2                      yue = 13;
 626   2                      dec_nian();
 627   2              }
 628   1              yue--;
 629   1              write_op(0x94);
 630   1              write_dat(dis_code[yue / 10]);
 631   1              write_dat(dis_code[yue % 10]);
 632   1      }
 633          /*====================================
 634          函数功能:年减
 635          =====================================*/
 636          void dec_nian()
 637          {       
 638   1                      if(keynum==5)
 639   1                      {
 640   2                              if(yue<=2&&ri<=29)
 641   2                              {       
 642   3                                      if(((nian+1999)%4==0&&(nian+1999)%100!=0)||((nian+1999)%400==0))
 643   3                                      {
 644   4                                              for(a=0;a<366;a++)
 645   4                                              dec_xq();
 646   4                                              showxq();
 647   4                                      }
 648   3                                      else 
 649   3                                      {
 650   4                                              for(a=0;a<365;a++)
 651   4                                              dec_xq();
 652   4                                              showxq();
 653   4                                      }
 654   3                              }
 655   2                              else
 656   2                              {
 657   3                                      if(((nian+2000)%4==0&&(nian+2000)%100!=0)||((nian+2000)%400==0))
 658   3                                      {
 659   4                                              for(a=0;a<366;a++)
 660   4                                              dec_xq();
 661   4                                              showxq();
 662   4                                      }
 663   3                                      else
 664   3                                      { 
 665   4                                              for(a=0;a<365;a++)
 666   4                                              dec_xq();
 667   4                                              showxq();
 668   4                                      }                               
 669   3                              }
 670   2                              if((((nian+2000)%4==0&&(nian+2000)%100!=0)||((nian+2000)%400==0))&&(yue==2&&ri==29))
 671   2                              {
 672   3                                      dec_ri();
 673   3                              }
 674   2                      }
 675   1              nian--;
C51 COMPILER V7.06   12864_万年繽                                                          03/11/2009 21:07:34 PAGE 12  

 676   1              write_op(0x92);
 677   1              write_dat(dis_code[nian / 10]);
 678   1              write_dat(dis_code[nian % 10]);
 679   1      }
 680          /*====================================
 681          函数功能:星期减
 682          =====================================*/
 683          void dec_xq()
 684          {
 685   1              xq--;
 686   1              if(xq==0)
 687   1              {
 688   2                      xq = 7;
 689   2              }
 690   1      }
 691          /*====================================
 692          函数功能:显示星期
 693          =====================================*/
 694          void showxq()
 695          {
 696   1              write_op(0x9a);
 697   1              write_dat(dis_code1[2*xq-2]);
 698   1              write_dat(dis_code1[2*xq-1]);
 699   1      }
 700          /*====================================
 701          函数功能:键盘扫描
 702          =====================================*/
 703          void key_scan()
 704          {
 705   1              while(1)
 706   1              {   
 707   2                      if(K1==0)
 708   2                      {       
 709   3                              delayms(50);                                                                                                                            
 710   3                              if(K1==0)
 711   3                              {
 712   4                                      while(!K1);
 713   4                                      delayms(50);
 714   4                                      while(!K1);
 715   4                                      keynum++;
 716   4                                      if(keynum==1)
 717   4                                      {
 718   5                                              TR0=0;
 719   5                                              write_op(0x8c);
 720   5                                          write_op(0x0f);
 721   5                                      }
 722   4                                      if(keynum==2)
 723   4                                      {
 724   5                                              write_op(0x8a);
 725   5                                      }
 726   4                                      if(keynum==3)
 727   4                                      {
 728   5                                              write_op(0x96);
 729   5                                      }
 730   4                                      if(keynum==4)
 731   4                                      {
 732   5                                              write_op(0x94);
 733   5                                      }
 734   4                                      if(keynum==5)
 735   4                                      {
 736   5                                              write_op(0x92);
 737   5                                      }
C51 COMPILER V7.06   12864_万年繽                                                          03/11/2009 21:07:34 PAGE 13  

 738   4                                      if(keynum==6)
 739   4                                      {
 740   5                                              keynum=0;
 741   5                                              write_op(0x0c);
 742   5                                              TR0=1;
 743   5                                      }       
 744   4                              }               
 745   3                       } 
 746   2                      if(keynum!=0)
 747   2                      {
 748   3                              if(K2==0)
 749   3                              delayms(50);
 750   3                              if(K2==0)
 751   3                              {
 752   4                                      while(!K2);
 753   4                                      delayms(50);
 754   4                                      while(!K2);
 755   4                                      if(keynum==1)
 756   4                                      {
 757   5                                              inc_min();
 758   5                                              write_op(0x8c);
 759   5                                      }
 760   4                                      if(keynum==2)
 761   4                                      {
 762   5                                              inc_hour();
 763   5                                              write_op(0x8a);
 764   5                                      }
 765   4                                      if(keynum==3)
 766   4                                      {
 767   5                                              inc_ri();
 768   5                                              write_op(0x96);
 769   5                                      }
 770   4                                      if(keynum==4)
 771   4                                      {
 772   5                                              inc_yue();
 773   5                                              write_op(0x94);
 774   5                                      }
 775   4                                      if(keynum==5)
 776   4                                      {
 777   5                                              inc_nian();
 778   5                                              write_op(0x92);
 779   5                                      }
 780   4                              }
 781   3                              if(K3==0)
 782   3                              delayms(50);
 783   3                              if(K3==0)
 784   3                              {
 785   4                                      while(!K3);
 786   4                                      delayms(50);
 787   4                                      while(!K3);
 788   4                                      if(keynum==1)
 789   4                                      {
 790   5                                              dec_min();
 791   5                                              write_op(0x8c);
 792   5                                      }
 793   4                                      if(keynum==2)
 794   4                                      {
 795   5                                              dec_hour();
 796   5                                              write_op(0x8a);
 797   5                                      }
 798   4                                      if(keynum==3)
 799   4                                      {
C51 COMPILER V7.06   12864_万年繽                                                          03/11/2009 21:07:34 PAGE 14  

 800   5                                              dec_ri();
 801   5                                              write_op(0x96);
 802   5                                      }
 803   4                                      if(keynum==4)
 804   4                                      {
 805   5                                              dec_yue();
 806   5                                              write_op(0x94);
 807   5                                      }
 808   4                                      if(keynum==5)
 809   4                                      {
 810   5                                              dec_nian();
 811   5                                              write_op(0x92);
 812   5                                      }
 813   4                              }
 814   3                      } 
 815   2              }
 816   1      }
 817          /*====================================
 818          函数功能:初始化显示
 819          =====================================*/
 820          void ini_dis()
 821          {
 822   1              uchar i; 
 823   1              write_op(0x80); 
 824   1              for(i=0;i<16;i++)
 825   1              write_dat(dis_char[i]);
 826   1              write_op(0x90);
 827   1              for(i=0;i<16;i++)
 828   1              write_dat(dis_char1[i]);
 829   1              write_op(0x88); 
 830   1              for(i=0;i<16;i++)
 831   1              write_dat(dis_char2[i]);
 832   1              write_op(0x98);
 833   1              for(i=0;i<16;i++)
 834   1              write_dat(dis_char3[i]);
 835   1              hour=0x0c;
 836   1          min=0x00;
 837   1          sec=0x00;
 838   1          nian=0x08;
 839   1              yue=0x0a;
 840   1              ri=0x01;
 841   1              xq=0x03;
 842   1              wendu=0x00;
 843   1      }
 844          /*====================================
 845          函数功能:主函数
 846          =====================================*/
 847          void main()
 848          { 
 849   1              
 850   1              lcd_ini();
 851   1              ini_dis();
 852   1              TMOD = 0x01;            
 853   1              TH0 = 0x4b;
 854   1              TL0 = 0xf0;
 855   1              EA=1;
 856   1              ET0=1;
 857   1              TR0 = 1;
 858   1              key_scan();
 859   1      }
 860          /*====================================
 861          函数功能:中断函数
C51 COMPILER V7.06   12864_万年繽                                                          03/11/2009 21:07:34 PAGE 15  

 862          =====================================*/
 863          void timer0() interrupt 1 
 864          {       
 865   1              TH0 = 0x4b;
 866   1              TL0 = 0xf0;     
 867   1              sec100++;       
 868   1              if(sec100 == 20)
 869   1              {
 870   2                      sec100 = 0;
 871   2                      inc_sec();
 872   2              }
 873   1      }
 874          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3055    ----
   CONSTANT SIZE    =     88    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14       2
   IDATA SIZE       =   ----    ----
   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 + -