📄 led.lst
字号:
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 + -