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

📄 main.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -