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

📄 keil00.lst

📁 提供包括硬件、软件在内的高效、低成本的完整嵌入式开发平台及解决方案。典型产品为以386EX CPU为核心的嵌入式网络模块系列
💻 LST
📖 第 1 页 / 共 4 页
字号:
 259   1              if(Command)
 260   1              {
 261   2                      TX[2]='M';
 262   2                      switch(Command)
 263   2              {
 264   3                              case 0x22: State=4;TX[4]=0x22;TX[5]=0x14;Transmit();ErrorNO=0;break;   /*B仓返回完成*/
 265   3                      case 0x25: State=7;ErrorNO=0x25;break;   /*B仓返回卡牌*/
 266   3                      default:   State=6;ErrorNO=0x2a;break;   /*B仓通讯错误*/
 267   3              }
 268   2              }
 269   1              OUTremnantexit:
 270   1                      Command=0;
 271   1      }
 272          /***********************************
 273          *-------清牌程序--------------*
 274          ***********************************/
 275          void   ClrCard(void)
 276          {
 277   1              unsigned  char x1,Bbox;
 278   1              bit  CaPaibit,Box1ok,Box2ok,Bclrbit;
 279   1      
 280   1              switch(azimuth)
 281   1              {
 282   2                      case 0x7f:   Bbox=0x42; break;    /*当前接牌盒位置判断*/
 283   2                      case 0xef:   Bbox=0x42; break;    /*Place--位置变量*/
 284   2                      case 0xbf:   Bbox=0x43; break;    //
 285   2                      case 0xdf:   Bbox=0x43; break;    //
 286   2                      default:     break;
 287   2              }
 288   1              A3986_EN=0;
 289   1              OPTOV=0;      /*开有无牌传感器*/
 290   1              Delay50ms();
 291   1              CaPaibit=0;
 292   1              Box1ok=0;
 293   1              Box2ok=0;
 294   1              BboxErr=0;
 295   1              Bclrbit=1;
 296   1      
 297   1              TX[2]='B';
 298   1              TX[4]=0x04;
 299   1              Transmit();
 300   1              TXok();
 301   1              if(BboxErr)           /*B通讯错误退出*/
 302   1                      goto  Clrexit;
 303   1      
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 6   

 304   1              TX[2]='C';
 305   1              TX[4]=0x04;
 306   1              Transmit();
 307   1              TXok();
 308   1              if(BboxErr)          /*B通讯错误退出*/
 309   1                      goto  Clrexit;
 310   1      
 311   1              while(!Back_OPTO||Count_OPTO)      /*有牌则清牌*/
 312   1              {
 313   2                      Back_motor=0;
 314   2                      Front_motor=0;
 315   2                      if(Bclrbit)
 316   2              {
 317   3                              for(x1=0;x1<40;x1++)
 318   3                      {
 319   4                                      Delay50ms();
 320   4                              }
 321   3                      Bclrbit=0;
 322   3                      TX[2]=Bbox;      /*B清牌*/
 323   3                      TX[4]=0x04;
 324   3                      Transmit();
 325   3                      TXok();
 326   3              }
 327   2              }
 328   1              Back_motor=1;
 329   1              Front_motor=1;
 330   1              OPTOV=1;
 331   1              //TX[2]=Bbox;      /*B清牌*/
 332   1              //TX[4]=0x04;
 333   1              //Transmit();
 334   1              //TXok();
 335   1              Clrexit:
 336   1                      A3986_EN=1;
 337   1                      LED=1;
 338   1      }
 339          /***********************************
 340          *-------A类出牌程序--------------*
 341          ***********************************/
 342          void   Out1(void)
 343          {
 344   1              unsigned int x,y;
 345   1      
 346   1              BoxNO=1;    /*固定发牌位置*/
 347   1              Turn();
 348   1      
 349   1              TX[2]='B';
 350   1              TX[4]=0x02;    /*0x02一次把牌发完命令*/
 351   1              TX[5]=0x11;
 352   1              TX[6]=0x11;
 353   1              Transmit();
 354   1              TXok();
 355   1              Delay50ms();
 356   1              if(ErrorNO)
 357   1                      goto  RemOUT;
 358   1              TX[2]='C';
 359   1              TX[4]=0x02;     /*0x02一次把牌发完命令*/
 360   1              TX[5]=0;        /*三家游戏底牌不出*/
 361   1              TX[6]=0x11;
 362   1              Transmit();
 363   1              TXok();
 364   1              x=0;y=0;
 365   1              while(1)
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 7   

 366   1              {
 367   2                      Delay50ms();
 368   2                      if(Command==0x22)    /*等待B仓发牌完成*/
 369   2              {
 370   3                              y++;
 371   3                              Command=0;
 372   3                      }
 373   2                      if(y==2)  break;
 374   2                      x++;
 375   2                      if(x>200)  break;
 376   2              }
 377   1              RemOUT:
 378   1              Delay50ms();
 379   1      }
 380          /***********************************
 381          *-------A类洗牌程序--------------*
 382          ***********************************/
 383          void  Riffle1(void)
 384          {
 385   1              unsigned  char  Ya,Cou0;  //man,x
 386   1              unsigned  char  AllCardbak,RemnantCardbak;
 387   1              bit  xbit;
 388   1      
 389   1              AllCardbak=AllCard;
 390   1              RemnantCardbak=RemnantCard;
 391   1              xbit=0;
 392   1              ShaoCardBit=0;      /*少牌标志*/
 393   1              Cou0=0;
 394   1              Box1data=0;
 395   1              Box2data=0;
 396   1              Box3data=0;
 397   1              Box4data=0;
 398   1      
 399   1              if(Mandata==3)
 400   1              {
 401   2                      RemnantBox=3;
 402   2              }    /*3人时底牌盒为3*/
 403   1              else
 404   1                      RemnantBox=TL2%4+1;  /*用计数器数据来计算随机底牌盒*/
 405   1      
 406   1              OPTOV=0;         //+
 407   1              Delay50ms();
 408   1              while(1)
 409   1              {
 410   2                      Card_data=TL2%3+1;
 411   2                      BoxNO=TH2%4+1;
 412   2                      while(BoxNO==Cou0)
 413   2              {
 414   3                              BoxNO=TH2%4+1;
 415   3                      }  /*取首个接牌盒位置*/
 416   2      
 417   2                      if(AllCard>0x54)
 418   2                      AllCard=0;
 419   2                      if(AllCard-RemnantCard<Card_data*Mandata)    /*检查总牌数是否够发一轮牌*/
 420   2              {
 421   3                              Card_data=(AllCard-RemnantCard)/Mandata;
 422   3                      }
 423   2                      for(Ya=0;Ya<Mandata;Ya++)      /*发牌一轮*/
 424   2              {
 425   3                              if(Command==0x04)   /*清牌*/
 426   3                      {
 427   4                                      Ya=Mandata;
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 8   

 428   4                              }
 429   3                      else
 430   3                      {
 431   4                                      if(Mandata==3)           /*判断是否为3人游戏*/
 432   4                              {
 433   5                                              if(BoxNO==3)
 434   5                              {
 435   6                                                      BoxNO=4;
 436   6                                              }
 437   5                      }
 438   4                              if(Cou0==BoxNO)   //*****
 439   4                              {
 440   5                                              BoxNO++;       //*****
 441   5                              if(BoxNO>=5)   //*****
 442   5                              {
 443   6                                                      BoxNO=1;
 444   6                                              }   //*****
 445   5                      }              //*****
 446   4                              Turn();        /*转动*/
 447   4                              Cou0=BoxNO;    /*保存当前位置*/
 448   4                              OPTOV=0;       //+
 449   4                              Delay50ms();
 450   4                              CarBak=Card_data;  /*发牌数bak*/
 451   4                              OutCard();         /*发牌*/
 452   4                              if(ShaoCardBit)
 453   4                              {
 454   5                                              ShaoCar();
 455   5                                      }      /*少牌处理*/
 456   4                              AllCard=AllCard-CarBak;   /*Card_data总牌数更新*/
 457   4                              switch(BoxNO)
 458   4                              {
 459   5                                              case 1:  Box1data=Box1data+Card_data; break;    /*牌盒牌数更新*/
 460   5                              case 2:  Box2data=Box2data+Card_data; break;    //
 461   5                              case 3:  Box3data=Box3data+Card_data; break;    //
 462   5                              case 4:  Box4data=Box4data+Card_data; break;    //
 463   5                              default:    break;
 464   5                      }
 465   4                              BoxNO++;       /*转动方位变化*/
 466   4                              if(BoxNO>4)    //
 467   4                              {
 468   5                                              BoxNO=1;
 469   5                                      }   //
 470   4                      }
 471   3              }
 472   2                      if(Command==0x04)   /*清牌*/
 473   2              {
 474   3                              ClrBit=1;
 475   3                              break;
 476   3                      }       
 477   2                      if((RemnantCard!=0)||(AllCard==RemnantCard))      /*发底牌程序*/
 478   2              {
 479   3                              if(RemnantBox!=Cou0||AllCard==RemnantCard)    /*底牌等于总牌数?*/
 480   3                      {
 481   4                                      BoxNO=RemnantBox;
 482   4                              Turn();
 483   4                              if(RemnantCard<Card_data||AllCard==RemnantCard)
 484   4                              {
 485   5                                              Card_data=RemnantCard;
 486   5                                      }
 487   4                              CarBak=Card_data;  /*发牌数bak*/
 488   4                              OutCard();         /*发牌*/
 489   4                              if(ShaoCardBit)
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 9   

 490   4                              {
 491   5                                              ShaoCar();
 492   5                                      }     /*少牌处理*/
 493   4                              if(Command==0x04)  /*清牌*/
 494   4                              {
 495   5                                              ClrBit=1;
 496   5                                              break;
 497   5                                      }
 498   4                              RemnantCard=RemnantCard-CarBak;  /*底牌数更新*/
 499   4                              AllCard=AllCard-CarBak;          /*总牌数更新*/
 500   4                              switch(RemnantBox)
 501   4                              {
 502   5                                              case 1:   Box1data=Box1data+CarBak; break;    /*牌盒牌数更新*/
 503   5                              case 2:   Box2data=Box2data+CarBak; break;    //
 504   5                              case 3:   Box3data=Box3data+CarBak; break;    //
 505   5                              case 4:   Box4data=Box4data+CarBak; break;    //
 506   5                              default:  break;
 507   5                      }
 508   4                      }
 509   3              }
 510   2                      if(AllCard==0||AllCard>54)
 511   2              {
 512   3                              OPTOV=0;       //+
 513   3                      Delay50ms();
 514   3                      while(!Back_OPTO||Count_OPTO)    /*总牌数为0时如有牌报牌多,无牌退出*/
 515   3                      {
 516   4                                      if(!xbit)
 517   4                              {
 518   5                                              TX[2]='M';
 519   5                              TX[4]=0x26;      /*多牌报警*/
 520   5                              Transmit();
 521   5                              xbit=1;
 522   5                      }
 523   4                              if(Command==0x04)
 524   4                              {
 525   5                                              ClrBit=1;

⌨️ 快捷键说明

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