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

📄 lcd_disp.lst

📁 俄罗斯方块 在Proteus仿真通过 有兴趣的自己下载看看
💻 LST
📖 第 1 页 / 共 3 页
字号:
 594   4                           Read_Sel_Figure(3,Figure_Date_New);
 595   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 596   4                   {Fig_Type=3;
 597   5                               Read_Sel_Figure(3,Figure_Date);//从内存中读取新的方块数据
 598   5                               Write_Preview(Clr_Preview);
 599   5                   Write_Preview(Figure_Date);
 600   5                               }                 
 601   4                              } break;
 602   3               case 3:{
 603   4                               Read_Sel_Figure(2,Figure_Date_New);
 604   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 605   4                               {Fig_Type=2;
 606   5                               Read_Sel_Figure(2,Figure_Date);
 607   5                               Write_Preview(Clr_Preview);
 608   5                   Write_Preview(Figure_Date);
 609   5                               }                              
 610   4                              } break;
 611   3               case 4:{
 612   4                               Read_Sel_Figure(5,Figure_Date_New);
 613   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
C51 COMPILER V8.01   LCD_DISP                                                              06/17/2008 20:51:00 PAGE 11  

 614   4                   {Fig_Type=5;
 615   5                               Read_Sel_Figure(5,Figure_Date);
 616   5                               Write_Preview(Clr_Preview);
 617   5                   Write_Preview(Figure_Date);
 618   5                               }                              
 619   4                              } break;
 620   3               case 5:{
 621   4                               Read_Sel_Figure(6,Figure_Date_New);
 622   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 623   4                               {Fig_Type=6;
 624   5                               Read_Sel_Figure(6,Figure_Date);
 625   5                               Write_Preview(Clr_Preview);
 626   5                   Write_Preview(Figure_Date);
 627   5                               }                              
 628   4                              } break;
 629   3               case 6:{
 630   4                               Read_Sel_Figure(7,Figure_Date_New);
 631   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 632   4                               {Fig_Type=7;
 633   5                               Read_Sel_Figure(7,Figure_Date);
 634   5                               Write_Preview(Clr_Preview);
 635   5                   Write_Preview(Figure_Date);
 636   5                               }                              
 637   4                              } break;
 638   3               case 7:{
 639   4                               Read_Sel_Figure(4,Figure_Date_New);
 640   4                  if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 641   4                              {Fig_Type=4;
 642   5                              Read_Sel_Figure(4,Figure_Date); 
 643   5                               Write_Preview(Clr_Preview);
 644   5                   Write_Preview(Figure_Date);
 645   5                              }                       
 646   4                              } break;
 647   3               case 8:{
 648   4                               Read_Sel_Figure(9,Figure_Date_New);
 649   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 650   4                               {Fig_Type=9;
 651   5                               Read_Sel_Figure(9,Figure_Date);
 652   5                               Write_Preview(Clr_Preview);
 653   5                   Write_Preview(Figure_Date);
 654   5                               }                              
 655   4                              } break;
 656   3               case 9:{
 657   4                               Read_Sel_Figure(8,Figure_Date_New);
 658   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 659   4                               {Fig_Type=8;
 660   5                               Read_Sel_Figure(8,Figure_Date);
 661   5                               Write_Preview(Clr_Preview);
 662   5                   Write_Preview(Figure_Date);
 663   5                               }                              
 664   4                              } break;
 665   3               case 10:{
 666   4                               Read_Sel_Figure(11,Figure_Date_New);
 667   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 668   4                               {Fig_Type=11;
 669   5                               Read_Sel_Figure(11,Figure_Date);
 670   5                               Write_Preview(Clr_Preview);
 671   5                   Write_Preview(Figure_Date);
 672   5                               }                              
 673   4                              } break;
 674   3               case 11:{
 675   4                               Read_Sel_Figure(10,Figure_Date_New);
C51 COMPILER V8.01   LCD_DISP                                                              06/17/2008 20:51:00 PAGE 12  

 676   4                               if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date_New)) //检测变形后是否干涉
 677   4                               {Fig_Type=10;
 678   5                               Read_Sel_Figure(10,Figure_Date);
 679   5                               Write_Preview(Clr_Preview);
 680   5                   Write_Preview(Figure_Date);
 681   5                               }                              
 682   4                              } break;         
 683   3              }
 684   2              }
 685   1      }
 686          
 687          /*--------------------------------------------------
 688          *函数名称:Chk_Line_Full
 689          *功    能:检查一行是否满
 690          *参    数:Y     
 691          *返    回:0 该行未填满
 692                    1 该行已经填满
 693          ---------------------------------------------------*/
 694          uchar Chk_Line_Full(uchar y)
 695          {
 696   1       if(y<32)
 697   1              {
 698   2       if(Disp_Buff[y]==0xffffffff)
 699   2              return 1;
 700   2       else 
 701   2              return 0;
 702   2              }
 703   1       return 0;
 704   1      }
 705          /*--------------------------------------------------
 706          *函数名称:Line_Move_Down
 707          *功    能:整行下移一行
 708          *参    数:Y 开始下移的行坐标      
 709          *返    回:无
 710          ---------------------------------------------------*/
 711          void Line_Move_Down(uchar y)
 712          {
 713   1       while(y)
 714   1              {
 715   2               Disp_Buff[y+1]=Disp_Buff[y];
 716   2               y--;
 717   2              }
 718   1       Disp_Buff[y+1]=Disp_Buff[y];
 719   1      
 720   1      }
 721          
 722          /*--------------------------------------------------
 723          *函数名称:Move_Down
 724          *功    能:图形下移子程序
 725          *参    数:无    
 726          *返    回:无
 727          ---------------------------------------------------*/
 728          void Move_Down(void)
 729          { uchar i;
 730   1       if(Y_Coor==0)
 731   1       Write_Preview(Figure_Date);            //刷新预览区
 732   1       Y_Coor=Y_Coor+1;
 733   1      
 734   1       if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date)) //检查是否能下落
 735   1            {
 736   2             if(Y_Coor>1)                  //初始状态没有方块可清除
 737   2              {
C51 COMPILER V8.01   LCD_DISP                                                              06/17/2008 20:51:00 PAGE 13  

 738   3               Clr_Figure(X_Coor,Y_Coor-1,Figure_Date_Old);  //清除上一个方块
 739   3               Exchange(Figure_Date,Figure_Date_Old);         
 740   3              }
 741   2                 Write_4x4Ram(X_Coor,Y_Coor,Figure_Date);   //写入新的方块
 742   2                }
 743   1       else
 744   1              {Y_Coor--;
 745   2               Update_Disp_Buff(Figure_Date);      //如果不能继续下落,将方块写入背景
 746   2               Clr_Figure(X_Coor,Y_Coor,Figure_Date_Old);
 747   2               Write_4x4Ram(X_Coor,Y_Coor,Figure_Date);
 748   2           for(i=0;i<4;i++)                      //检查是否满行
 749   2              {
 750   3               if(Chk_Line_Full(Y_Coor-3+i))
 751   3                      {Line_Move_Down(Y_Coor-4+i);
 752   4                   Disp_Update();
 753   4                               SUM=SUM+10;   //总分加十
 754   4                               if(SUM>10)   //如果总分超过200,速度加一
 755   4                                      {SUM=0;
 756   5                                       speed++;
 757   5                                       if(speed>6)
 758   5                                              speed=0;
 759   5                                       Move_Down_Delay=(5-speed)*10 ;
 760   5                                       Disp_Num(speed,0);
 761   5                                      }
 762   4                               Disp_Num(SUM,1);
 763   4                          }
 764   3              }
 765   2              if(Y_Coor==0)                      //第0行即存在干涉游戏结束
 766   2                 Game_Over=0;
 767   2              else
 768   2                {Y_Coor=0;                      //方块重新落下
 769   3                X_Coor=25;
 770   3                Fig_Type=Ran();                 //读取随机数,产生新的方块
 771   3                Read_Sel_Figure(Fig_Type, Figure_Date); //根据形状代码读取方块
 772   3                Write_Preview(Clr_Preview);            //清除预览区
 773   3                Exchange(Figure_Date,Figure_Date_Old); //上一个方块存储当前方块
 774   3                Write_Preview(Figure_Date);            //刷新预览区
 775   3                }
 776   2          }
 777   1      }
 778          
 779          /*--------------------------------------------------
 780          *函数名称:Move_Left
 781          *功    能:图形左移子程序
 782          *参    数:无    
 783          *返    回:无
 784          ---------------------------------------------------*/
 785          void Move_Left(void)
 786          {
 787   1       //Figure(X_Coor,Y_Coor,Figure_Date);
 788   1       X_Coor--;
 789   1       if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date))   //检测是否能够向左移动
 790   1          {Clr_Figure(X_Coor+1,Y_Coor,Figure_Date);     //能够移动清除上一个方块
 791   2           Write_4x4Ram(X_Coor,Y_Coor,Figure_Date);  //在新的位置写入新的方块
 792   2              }  
 793   1       else
 794   1              X_Coor=X_Coor+1;         //不能移动,坐标停止自减               
 795   1      }
 796          /*--------------------------------------------------
 797          *函数名称:Move_Right
 798          *功    能:图形右移子程序
 799          *参    数:无    
C51 COMPILER V8.01   LCD_DISP                                                              06/17/2008 20:51:00 PAGE 14  

 800          *返    回:无
 801          ---------------------------------------------------*/
 802          void Move_Right(void)
 803          {
 804   1       //Clr_Figure(X_Coor,Y_Coor,Figure_Date);
 805   1        X_Coor++;
 806   1       if(!Check_Interfc(X_Coor,Y_Coor,Figure_Date)) //检测是否能够向右移动
 807   1          {Clr_Figure(X_Coor-1,Y_Coor,Figure_Date); 
 808   2           Write_4x4Ram(X_Coor,Y_Coor,Figure_Date);
 809   2              } 
 810   1       else
 811   1              X_Coor=X_Coor-1;        
 812   1      }
 813          /*--------------------------------------------------
 814          *函数名称:Delay
 815          *功    能:控制加速下落的延时
 816          *参    数:无    
 817          *返    回:无
 818          ---------------------------------------------------*/
 819          void Delay(void) 
 820          { 
 821   1        unsigned char i,j,k; 
 822   1        for(k=2;k>0;k--) 
 823   1        for(i=20;i>0;i--) 
 824   1        for(j=248;j>0;j--); 
 825   1      } 
 826          /*--------------------------------------------------
 827          *函数名称:Key_Manage
 828          *功    能:按键管理子程序
 829          *参    数:无    
 830          *返    回:无
 831          ---------------------------------------------------*/
 832          void Delay10ms() 
 833          { uchar a,b;
 834   1          for(a=100;a>0;a--)
 835   1      
 836   1            for(b=225;b>0;b--);
 837   1      
 838   1      }
 839          void Key_Manage(void)
 840          {
 841   1       if(!KEY_Left)
 842   1              {Delay10ms();
 843   2          if(!KEY_Left)
 844   2              Move_Left();}
 845   1       if(!KEY_Right)
 846   1              {Delay10ms();
 847   2           if(!KEY_Right)
 848   2               Move_Right();}
 849   1       if(!KEY_Transf)
 850   1              { Delay10ms();
 851   2           if(!KEY_Transf)
 852   2                Trans(Fig_Type);        
 853   2              }
 854   1       if(!KEY_Speedup)
 855   1              {
 856   2       while(!KEY_Speedup)
 857   2              {
 858   3               TR0=0;   //关闭定时器,下落改由延时程序来控制
 859   3               Move_Down();
 860   3               Delay();        
 861   3              }
C51 COMPILER V8.01   LCD_DISP                                                              06/17/2008 20:51:00 PAGE 15  

 862   2       TR0=1;
 863   2              }
 864   1      }
 865          
 866          
 867          
 868          
 869          
 870          
 871          
 872          
 873          
 874          
 875          
 876          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2773    ----
   CONSTANT SIZE    =    460    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22      91
   IDATA SIZE       =    128    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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