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

📄 main.lst

📁 基于at89c52的乒乓球游戏系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /************************************** 
   2           * copyright:tiany
   3           * time:2008-9-20
   4          **************************************/
   5          
   6          #include <reg52.h>
   7          #include "lcd.h"
   8          #include "main.h"
   9          #include "speech.h"
  10          
  11          uchar button,buttonflag,menuflag,buttonplay,speed,moveflag,pauseflag;//send/*发球标志位*/;
  12          num_info gamenum={0,0,0,0};//比分信息结构体
  13          
  14          void main()
  15          {
  16   1        uchar wdata;
  17   1        speed=3;
  18   1        EA=1;
  19   1        EX1=1;//int1
  20   1        IT1=1;
  21   1        EX0=1;//int0
  22   1        IT0=1;
  23   1        LCD_Initial();
  24   1        LCD_CLR(R);
  25   1        put_picture_half(Bmp1,L);
  26   1        Delay_x10ms(100);LCD_CLR(L);
  27   1        put_picture_half(Bmp1,L);
  28   1        Delay_x10ms(100);LCD_CLR(L);
  29   1        put_picture_half(Bmp1,R);
  30   1        for(;;)
  31   1        {
  32   2            button=0;
  33   2            buttonflag=0;
  34   2            menuflag=0;
  35   2                buttonplay=0;
  36   2                pauseflag=0;
  37   2                LCD_CLR(L);LCD_CLR(R);
  38   2                put_picture_half(Bmp1,R);
  39   2                put_menu(1,0);
  40   2                put_menu(2,0);
  41   2                put_menu(3,0);
  42   2                wdata=0;
  43   2            gamenum.mark1=0,gamenum.mark2=0,gamenum.game1=0,gamenum.game2=0;
  44   2                while(!wdata)
  45   2                {
  46   3                 while(!buttonflag);
  47   3                 buttonflag=0;
  48   3                 switch(button)
  49   3                 {
  50   4                 case DOWN:
  51   4                    {            
  52   5                          put_menu(1,0);
  53   5                      put_menu(2,0);
  54   5                      put_menu(3,0);
  55   5                              if(menuflag==3) menuflag=1;
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 2   

  56   5                              else menuflag+=1;
  57   5                              put_menu(menuflag,1);
  58   5                              break;
  59   5                    }
  60   4                    
  61   4                 case UP:
  62   4                    {
  63   5                          put_menu(1,0);
  64   5                      put_menu(2,0);
  65   5                      put_menu(3,0);
  66   5                              if(menuflag<=1) menuflag=3;
  67   5                              else menuflag-=1;
  68   5                              put_menu(menuflag,1);
  69   5                              break;
  70   5                    }
  71   4                    
  72   4                 case ENTER:
  73   4                    { 
  74   5                switch(menuflag)
  75   5                {
  76   6                case 1://singlaplay
  77   6                               wdata=singlaplay();
  78   6                   break;
  79   6                case 2://doubleplay
  80   6                   wdata=doubleplay();
  81   6                  break;
  82   6                case 3://setingmenu
  83   6                    wdata=settingmenu();
  84   6                    break;
  85   6                default:break;
  86   6                }
  87   5                                 break;
  88   5                    }
  89   4                    
  90   4                 case EXIT:break;
  91   4                 default:break;
  92   4                 }
  93   3         }
  94   2        }
  95   1      }
  96          
  97          
  98          /////////////////////////////////////
  99          //设置难度选项
 100          /////////////////////////////////////
 101          uchar settingmenu()
 102          {
 103   1        LCD_CLR(L);
 104   1        put_menu(4,0);
 105   1        put_menu(5,0);
 106   1        put_menu(6,0);
 107   1        menuflag=0;
 108   1        while(1)
 109   1        {
 110   2          while(!buttonflag);
 111   2          buttonflag=0;
 112   2          switch(button)
 113   2          {
 114   3             case DOWN:
 115   3                {        
 116   4                put_menu(4,0);
 117   4                put_menu(5,0);
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 3   

 118   4                put_menu(6,0);
 119   4              if(menuflag==3) menuflag=1;
 120   4              else menuflag+=1;
 121   4              put_menu(menuflag+3,1);
 122   4              break;
 123   4                }
 124   3             case UP:
 125   3              {
 126   4                put_menu(4,0);
 127   4                put_menu(5,0);
 128   4                put_menu(6,0);
 129   4                if(menuflag<=1) menuflag=3;
 130   4                else menuflag-=1;
 131   4                put_menu(menuflag+3,1);
 132   4                break;
 133   4              }
 134   3             case ENTER:
 135   3                { 
 136   4                  switch(menuflag)
 137   4                  {
 138   5                   case 1:speed=1;break;
 139   5                   case 2:speed=4;break;
 140   5                   case 3:speed=7;break;
 141   5                   default:break;
 142   5                  }
 143   4                 return 1;
 144   4                }
 145   3             case EXIT:
 146   3                {
 147   4                 return 1;
 148   4                }
 149   3             default:break;
 150   3          }
 151   2        }
 152   1      }
 153          
 154          
 155          
 156          void int1() interrupt 2 using 3
 157          {
 158   1         P2=0xFF;
 159   1         buttonflag=1;
 160   1         button=P2&0xF0;
 161   1         moveflag=P2&0xF0;
 162   1         pauseflag=P2&0xF0;
 163   1      }
 164          
 165          
 166          void put_menu(uchar menuid,uchar reverse)
 167          {
 168   1        switch(menuid)
 169   1        {
 170   2        case 1://单人游戏
 171   2         {
 172   3           put_chinese(chinese[0],0,0,reverse);
 173   3               put_chinese(chinese[2],0,16,reverse);
 174   3               put_chinese(chinese[3],0,32,reverse);
 175   3               put_chinese(chinese[4],0,48,reverse);break;
 176   3         }
 177   2        case 2://双人游戏
 178   2           {
 179   3           put_chinese(chinese[1],2,0,reverse);
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 4   

 180   3               put_chinese(chinese[2],2,16,reverse);
 181   3               put_chinese(chinese[3],2,32,reverse);
 182   3               put_chinese(chinese[4],2,48,reverse);break;
 183   3         }
 184   2        case 3://游戏设置
 185   2           {
 186   3           put_chinese(chinese[3],4,0,reverse);
 187   3               put_chinese(chinese[4],4,16,reverse);
 188   3               put_chinese(chinese[5],4,32,reverse);
 189   3               put_chinese(chinese[6],4,48,reverse);break;
 190   3         }
 191   2        case 4://专家
 192   2           {
 193   3           put_chinese(chinese[7],0,16,reverse);
 194   3               put_chinese(chinese[8],0,32,reverse);break;
 195   3         }
 196   2        case 5://高手
 197   2           {
 198   3           put_chinese(chinese[9],2,16,reverse);
 199   3               put_chinese(chinese[10],2,32,reverse);break;
 200   3           }
 201   2        case 6://菜鸟
 202   2           {
 203   3           put_chinese(chinese[11],4,16,reverse);
 204   3               put_chinese(chinese[12],4,32,reverse);break;
 205   3         }
 206   2        default:
 207   2              break;
 208   2        }
 209   1      }
 210          //=============================================
 211          //斜线移动:向左下移动  
 212          //============================================= 
 213          uchar Ball_MoveLeftDown(uint speed)
 214          {
 215   1        uchar j,wdata;
 216   1        int i;
 217   1        for(i=8;i>0;i--)
 218   1        {
 219   2         wdata=0x03;
 220   2         for(j=1;j<8;j+=2)
 221   2          {
 222   3          if(j)
 223   3               {
 224   4            LCD_WriteData(0x00,8-i,64+i*8-j+2);//CLR
 225   4            LCD_WriteData(0x00,8-i,64+i*8-j+1);
 226   4              }
 227   3      
 228   3          LCD_WriteData(wdata,8-i,64+i*8-j);
 229   3          LCD_WriteData(wdata,8-i,64+i*8-j-1);
 230   3          wdata=wdata<<2;
 231   3          Delay_x10ms(speed*10);
 232   3              pause();
 233   3          }
 234   2          if(buttonplay)
 235   2           {
 236   3                      buttonplay=0;
 237   3                  if((button==0x02)&&(i<=1)) return 0; 
 238   3                  else if(button==0x02||button==0x01) return 1;
 239   3              }
 240   2         LCD_WriteData(0x00,8-i,64+i*8-j+2);
 241   2         LCD_WriteData(0x00,8-i,64+i*8-j+1);
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 5   

 242   2         
 243   2        }
 244   1        return 1;
 245   1      }
 246          //=============================================
 247          //斜线移动:向右上移动  
 248          //============================================= 
 249          uchar Ball_MoveRightUp(uint speed)
 250          {
 251   1        uchar i,j,wdata;
 252   1        for(i=0;i<8;i++)
 253   1        {
 254   2         wdata=0xc0;
 255   2         for(j=0;j<8;j+=2)
 256   2         {
 257   3          if(j)
 258   3              {
 259   4            LCD_WriteData(0x00,7-i,64+i*8+j-2);//CLR
 260   4            LCD_WriteData(0x00,7-i,64+i*8+j-1);
 261   4              }
 262   3      
 263   3          LCD_WriteData(wdata,7-i,64+i*8+j);
 264   3          LCD_WriteData(wdata,7-i,64+i*8+j+1);
 265   3          wdata=wdata>>2;
 266   3          Delay_x10ms(speed*10);
 267   3              if(i==7&&j>=4) j=10; 
 268   3              pause();
 269   3         }
 270   2         if(buttonplay)
 271   2           {
 272   3                      buttonplay=0;
 273   3                  if((button==0x08)&&(i>=7)) return 0; //p2.1
 274   3                  else if(button==0x08||button==0x04) return 2;
 275   3              }
 276   2         LCD_WriteData(0x00,7-i,64+i*8+j-2);
 277   2         LCD_WriteData(0x00,7-i,64+i*8+j-1);
 278   2         
 279   2        }
 280   1        return 2;
 281   1      }
 282          
 283          //=============================================
 284          //斜线移动:向左上移动  
 285          //============================================= 
 286          uchar Ball_MoveLeftUp(uint speed)
 287          {
 288   1        uchar j,wdata;
 289   1        int i;
 290   1        for(i=8;i>0;i--)//向左上移动
 291   1        {
 292   2         wdata=0xc0;
 293   2         for(j=1;j<8;j+=2)
 294   2         {
 295   3          if(j)
 296   3              {
 297   4            LCD_WriteData(0x00,i-1,64+i*8-j+2);//CLR
 298   4            LCD_WriteData(0x00,i-1,64+i*8-j+1);
 299   4              }
 300   3      
 301   3          LCD_WriteData(wdata,i-1,64+i*8-j);
 302   3          LCD_WriteData(wdata,i-1,64+i*8-j-1);
 303   3          wdata=wdata>>2;
C51 COMPILER V7.06   MAIN                                                                  10/03/2008 17:28:23 PAGE 6   

 304   3          Delay_x10ms(speed*10);
 305   3              pause();
 306   3         }
 307   2         if(buttonplay)
 308   2         {
 309   3                      buttonplay=0;
 310   3                  if((button==0x01)&&(i<=1)) return 0; //p2.2
 311   3                  else if(button==0x01||button==0x02) return 1;

⌨️ 快捷键说明

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