📄 12864 万年历.lst
字号:
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 + -