📄 main.lst
字号:
613 5 setjian(ds1302_year);k=0;break;
614 5 }
615 4 case 2:
616 4 {
617 5 setjian(ds1302_month);k=0;break;
618 5 }
619 4 case 3:
620 4 {
621 5 setjian(ds1302_day);k=0;break;
622 5 }
623 4 case 4:
624 4 {
625 5 setjian(ds1302_hour);k=0;break;
626 5 }
627 4 case 5:
628 4 {
629 5 setjian(ds1302_minute);k=0;break;
630 5 }
631 4 case 6:
632 4 {
633 5 setjian(ds1302_week);k=0;break;
634 5 }
635 4 }
636 3 }
637 2 } while(!flag5);
638 1 }
639 /*贪吃蛇子程序*/
640 void tanchishe(void)
641 {
642 1 uchar xdata length[102]={0,8,1,8}; //存放蛇身的数组;
643 1 uchar food[2]={12,8};
644 1 uchar i,x,y;
645 1 bit flag2,flag3,flag4;
646 1 TMOD=1; //定时器工作方式
647 1 IT0=1; //边延有效
648 1 IT1=1;
649 1 EA=1; //开CPU中断
650 1 ET0=1; //开定时器中断
651 1 EX0=1; //开外部中断
652 1 EX1=1;
653 1 TL0=0x00;
654 1 TH0=0x00; //定时器初值
655 1 TR0=1; //启动定时器
656 1
657 1 dengji=2;
658 1 p=20;
659 1 direction=1;
660 1 flag5=0;
661 1
662 1 choose12864(2);
663 1 clear12864();
664 1 vertical(1,61,30);
C51 COMPILER V8.02 MAIN 05/24/2012 19:52:39 PAGE 12
665 1 vertical(1,61,127);
666 1 for(i=0;i<98;i++)
667 1 {
668 2 dot(30+i,1);
669 2 dot(30+i,62);
670 2 }
671 1 play16(0,0,0,tan);
672 1 play16(0,0,1,chi);
673 1 play16(0,0,2,she);
674 1 change(length,(length+1));
675 1 change((length+2),(length+3));
676 1 change(food,food+1);
677 1 for(;;)
678 1 {
679 2 do
680 2 {
681 3 first=1;
682 3 while(flag5|!flag1);
683 3 x=*(length);
684 3 y=*(length+1);
685 3 switch(direction) //右
686 3 {
687 4 case 1:
688 4 {
689 5 for(i=0;i<dengji-1;i++)
690 5 {
691 6 *(length+(i<<1))=*(length+(i<<1)+2);
692 6 *(length+(i<<1)+1)=*(length+(i<<1)+3);
693 6 }
694 5 (*(length+(dengji<<1)-2))++;
695 5 flag=0;
696 5 break;
697 5 }
698 4 case 2: //下
699 4 {
700 5 for(i=0;i<dengji-1;i++)
701 5 {
702 6 *(length+(i<<1))=*(length+(i<<1)+2);
703 6 *(length+(i<<1)+1)=*(length+(i<<1)+3);
704 6 }
705 5 (*(length+(dengji<<1)-1))++;
706 5 flag=1;
707 5 break;
708 5 }
709 4 case 3: //左
710 4 {
711 5 for(i=0;i<dengji-1;i++)
712 5 {
713 6 *(length+(i<<1))=*(length+(i<<1)+2);
714 6 *(length+(i<<1)+1)=*(length+(i<<1)+3);
715 6 }
716 5 (*(length+(dengji<<1)-2))--;
717 5 flag=0;
718 5 break;
719 5 }
720 4 case 4:
721 4 { //上
722 5 for(i=0;i<dengji-1;i++)
723 5 {
724 6 *(length+(i<<1))=*(length+(i<<1)+2);
725 6 *(length+(i<<1)+1)=*(length+(i<<1)+3);
726 6 }
C51 COMPILER V8.02 MAIN 05/24/2012 19:52:39 PAGE 13
727 5 (*(length+(dengji<<1)-1))--;
728 5 flag=1;
729 5 break;
730 5 }
731 4 }
732 3 flag4=((*(length+(dengji<<1)-2))==food[0])&&((*(length+(dengji<<1)-1))==food[1]);
733 3 if(flag4) //
734 3 {
735 4 for(i=dengji;i>0;i--)
736 4 {
737 5 *(length+(i<<1))=*(length+(i<<1)-2);
738 5 *(length+(i<<1)+1)=*(length+(i<<1)-1);
739 5 }
740 4 *length=x;
741 4 *(length+1)=y;
742 4 dengji++;
743 4 do
744 4 {
745 5 flag3=0;
746 5 food[0]=TL0%24;
747 5 food[1]=TL0%15;
748 5 for(i=0;i<dengji-1;i++) //食物是否在蛇身身上
749 5 {
750 6 if((*(length+(i<<1)))==food[0]&&((*(length+(i<<1)+1))==food[1]))
751 6 {
752 7 flag3=1;
753 7 break;
754 7 }
755 6 }
756 5 }while(flag3);
757 4 change(food,food+1);
758 4 }
759 3 flag2=1; //蛇头没有遇到蛇身
760 3 for(i=0;i<dengji-1;i++)
761 3 {
762 4 if(*(length+(i<<1))==*(length+(dengji<<1)-2)&&(*(length+(i<<1)+1)==*(length+(dengji<<1)-1)))
763 4 {
764 5 flag2=0;
765 5 break;
766 5 }
767 4 }
768 3 flag2=flag2&&*(length+(dengji<<1)-2)>=0&&*(length+(dengji<<1)-2)<24;//蛇头是否出边界
769 3 flag2=flag2&&*(length+(dengji<<1)-1)>=0&&*(length+(dengji<<1)-1)<15;
770 3 if(flag2)
771 3 {
772 4 clear(&x,&y);
773 4
774 4
775 4 {
776 5 change(length+(dengji<<1)-2,length+(dengji<<1)-1);
777 5 }
778 4 if(flag4)
779 4 {
780 5 change(&x,&y);
781 5 }
782 4 flag1=0;
783 4 play8(0,0,3,shu0+((dengji/10)<<4));
784 4 play8(0,1,3,shu0+(((dengji)%10)<<4));
785 4 }
786 3 }
787 2 while(flag2);
788 2 delay1ms(450);
C51 COMPILER V8.02 MAIN 05/24/2012 19:52:39 PAGE 14
789 2 delay1ms(450);
790 2 choose12864(2);
791 2 clear12864();
792 2 play16(0,4,1,over);
793 2 play16(0,6,1,over+32);
794 2 play16(1,0,1,over+64);
795 2 play16(1,2,1,over+96);
796 2 delay1ms(450);
797 2 delay1ms(450);
798 2 break;
799 2 }
800 1 }
801 //////////////////////////////
802 main(void)
803 {
804 1 uchar i;
805 1 uchar count=0;
806 1 P2=0xff;
807 1 EA=1; //开CPU中断
808 1 //ET0=1; //开定时器中断
809 1 EX0=1; //开外部中断
810 1 EX1=1;
811 1 choose12864(2);
812 1 init12864();
813 1 clear12864();
814 1 ////////////////////
815 1 play16(0,4,0,tan);
816 1 play16(0,6,0,chi);
817 1 play16(1,0,0,she);
818 1 ///////////////////
819 1 play16(0,4,1,els);
820 1 play16(0,6,1,els+32);
821 1 for(i=0;i<3;i++)
822 1 {
823 2 play16(1,i<<1,1,(els+64+(i<<5)));
824 2 }
825 1 //////////////////
826 1
827 1 play16(0,4,2,wnl);
828 1 play16(0,6,2,wnl+32);
829 1 play16(1,0,2,wnl+64);
830 1
831 1 //////////////////
832 1 for(;;)
833 1 {
834 2 if((k==0x03)&&((P3&0x04)==0x04))
835 2 {
836 3 count++;
837 3 k=0;
838 3 if(count==4)
839 3 count=1;
840 3 switch(count)
841 3 {
842 4 case 1:
843 4 {
844 5 play16(0,4,2,wnl);
845 5 play16(0,6,2,wnl+32);
846 5 play16(1,0,2,wnl+64);
847 5 play16_fb(0,4,0);
848 5 play16_fb(0,6,0);
849 5 play16_fb(1,0,0);
850 5 };break;
C51 COMPILER V8.02 MAIN 05/24/2012 19:52:39 PAGE 15
851 4 case 2: {
852 5 play16(0,4,0,tan);
853 5 play16(0,6,0,chi);
854 5 play16(1,0,0,she);
855 5 play16_fb(0,4,1);
856 5 play16_fb(0,6,1);
857 5 for(i=0;i<3;i++)
858 5 {
859 6 play16_fb(1,i<<1,1);
860 6 }
861 5 };break;
862 4 case 3:
863 4 {
864 5
865 5 play16(0,4,1,els);
866 5 play16(0,6,1,els+32);
867 5 for(i=0;i<3;i++)
868 5 {
869 6 play16(1,i<<1,1,(els+64+(i<<5)));
870 6 }
871 5 play16_fb(0,4,2);
872 5 play16_fb(0,6,2);
873 5 play16_fb(1,0,2);
874 5 };break;
875 4 default:break;
876 4 }
877 3 }
878 2 if(P3&0x04)
879 2 first=1;
880 2 if(flag5)
881 2 {
882 3 switch(count)
883 3 {
884 4 case 1:flag5=0;tanchishe();count=0;flag5=0;k=0;break;
885 4 case 2:flag5=0;fangkuai();count=0;flag5=0; k=0;break;
886 4 case 3:flag5=0;wannianli();count=0;flag5=0;k=0;break;
887 4 default:count=0;k=3;flag5=0;break;
888 4 }
889 3 choose12864(2);
890 3 init12864();
891 3 clear12864();
892 3 ////////////////////
893 3 play16(0,4,0,tan);
894 3 play16(0,6,0,chi);
895 3 play16(1,0,0,she);
896 3 ///////////////////
897 3 play16(0,4,1,els);
898 3 play16(0,6,1,els+32);
899 3 for(i=0;i<3;i++)
900 3 {
901 4 play16(1,i<<1,1,(els+64+(i<<5)));
902 4 }
903 3 //////////////////
904 3
905 3 play16(0,4,2,wnl);
906 3 play16(0,6,2,wnl+32);
907 3 play16(1,0,2,wnl+64);
908 3 //////////////////
909 3 }
910 2 }
911 1
912 1 }
C51 COMPILER V8.02 MAIN 05/24/2012 19:52:39 PAGE 16
*** WARNING C316 IN LINE 912 OF main.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 8463 ----
CONSTANT SIZE = 1608 ----
XDATA SIZE = ---- 134
PDATA SIZE = ---- ----
DATA SIZE = 31 82
IDATA SIZE = ---- ----
BIT SIZE = 4 11
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -