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

📄 led.lst

📁 51的万年历程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 479          {
 480   1              Ser_STB=0;
 481   1              Ser_STB=1;
 482   1      }
 483          void Disp_LED(uint8 *dat)
 484          {
 485   1              uint8 i;
 486   1              uint16 tmp,tmp1,tmp2;
 487   1              LED_EN=0;
 488   1              LED_Y=0x01|0xf0;
 489   1              if(WORDNUMBER==16)
 490   1              {
 491   2                      WORDNUMBER=0;
 492   2                      WORDNUM++;
 493   2              }
 494   1              for(i=0;i<32;i+=2)
 495   1              {
 496   2                      if((!KEY1)&&(!LCD_NO))TIMESETTING();
 497   2                      tmp1=(dat[i+1]|(uint16)(dat[i]<<8));
 498   2                      tmp2=(dat[i+33]|(uint16)(dat[i+32]<<8));
 499   2                      tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
 500   2                      if(tmp2==0x55aa)WORDNUM=0;
 501   2                      LED_EN=0;
 502   2                      LED_Ser((uint8)(tmp));
 503   2                      LED_Ser((uint8)(tmp>>8));
 504   2                      SET_STB();
 505   2                      LED_Y=0x0f&(i/2);
 506   2                      LED_Delay();
 507   2                      LED_EN=1;
 508   2              }
 509   1      }
 510          void Disp_LED1(uint8 *dat,uint8 *dat1)
 511          {
 512   1              uint8 i;
 513   1              uint16 tmp,tmp1,tmp2;
 514   1              LED_EN=0;
 515   1              LED_Y=0x01|0xf0;
 516   1              if(WORDNUMBER==16)
 517   1              {
 518   2                      WORDNUMBER=0;
C51 COMPILER V7.50   LED                                                                   09/28/2008 21:00:12 PAGE 10  

 519   2                      WORDNUM++;
 520   2              }
 521   1              for(i=0;i<32;i+=2)
 522   1              {
 523   2                      if((!KEY1)&&(!LCD_NO))TIMESETTING();
 524   2                      tmp1=(dat[i+1]|(uint16)(dat[i]<<8));
 525   2                      tmp2=(dat1[i+1]|(uint16)(dat1[i]<<8));
 526   2                      tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
 527   2                      LED_EN=0;
 528   2                      LED_Ser((uint8)(tmp));
 529   2                      LED_Ser((uint8)(tmp>>8));
 530   2                      SET_STB();
 531   2                      LED_Y=0x0f&(i/2);
 532   2                      LED_Delay();
 533   2                      LED_EN=1;
 534   2              }
 535   1      }
 536          void Disp_Str_LED2(uint8 *dat,uint8 *dat1,uint8 *dat2)
 537          {
 538   1              uint8 i;
 539   1              uint16 tmp,tmp1,tmp2;
 540   1              LED_EN=0;
 541   1              LED_Y=0x01|0xf0;
 542   1              if(WORDNUMBER==16)
 543   1              {
 544   2                      WORDNUMBER=0;
 545   2                      WORDNUM++;
 546   2              }
 547   1              for(i=0;i<32;i+=2)
 548   1              {
 549   2                      if((!KEY1)&&(!LCD_NO))TIMESETTING();
 550   2                      tmp1=(dat1[i/2]|(uint16)(dat[i/2]<<8));
 551   2                      tmp2=(dat2[i+1]|(uint16)(dat2[i]<<8));
 552   2                      tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
 553   2                      LED_EN=0;
 554   2                      LED_Ser((uint8)(tmp));
 555   2                      LED_Ser((uint8)(tmp>>8));
 556   2                      SET_STB();
 557   2                      LED_Y=0x0f&(i/2);
 558   2                      LED_Delay();
 559   2                      LED_EN=1;
 560   2              }
 561   1      }
 562          void Disp_Str_LED4(uint8 *dat,uint8 *dat1,uint8 *dat2,uint8 *dat3)
 563          {
 564   1              uint8 i;
 565   1              uint16 tmp,tmp1,tmp2;
 566   1              LED_EN=0;
 567   1              LED_Y=0x01|0xf0;
 568   1              if(WORDNUMBER==16)
 569   1              {
 570   2                      WORDNUMBER=0;
 571   2                      WORDNUM++;
 572   2              }
 573   1              for(i=0;i<32;i+=2)
 574   1              {
 575   2                      if((!KEY1)&&(!LCD_NO))TIMESETTING();
 576   2                      tmp1=(dat1[i/2]|(uint16)(dat[i/2]<<8));
 577   2                      tmp2=(dat3[i/2]|(uint16)(dat2[i/2]<<8));
 578   2                      tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
 579   2                      LED_EN=0;
 580   2                      LED_Ser((uint8)(tmp));
C51 COMPILER V7.50   LED                                                                   09/28/2008 21:00:12 PAGE 11  

 581   2                      LED_Ser((uint8)(tmp>>8));
 582   2                      SET_STB();
 583   2                      LED_Y=0x0f&(i/2);
 584   2                      LED_Delay();
 585   2                      LED_EN=1;
 586   2              }
 587   1      }
 588          void Disp_Str_LED_HZ(uint8 *dat,uint8 *dat1,uint8 *dat2)
 589          {
 590   1              uint8 i;
 591   1              uint16 tmp,tmp1,tmp2;
 592   1              LED_EN=0;
 593   1              LED_Y=0x01|0xf0;
 594   1              if(WORDNUMBER==16)
 595   1              {
 596   2                      WORDNUMBER=0;
 597   2                      WORDNUM++;
 598   2              }
 599   1              for(i=0;i<32;i+=2)
 600   1              {
 601   2                      if((!KEY1)&&(!LCD_NO))TIMESETTING();
 602   2                      tmp1=(dat[i+1]|(uint16)(dat[i]<<8));
 603   2                      tmp2=(dat2[i/2]|(uint16)(dat1[i/2]<<8));
 604   2                      tmp=((tmp1<<WORDNUMBER)|tmp2>>(16-WORDNUMBER));
 605   2                      LED_EN=0;
 606   2                      LED_Ser((uint8)(tmp));
 607   2                      LED_Ser((uint8)(tmp>>8));
 608   2                      SET_STB();
 609   2                      LED_Y=0x0f&(i/2);
 610   2                      LED_Delay();
 611   2                      LED_EN=1;
 612   2              }
 613   1      }
 614          
 615          void LCD_DISP()
 616          {
 617   1              DATE[0]='2';
 618   1              DATE[1]='0';
 619   1              DATE[4]='/';
 620   1              DATE[7]='/';
 621   1              DATE[10]='W';
 622   1              DATE[11]='e';
 623   1              DATE[12]='e';
 624   1              DATE[13]='k';
 625   1              DATE[14]=':';
 626   1              DATE[16]='\0';
 627   1              TIME[2]=':';
 628   1              TIME[5]=' ';
 629   1              TIME[6]='T';
 630   1              TIME[7]='e';
 631   1              TIME[8]='m';
 632   1              TIME[9]='p';
 633   1              TIME[10]=':';
 634   1              TIME[13]=0xdf;
 635   1              TIME[14]='C';
 636   1              TIME[15]=' ';
 637   1              TIME[16]='\0';
 638   1      }
 639          
 640          
 641          
 642          void LCD_Disp_Time()
C51 COMPILER V7.50   LED                                                                   09/28/2008 21:00:12 PAGE 12  

 643          {
 644   1              DATE[2]=TIMETYPE.Year/10+'0';
 645   1              DATE[3]=TIMETYPE.Year%10+'0';
 646   1              DATE[5]=TIMETYPE.Month/10+'0';
 647   1              DATE[6]=TIMETYPE.Month%10+'0';
 648   1              DATE[8]=TIMETYPE.Day/10+'0';
 649   1              DATE[9]=TIMETYPE.Day%10+'0';
 650   1              DATE[15]=TIMETYPE.Week+'0';
 651   1              TIME[0]=TIMETYPE.Hour/10+'0';
 652   1              TIME[1]=TIMETYPE.Hour%10+'0';
 653   1              TIME[3]=TIMETYPE.Mine/10+'0';
 654   1              TIME[4]=TIMETYPE.Mine%10+'0';
 655   1              TIME[11]=Temp_Value/10+'0';
 656   1              TIME[12]=Temp_Value%10+'0';
 657   1              if(TEMP_ERR)
 658   1              {
 659   2                      Temp_Value=0;
 660   2                      TIME[11]='E';
 661   2                      TIME[12]='R';
 662   2                      TIME[13]='R';
 663   2                      TIME[14]='0';
 664   2                      TIME[15]='R';
 665   2              }
 666   1              else
 667   1              {
 668   2                      TIME[13]=0xdf;
 669   2                      TIME[14]='C';
 670   2                      TIME[15]=' ';
 671   2              }
 672   1              LCD_Prints(DATE,0);
 673   1              LCD_Prints(TIME,0x40);
 674   1      }
 675          void main()
 676          {
 677   1              TMOD=0x01;
 678   1              TH0=0x3c;
 679   1              TL0=0xb0;
 680   1              EA=1;
 681   1              TR0=1;
 682   1              ET0=1;
 683   1              SCON=0;
 684   1              LCD_INITIALIZE();
 685   1              TEMP_INITIALIZE();
 686   1              LCD_DISP();
 687   1              while(1)
 688   1              {
 689   2                      switch(WORDNUM)
 690   2                      {
 691   3                              case WORDNUU+0:Disp_Str_LED_HZ(&HZ[WORDNUU],&NUM[2],&NUM[0]);break;
 692   3                              case WORDNUU+1:Disp_Str_LED4(&NUM[2],&NUM[0],&NUM[TIMETYPE.Year/10],&NUM[TIMETYPE.Year%10]);break;
 693   3                              case WORDNUU+2:Disp_Str_LED2(&NUM[TIMETYPE.Year/10],&NUM[TIMETYPE.Year%10],&DATETMP[0]);break;
 694   3                              case WORDNUU+3:Disp_Str_LED_HZ(&DATETMP[0],&NUM[TIMETYPE.Month/10],&NUM[TIMETYPE.Month%10]);break;
 695   3                              case WORDNUU+4:Disp_Str_LED2(&NUM[TIMETYPE.Month/10],&NUM[TIMETYPE.Month%10],&DATETMP[1]);break;
 696   3                              case WORDNUU+5:Disp_Str_LED_HZ(&DATETMP[1],&NUM[TIMETYPE.Day/10],&NUM[TIMETYPE.Day%10]);break;
 697   3                              case WORDNUU+6:Disp_Str_LED2(&NUM[TIMETYPE.Day/10],&NUM[TIMETYPE.Day%10],&DATETMP[2]);break;
 698   3                              case WORDNUU+7:Disp_LED1(&DATETMP[2],&DATETMP[5]);break;
 699   3                              case WORDNUU+8:Disp_LED1(&DATETMP[5],&DATETMP[6]);break;
 700   3                              case WORDNUU+9:Disp_LED1(&DATETMP[6],&WEEK[TIMETYPE.Week-1]);break;
 701   3                              case WORDNUU+10:Disp_Str_LED_HZ(&WEEK[TIMETYPE.Week-1],&NUM[TIMETYPE.Hour/10],&NUM[TIMETYPE.Hour%10]);b
             -reak;
 702   3                              case WORDNUU+11:Disp_Str_LED2(&NUM[TIMETYPE.Hour/10],&NUM[TIMETYPE.Hour%10],&DATETMP[3]);break;
 703   3                              case WORDNUU+12:Disp_Str_LED_HZ(&DATETMP[3],&NUM[TIMETYPE.Mine/10],&NUM[TIMETYPE.Mine%10]);break;
C51 COMPILER V7.50   LED                                                                   09/28/2008 21:00:12 PAGE 13  

 704   3                              case WORDNUU+13:Disp_Str_LED2(&NUM[TIMETYPE.Mine/10],&NUM[TIMETYPE.Mine%10],&DATETMP[4]);break;
 705   3                              case WORDNUU+14:Disp_LED1(&DATETMP[4],&DATETMP[7]);break;
 706   3                              case WORDNUU+15:Disp_LED1(&DATETMP[7],&DATETMP[8]);break;
 707   3                              case WORDNUU+16:Disp_Str_LED_HZ(&DATETMP[8],&NUM[Temp_Value/10],&NUM[Temp_Value%10]);break;
 708   3                              case WORDNUU+17:Disp_Str_LED2(&NUM[Temp_Value/10],&NUM[Temp_Value%10],&DATETMP[9]);break;
 709   3                              case WORDNUU+18:Disp_LED1(&DATETMP[9],&DATETMP[10]);break;
 710   3                              case WORDNUU+19:Disp_LED1(&DATETMP[10],&DATETMP[11]);break;
 711   3                              case WORDNUU+20:Disp_LED1(&DATETMP[11],&HZ[0]);break;
 712   3                              case WORDNUU+21:WORDNUM=0;WORDNUMBER=0;break;
 713   3                              default:Disp_LED(&HZ[WORDNUM]);
 714   3                      } 
 715   2                      if(WORDNUMBER==16)
 716   2                      {
 717   3                              TEMP_Read();
 718   3                              CurrentTime(&TIMETYPE);
 719   3                              LCD_Disp_Time();
 720   3                      }
 721   2              }
 722   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4041    ----
   CONSTANT SIZE    =   1486    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     50      84
   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 + -