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