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

📄 main.lst

📁 单片机做的贪食蛇游戏
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  05/31/2008 16:27:49 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: F:\Keil_v801\新建文件夹\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //南阳理工学院
   2          //作者QQ:497259320
   3          //临近考试,写的很急,有一些BUG,希望大家指出改正并告诉我!谢!
   4          //此程序为了减小处理器的负担而使用占用大量数据存储器的方法。比如数组length[80]
   5          //绝对可以缩减为length[40],但在算法和存储上更复杂!
   6          //在硬件上实现功能得改一些地方!
   7          #include "12864.h"
   8          #include "zifu.h"
   9          uchar length[80]={0,8,1,8};
  10          bit flag2,flag=0;                        //0表示行,1表示列     flag1是步进标志 flag2表示是否蛇头遇到蛇身 1表示没有
  11          uchar direction=1; 
  12          bit flag3,flag1=0;
  13          uchar k,dengji=2;   //flag3是食物是否重选的标志。k是按键号
  14          uchar p=20;                     //定时次数                  
  15          void zhongduan() interrupt 0 using 0
  16            {
  17   1              k=(P2>>6);
  18   1              k=k&0x03;
  19   1              if(flag)
  20   1              {
  21   2                if(k==1)   direction=3;//左
  22   2                if(k==2)       direction=1;//右
  23   2              }
  24   1              else
  25   1              {
  26   2                if(k==0)       direction=4;//上
  27   2                if(k==3)       direction=2;//下
  28   2              }
  29   1        }
  30          void dingshi() interrupt 1  using 1  //定时程序.产生步进时间
  31          {
  32   1         if(p--)
  33   1         {
  34   2          TL0=0;
  35   2              TH0=0xa0;
  36   2              flag1=0;
  37   2         }
  38   1         else
  39   1         {
  40   2           flag1=1;
  41   2               TL0=0;
  42   2               TH0=0x00;
  43   2               p=20-(dengji>>1);
  44   2         }
  45   1       }
  46          main()
  47          {
  48   1        uchar food[2]={12,8};
  49   1        uchar i,x,y;
  50   1        choose12864(2);
  51   1        init12864();
  52   1        clear12864();
  53   1        for(i=0;i<3;i++)
  54   1        {
  55   2          play16(0,(2+(i<<1)),0,(xuexiao+(i<<5)));                //屏 列 页  地址
C51 COMPILER V8.01   MAIN                                                                  05/31/2008 16:27:49 PAGE 2   

  56   2              delay1ms(300);
  57   2        }                                                                                                        //显示“南阳理"
  58   1        for(i=0;i<3;i++)
  59   1        {
  60   2          play16(1,((i<<1)),0,xuexiao+((i+3)<<5));
  61   2              delay1ms(300);
  62   2        }                                                                                                        //显示“工学院"
  63   1        for(i=0;i<96;i++)
  64   1          {
  65   2                dot(16+i,15);
  66   2                delay1ms(2);
  67   2              }                                                                                                       //显示直线
  68   1        play16(0,4,1,sjz);
  69   1        play16(0,6,1,sjz+32);
  70   1        play16(1,0,1,sjz+64);                                                                 //显示设计者
  71   1        delay1ms(450);
  72   1        delay1ms(450);
  73   1        play16(0,4,2,ming);
  74   1        delay1ms(350);
  75   1        play16(0,6,2,ming+32);
  76   1        delay1ms(350);
  77   1        play16(1,0,2,ming+64);
  78   1        delay1ms(350);
  79   1        play16(1,2,2,ming+96);
  80   1        delay1ms(350);
  81   1        delay1ms(350);
  82   1        choose12864(2);
  83   1        clear12864();   
  84   1        //页面二
  85   1        vertical(1,61,30);
  86   1        vertical(1,61,127);
  87   1        for(i=0;i<98;i++)
  88   1        {
  89   2          dot(30+i,1);
  90   2              dot(30+i,62);
  91   2        }
  92   1        play16(0,0,0,tan);
  93   1        play16(0,0,1,chi);
  94   1        play16(0,0,2,she);
  95   1        change(length,(length+1));
  96   1        change((length+2),(length+3));
  97   1        change(food,food+1);
  98   1        TMOD=1;         //定时器工作方式
  99   1        IT0=1;          //边延有效
 100   1        EA=1;           //开CPU中断
 101   1        ET0=1;         //开定时器中断
 102   1        EX0=1;          //开外部中断
 103   1        TL0=0x00;
 104   1        TH0=0x00;       //定时器初值
 105   1        TR0=1;          //启动定时器
 106   1        do
 107   1        {
 108   2         while(!flag1);
 109   2         x=*(length);                               
 110   2         y=*(length+1);
 111   2         switch(direction)                       //东 
 112   2              {
 113   3                case 1:
 114   3                  {
 115   4                    for(i=0;i<dengji-1;i++)
 116   4                     {
 117   5                       *(length+(i<<1))=*(length+(i<<1)+2);
C51 COMPILER V8.01   MAIN                                                                  05/31/2008 16:27:49 PAGE 3   

 118   5                           *(length+(i<<1)+1)=*(length+(i<<1)+3);
 119   5                     }
 120   4                     (*(length+(dengji<<1)-2))++;
 121   4                         flag=0;
 122   4                         break;
 123   4                    }
 124   3                      case 2:                                   //南
 125   3                       {
 126   4                    for(i=0;i<dengji-1;i++)
 127   4                     {
 128   5                       *(length+(i<<1))=*(length+(i<<1)+2);
 129   5                           *(length+(i<<1)+1)=*(length+(i<<1)+3);
 130   5                     }
 131   4                          (*(length+(dengji<<1)-1))++;
 132   4                              flag=1;
 133   4                              break;
 134   4                        }
 135   3                      case 3:                                 //西
 136   3                       {
 137   4                     for(i=0;i<dengji-1;i++)
 138   4                     {
 139   5                       *(length+(i<<1))=*(length+(i<<1)+2);
 140   5                           *(length+(i<<1)+1)=*(length+(i<<1)+3);
 141   5                     }
 142   4                     (*(length+(dengji<<1)-2))--;
 143   4                         flag=0;
 144   4                         break;
 145   4                       }
 146   3                      case 4:
 147   3                       {                      //北
 148   4                       for(i=0;i<dengji-1;i++)
 149   4                     {
 150   5                       *(length+(i<<1))=*(length+(i<<1)+2);
 151   5                           *(length+(i<<1)+1)=*(length+(i<<1)+3);
 152   5                     }
 153   4                          (*(length+(dengji<<1)-1))--;
 154   4                              flag=1;
 155   4                              break;
 156   4                       }
 157   3               }
 158   2               if(((*(length+(dengji<<1)-2))==food[0])&&((*(length+(dengji<<1)-1))==food[1]))
 159   2               {
 160   3                      for(i=dengji;i>0;i--)
 161   3                      {
 162   4                        *(length+(i<<1))=*(length+(i<<1)-2);
 163   4                        *(length+(i<<1)+1)=*(length+(i<<1)-1);
 164   4                      }
 165   3                      *length=x;
 166   3                      *(length+1)=y;
 167   3                      dengji++;
 168   3                      do
 169   3                      {
 170   4                        flag3=0;
 171   4                        food[0]=TL0%24;
 172   4                    food[1]=TL0%15;
 173   4                        for(i=0;i<dengji-1;i++)
 174   4                        {
 175   5                          if((*(length+(i<<1)))==food[0]&&((*(length+(i<<1)+1))==food[1]))
 176   5                              {
 177   6                                flag3=1;
 178   6                                break;
 179   6                               }
C51 COMPILER V8.01   MAIN                                                                  05/31/2008 16:27:49 PAGE 4   

 180   5                        }
 181   4                      }while(flag3);
 182   3                      change(food,food+1); 
 183   3               }
 184   2           flag2=1;
 185   2               for(i=0;i<dengji-1;i++)
 186   2              {
 187   3                         if(*(length+(i<<1))==*(length+(dengji<<1)-2)&&(*(length+(i<<1)+1)==*(length+(dengji<<1)-1)))
 188   3                         {
 189   4                           flag2=0;
 190   4                               break;
 191   4                              }
 192   3                      }
 193   2                flag2=flag2&&*(length+(dengji<<1)-2)>=0&&*(length+(dengji<<1)-2)<24;
 194   2                flag2=flag2&&*(length+(dengji<<1)-1)>=0&&*(length+(dengji<<1)-1)<15;
 195   2                if(flag2)
 196   2                 {
 197   3                  clear(&x,&y); 
 198   3                  for(i=0;i<dengji;i++)
 199   3                   {
 200   4                     change(length+(i<<1),length+(i<<1)+1);
 201   4                   }
 202   3                  flag1=0;
 203   3                  play8(0,0,3,shu0+((dengji/10)<<4));
 204   3                  play8(0,1,3,shu0+(((dengji)%10)<<4));
 205   3                 }
 206   2         }
 207   1         while(flag2);
 208   1         delay1ms(450);
 209   1         delay1ms(450);
 210   1         choose12864(2);
 211   1         clear12864();
 212   1         play16(0,4,1,over);
 213   1         play16(0,6,1,over+32);
 214   1         play16(1,0,1,over+64);
 215   1         play16(1,2,1,over+96);
 216   1         while(1); 
 217   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2333    ----
   CONSTANT SIZE    =    802    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     84      31
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -