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

📄 main.lst

📁 单片机乒乓球游戏机 可以再proteus仿真
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 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          
  10          
  11          uchar button,buttonflag,menuflag,buttonplay,speed;//send/*发球标志位*/;
  12          num_info gamenum={0,0,0,0};//比分信息结构体
  13          //press_button play_button;
  14          
  15          
  16          void main()
  17          {
  18   1      //  int i,j;
  19   1        uchar wdata;
  20   1        
  21   1        speed=1;
  22   1        EA=1;
  23   1        EX1=1;//int1
  24   1        IT1=1;
  25   1        EX0=1;//int0
  26   1        IT0=1;
  27   1        LCD_Initial();
  28   1        LCD_CLR(R);
  29   1        put_picture_half(Bmp1,L);
  30   1        Delay_x10ms(100);LCD_CLR(L);
  31   1        put_picture_half(Bmp1,L);
  32   1        Delay_x10ms(100);LCD_CLR(L);
  33   1        put_picture_half(Bmp1,R);
  34   1        for(;;)
  35   1        {
  36   2            button=0;
  37   2            buttonflag=0;
  38   2            menuflag=0;
  39   2                buttonplay=0;
  40   2                LCD_CLR(L);
  41   2                put_menu(1,0);
  42   2                put_menu(2,0);
  43   2                put_menu(3,0);
  44   2                wdata=0;
  45   2            gamenum.mark1=0,gamenum.mark2=0,gamenum.game1=0,gamenum.game2=0;
  46   2                while(!wdata)
  47   2                {
  48   3                 while(!buttonflag);
  49   3                 buttonflag=0;
  50   3                 switch(button)
  51   3                 {
  52   4                 case DOWN:
  53   4                    {            
  54   5                          put_menu(1,0);
  55   5                      put_menu(2,0);
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 2   

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

 118   4                put_menu(4,0);
 119   4                put_menu(5,0);
 120   4                put_menu(6,0);
 121   4              if(menuflag==3) menuflag=1;
 122   4              else menuflag+=1;
 123   4              put_menu(menuflag+3,1);
 124   4              break;
 125   4                }
 126   3             case UP:
 127   3              {
 128   4                put_menu(4,0);
 129   4                put_menu(5,0);
 130   4                put_menu(6,0);
 131   4                if(menuflag<=1) menuflag=3;
 132   4                else menuflag-=1;
 133   4                put_menu(menuflag+3,1);
 134   4                break;
 135   4              }
 136   3             case ENTER:
 137   3                { 
 138   4                  switch(menuflag)
 139   4                  {
 140   5                   case 1:speed=1;break;
 141   5                   case 2:speed=4;break;
 142   5                   case 3:speed=7;break;
 143   5                   default:break;
 144   5                  }
 145   4                 return 1;
 146   4                }
 147   3             case EXIT:
 148   3                {
 149   4                 return 1;
 150   4                }
 151   3             default:break;
 152   3          }
 153   2        }
 154   1      }
 155          
 156          
 157          
 158          void int1() interrupt 2 using 3
 159          {
 160   1         P2=0xFF;
 161   1         buttonflag=1;
 162   1         button=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                                                                  09/23/2008 04:07:57 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          }
 233   2          if(buttonplay)
 234   2           {
 235   3                      buttonplay=0;
 236   3                  if((button==0x08)&&(i<=1)) return 0; //p2.3
 237   3                  else if(button==0x08||button==0x04) return 1;
 238   3              }
 239   2         LCD_WriteData(0x00,8-i,64+i*8-j+2);
 240   2         LCD_WriteData(0x00,8-i,64+i*8-j+1);
 241   2         
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 5   

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

⌨️ 快捷键说明

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