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

📄 main.lst

📁 单片机乒乓球游戏机 可以再proteus仿真
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 6   

 304   2         if(buttonplay)
 305   2         {
 306   3                      buttonplay=0;
 307   3                  if((button==0x04)&&(i<=1)) return 0; //p2.2
 308   3                  else if(button==0x04||button==0x08) return 1;
 309   3         }
 310   2         LCD_WriteData(0x00,i-1,64+i*8-j+2);
 311   2         LCD_WriteData(0x00,i-1,64+i*8-j+1);
 312   2      
 313   2       }
 314   1       return 1;
 315   1      }
 316          
 317          //=============================================
 318          //斜线移动:向右下移动  
 319          //============================================= 
 320          uchar Ball_MoveRightDown(uint speed)
 321          {
 322   1        uchar i,j,wdata;
 323   1        for(i=0;i<8;i++)//向右下移动
 324   1        {
 325   2         wdata=0x03;
 326   2         for(j=0;j<8;j+=2)
 327   2         {
 328   3          if(j)
 329   3                {
 330   4            LCD_WriteData(0x00,i,64+i*8+j-2);//CLR
 331   4            LCD_WriteData(0x00,i,64+i*8+j-1);
 332   4                }
 333   3          LCD_WriteData(wdata,i,64+i*8+j);
 334   3          LCD_WriteData(wdata,i,64+i*8+j+1);
 335   3          wdata=wdata<<2;
 336   3          Delay_x10ms(speed*10);
 337   3              if(i==7&&j>=4) j=10;
 338   3         }
 339   2         if(buttonplay)
 340   2           {
 341   3                      buttonplay=0;
 342   3                  if((button==0x01)&&(i>=7)) return 0; //p2.0
 343   3                  else if(button==0x01||button==0x02) return 2;
 344   3              }
 345   2         LCD_WriteData(0x00,i,64+i*8+j-2);
 346   2         LCD_WriteData(0x00,i,64+i*8+j-1);
 347   2        }
 348   1        return 2;
 349   1      }
 350          
 351          //=============================================
 352          //水平移动 
 353          //0:-->
 354          //1:<--
 355          //============================================= 
 356          uchar Ball_MoveP(uchar Data,uchar direction,uchar hang,uint speed)
 357          { 
 358   1        int i;
 359   1        if(direction)
 360   1          {
 361   2                for(i=0;i<62;i++)//-->
 362   2                { 
 363   3                  if(i){
 364   4                        LCD_WriteData(0,hang,64+i-2);LCD_WriteData(0,hang,64+i-1);}
 365   3             if(buttonplay)
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 7   

 366   3                {
 367   4                            buttonplay=0;
 368   4                            if((button==0x02)&&(i>=51)) return 0; //p2.1
 369   4                                else if(button==0x02) return 2;
 370   4                        }
 371   3                  LCD_WriteData(Data,hang,64+i);LCD_WriteData(Data,hang,64+i+1);
 372   3                  Delay_x10ms(speed*10);
 373   3                      i++;
 374   3                }
 375   2                LCD_WriteData(0,hang,64+i-2);LCD_WriteData(0,hang,64+i-1);
 376   2                return 2;
 377   2          }
 378   1        else
 379   1          {
 380   2                for(i=62;i>0;i--)//<--
 381   2                { 
 382   3                  if(i!=62){
 383   4                        LCD_WriteData(0,hang,64+i+2);LCD_WriteData(0,hang,64+i+1);}
 384   3                      if(buttonplay)
 385   3                {
 386   4                            buttonplay=0;
 387   4                            if((button==0x04)&(i<=10))  return 0;
 388   4                                else if(button==0x04)      return 1;
 389   4                        }
 390   3                  LCD_WriteData(Data,hang,64+i);LCD_WriteData(Data,hang,64+i-1);
 391   3                  Delay_x10ms(speed*10);
 392   3                      i--;
 393   3                }
 394   2                LCD_WriteData(0,hang,64+i+2);LCD_WriteData(0,hang,64+i+1);  
 395   2                return 1;
 396   2          }
 397   1      }
 398          
 399          void Delay_x10ms(uchar DelayTime)   //*******ms延时*****//
 400          {
 401   1             unsigned char i,j,k;
 402   1             for(i=0;i<DelayTime;i++){
 403   2                if(buttonplay) break;
 404   2                for(j=0;j<10;j++){
 405   3                   if(buttonplay) break;
 406   3                   for(k=0;k<45;k++) {if(buttonplay) break;}
 407   3             }  }
 408   1      }
 409          
 410          /*******************************
 411          双人游戏
 412          ********************************/
 413          uchar doubleplay()
 414          {
 415   1         uchar i,flag,sendball=0;
 416   1         uchar a[3]={0,0,0},b[3]={0,0,0};
 417   1         LCD_CLR(L);LCD_CLR(R);
 418   1         //画边框
 419   1         for(i=0;i<8;i++){//球与信息分割线
 420   2            LCD_WriteData(0xFF,i,63);}
 421   1         for(i=1;i<7;i++){
 422   2            LCD_WriteData(0xFF,i,127);}//右边线
 423   1         put_chinese(chinese[20],0,4,0);//甲
 424   1         put_chinese(chinese[21],2,4,0);//乙
 425   1         for(;;)
 426   1        {
 427   2          LCD_CLR(R);
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 8   

 428   2              LCD_WriteData(0xFF,0,127);
 429   2              LCD_WriteData(0xFF,7,127);
 430   2              for(i=0;i<8;i++){//球与信息分割线
 431   3            LCD_WriteData(0xFF,i,63);}
 432   2          for(i=0;i<8;i++){
 433   3            LCD_WriteData(0xFF,i,127);}//右边线
 434   2          infodisplay();
*** WARNING C209 IN LINE 434 OF MAIN.C: 'infodisplay': too few actual parameters
 435   2          double_modle_1(sendball);
 436   2              sendball++;
 437   2              if(sendball>=4) sendball=0;
 438   2          infodisplay();
*** WARNING C209 IN LINE 438 OF MAIN.C: 'infodisplay': too few actual parameters
 439   2              //比分局分控制
 440   2          if((gamenum.mark1>=11)&&((gamenum.mark1-gamenum.mark2)>=2))
 441   2                  {
 442   3                       a[gamenum.game1]=gamenum.mark1;
 443   3                       b[gamenum.game1]=gamenum.mark2;
 444   3                       gamenum.game1++;
 445   3                       gamenum.mark1=0;
 446   3                       gamenum.mark2=0;
 447   3                       put_chinese(chinese[20],0,64,1);
 448   3               put_chinese(chinese[13],0,80,1);
 449   3                       enter();LCD_CLR(R);
 450   3                       }
 451   2                else if((gamenum.mark2>=11)&&((gamenum.mark2-gamenum.mark1)>=2))
 452   2                  {
 453   3                       a[gamenum.game1]=gamenum.mark1;
 454   3                       b[gamenum.game1]=gamenum.mark2;
 455   3                       gamenum.game2++;
 456   3                       gamenum.mark1=0;
 457   3                       gamenum.mark2=0;
 458   3                       put_chinese(chinese[21],0,64,1);
 459   3               put_chinese(chinese[13],0,80,1);
 460   3                       enter();LCD_CLR(R);
 461   3                  }    
 462   2         if(gamenum.game2>=2) {flag=1;break;}
 463   2         else if(gamenum.game1>=2) {flag=0;break;}
 464   2         }
 465   1         infoflash(a,b,flag);
 466   1         Delay_x10ms(1000);
 467   1         return 1;
 468   1       }
 469          
 470          uchar Read_P2()
 471          {
 472   1        P2=0xFF;
 473   1        return(P2&0x0F);
 474   1      }
 475          void infoflash(uchar* a,uchar* b,uchar flag)
 476          {
 477   1         uchar i;
 478   1         put_picture_half(Bmp1,R);
 479   1         LCD_CLR(L);
 480   1         put_chinese(chinese[20],4,0,0);//甲
 481   1         put_chinese(chinese[21],6,0,0);//乙
 482   1         if(flag)  put_chinese(chinese[21],0,8,1);
 483   1         else put_chinese(chinese[20],0,8,1);
 484   1         put_chinese(chinese[13],0,24,1);put_chinese(chinese[14],0,40,1);//shengli
 485   1         put_num(num10[1],2,20,1);
 486   1         put_num(num10[2],2,36,1);
 487   1         put_num(num10[3],2,52,1);
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 9   

 488   1         for(i=0;i<3;i++){
 489   2                      if(a[i]>9)
 490   2                        put_num(num10[1],4,16+i*16,0);//甲
 491   2                      else put_num(num10[0],4,16+i*16,0);
 492   2                      if(a[i]>9)
 493   2                        put_num(num10[a[i]-10],4,16+i*16+8,0);
 494   2                      else put_num(num10[a[i]],4,16+i*16+8,0);
 495   2                      if(b[i]>9)
 496   2                        put_num(num10[1],6,16+i*16,0);//乙
 497   2                      else put_num(num10[0],6,16+i*16,0);
 498   2                      if(b[i]>9)
 499   2                        put_num(num10[b[i]-10],6,16+i*16+8,0);
 500   2                      else put_num(num10[b[i]],6,16+i*16+8,0);}
 501   1         enter();
 502   1      }
 503          void double_modle_1(uchar send_id)
 504          {
 505   1          uchar state=0;
 506   1              bit moveflag;
 507   1          uchar direction;
 508   1              put_chinese(chinese[17],4,24,0);//发球
 509   1              put_chinese(chinese[16],4,40,0);
 510   1              P3=0xFF;
 511   1              switch(send_id)
 512   1              {
 513   2               case 0://甲1发球
 514   2                     moveflag=P3^4;
 515   2                         if(moveflag) direction=2;
 516   2                         else direction=0;
 517   2                 put_num(num10[10],0,53,0);//甲
 518   2                         put_num(num10[11],2,53,0);
 519   2                         put_chinese(chinese[20],4,0,0);
 520   2                 put_num(num10[1],4,16,0);
 521   2                         do
 522   2                         {
 523   3                              button=Read_P2();
 524   3                         }while(!(button==0x04));
 525   2                     break;
 526   2               case 1://甲2发球
 527   2                     moveflag=P3^4;
 528   2                         if(moveflag) direction=5;
 529   2                         else direction=6;
 530   2                 put_num(num10[10],0,53,0);//甲
 531   2                         put_num(num10[11],2,53,0);
 532   2                         put_chinese(chinese[20],4,0,0);
 533   2                         put_num(num10[2],4,16,0);
 534   2                         do
 535   2                         {
 536   3                               button=Read_P2();
 537   3                         }while(!(button==0x08));
 538   2                         break;
 539   2               case 2://乙1发球
 540   2                     moveflag=P3^7;
 541   2                         if(moveflag) direction=4;
 542   2                         else direction=1;
 543   2                 put_num(num10[10],2,53,0);//乙
 544   2                         put_num(num10[11],0,53,0);
 545   2                         put_chinese(chinese[21],4,0,0);
 546   2                         put_num(num10[1],4,16,0);
 547   2                         do
 548   2                         {
 549   3                               button=Read_P2();
C51 COMPILER V7.06   MAIN                                                                  09/23/2008 04:07:57 PAGE 10  

 550   3                         }while(!(button==0x02));
 551   2                         break;
 552   2               case 3://乙2发球
 553   2                     moveflag=P3^7;
 554   2                         if(moveflag) direction=3;
 555   2                         else direction=7;
 556   2                 put_num(num10[10],2,53,0);//乙
 557   2                         put_num(num10[11],0,53,0);
 558   2                         put_chinese(chinese[21],4,0,0);
 559   2                         put_num(num10[2],4,16,0);
 560   2                         do
 561   2                         {
 562   3                               button=Read_P2();
 563   3                         }while(!(button==0x01));
 564   2                         break;
 565   2              }
 566   1          while(!state)
 567   1              {
 568   2                  
 569   2                  switch(direction)
 570   2                      {
 571   3                    case 0:
 572   3                               state=Ball_MoveP(0x03,1,0,speed);
 573   3                                       P3=0xFF;
 574   3                       moveflag=P3^7;
 575   3                                       switch(state)
 576   3                                       {
 577   4                                              case 0:
 578   4                                                if(moveflag) direction=4;
 579   4                                                else direction=1;
 580   4                                                break;
 581   4                                              //case 1://甲犯规,乙得分  
 582   4                                              //      gamenum.mark2++;
 583   4                                  //   put_chinese(chinese[20],6,10,1);
 584   4                                              //      break;
 585   4                                              case 2://乙犯规,甲得分 
 586   4                                                      gamenum.mark1++;
 587   4                                                      put_chinese(chinese[21],6,10,1);//yi
 588   4                                                      break;
 589   4                                       } 
 590   3                                       break;
 591   3                    case 1:
 592   3                               state=Ball_MoveP(0x03,0,0,speed);
 593   3                                       P3=0xFF;
 594   3                       moveflag=P3^7;
 595   3                                       switch(state)
 596   3                                       {
 597   4                                              case 0:
 598   4                                                if(moveflag) direction=2;
 599   4                                                else direction=0;
 600   4                                                break;
 601   4                                              case 1://甲犯规,乙得分  
 602   4                                                      gamenum.mark2++;
 603   4                                      put_chinese(chinese[20],6,10,1);//jia
 604   4                                                      break;
 605   4                                              //case 2://乙犯规,甲得分 
 606   4                                              //      gamenum.mark1++;
 607   4                                              //      put_chinese(chinese[21],6,10,1);
 608   4                                              //      break;
 609   4                                       }
 610   3                                       break;
 611   3                        case 2:

⌨️ 快捷键说明

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