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

📄 gamegraph.lst

📁 单片机的俄罗斯方块程序,含Proteus 仿真文件及详细注释
💻 LST
字号:
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/06/2007 16:45:44 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE GAMEGRAPH
OBJECT MODULE PLACED IN .\Target\GameGraph.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\GameGraph.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LST
                    -\GameGraph.lst) OBJECT(.\Target\GameGraph.obj)

line level    source

   1          //*************************************************************************************************
   2          //*                                                                                                                                                                                               *
   3          //*                      ******************************游戏图像处理程序**************************                         *
   4          //*                                                                                                                                                                                               *
   5          //*************************************************************************************************
   6          #include "includes.h"
   7          
   8          #define FRAMELEFT 38                               //边框范围:ucLine:36~127。
   9          #define BLOCKLEFT 40
  10          
  11          
  12          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<格子状态数组>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  13          unsigned char uca_BlockMap[]=
  14          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  15          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  16          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
  17          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  18          0x00,0x00};
  19          
  20          unsigned char code uca_BitSelect[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
  21                                                                           //用于按位置零。
  22          
  23          unsigned char code uca_BlockLeft[]={0xF0,0xB0,0xD0,0xF0};
  24          unsigned char code uca_BlockRight[]={0x0F,0x0B,0x0D,0x0F};
  25          unsigned char code uca_BlockTwo[]={0xFF,0xBB,0xDD,0xFF};
  26          unsigned char code uca_BlockClean[]={0x00,0x00,0x00,0x00};
  27          
  28          //*************************************************************************************************
  29          //*                                                                                                                                                                                               *
  30          //*                      **********************************读格子状态**************************                           *
  31          //*                                                                                                                                                                                               *
  32          //*************************************************************************************************
  33          unsigned char ucReadBlock(unsigned char ucRow,unsigned char ucLine)
  34          {
  35   1              unsigned char ucResult; 
  36   1      
  37   1              if(ucLine<8)
  38   1                      ucResult=uca_BlockMap[ucRow*2]>>(ucLine);
  39   1              else
  40   1                      ucResult=uca_BlockMap[ucRow*2+1]>>(ucLine-8);
  41   1      
  42   1              if(ucResult&0x01)
  43   1                      return 1;
  44   1              else
  45   1                      return 0;
  46   1      }
  47          
  48          //*************************************************************************************************
  49          //*                                                                                                                                                                                               *
  50          //*                      **********************************写格子状态**************************                           *
  51          //*                                                                                                                                                                                               *
  52          //*************************************************************************************************
  53          void vWriteBlock(unsigned char ucRow,unsigned char ucLine ,unsigned char ucValue)
  54          {
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/06/2007 16:45:44 PAGE 2   

  55   1              if(ucValue==1)
  56   1                      {
  57   2                      if(ucLine<8)
  58   2                              uca_BlockMap[ucRow*2]|=(ucValue<<ucLine);
  59   2                      else
  60   2                              uca_BlockMap[ucRow*2+1]|=(ucValue<<(ucLine-8));
  61   2                      }
  62   1              else
  63   1                      {
  64   2                      if(ucLine<8)
  65   2                              uca_BlockMap[ucRow*2]&=uca_BitSelect[ucLine];
  66   2                      else
  67   2                              uca_BlockMap[ucRow*2+1]&=uca_BitSelect[ucLine-8];               
  68   2                      }
  69   1      
  70   1      }
  71          //*************************************************************************************************
  72          //*                                                                                                                                                                                               *
  73          //*                      **********************************显示一个方块****************************                       *
  74          //*                                                                                                                                                                                               *
  75          //*************************************************************************************************
  76          void vShowBlock(unsigned char ucRow,unsigned char ucLine)
  77          {
  78   1              vWriteBlock(ucRow,ucLine,1);
  79   1              if(ucLine%2)
  80   1                      {
  81   2                      if(ucReadBlock(ucRow,ucLine-1))
  82   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockTwo);
  83   2                      else
  84   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockLeft);
  85   2                      }
  86   1              else
  87   1                      {
  88   2                      if(ucReadBlock(ucRow,ucLine+1))
  89   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockTwo);
  90   2                      else
  91   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockRight);
  92   2                      }
  93   1      }
  94          
  95          //*************************************************************************************************
  96          //*                                                                                                                                                                                               *
  97          //*                      **********************************清除一个方块****************************                       *
  98          //*                                                                                                                                                                                               *
  99          //*************************************************************************************************
 100          void vCleanBlock(unsigned char ucRow,unsigned char ucLine)
 101          {
 102   1              vWriteBlock(ucRow,ucLine,0);
 103   1              if(ucLine%2)
 104   1                      {
 105   2                      if(ucReadBlock(ucRow,ucLine-1))
 106   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockRight);
 107   2                      else
 108   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockClean);
 109   2                      }
 110   1              else
 111   1                      {
 112   2                      if(ucReadBlock(ucRow,ucLine+1))
 113   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockLeft);
 114   2                      else
 115   2                              vShowCustomRow(ucLine/2+1,BLOCKLEFT+ucRow*4,4,uca_BlockClean);
 116   2                      }
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/06/2007 16:45:44 PAGE 3   

 117   1      }
 118          //*************************************************************************************************
 119          //*                                                                                                                                                                                               *
 120          //*                      ******************************游戏区域边框绘制函数**************************             *
 121          //*                                                                                                                                                                                               *
 122          //*************************************************************************************************
 123          void vShowFrame()
 124          {
 125   1              unsigned char ucCount;
 126   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<绘制左半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 127   1      
 128   1              CS1=1;
 129   1              CS2=0;
 130   1              vWriteCMD(LCDPAGE);
 131   1              vWriteCMD(LCDLINE+FRAMELEFT);
 132   1              for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
 133   1                      vWriteData(0xC0);
 134   1      
 135   1              for(ucCount=1;ucCount<7;ucCount++)
 136   1                      {
 137   2                      vWriteCMD(LCDPAGE+ucCount);
 138   2                      vWriteCMD(LCDLINE+FRAMELEFT);
 139   2                      vWriteData(0xFF);
 140   2                      vWriteData(0xFF);
 141   2                      }
 142   1      
 143   1              vWriteCMD(LCDPAGE+7);
 144   1              vWriteCMD(LCDLINE+FRAMELEFT);
 145   1              for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
 146   1                      vWriteData(0x03);
 147   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<绘制右半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 148   1              CS1=0;
 149   1              CS2=1;
 150   1              vWriteCMD(LCDPAGE);
 151   1              vWriteCMD(LCDLINE);
 152   1              for(ucCount=0;ucCount<62;ucCount++)
 153   1                      vWriteData(0xC0);
 154   1      
 155   1              for(ucCount=1;ucCount<7;ucCount++)
 156   1                      {
 157   2                      vWriteCMD(LCDPAGE+ucCount);
 158   2                      vWriteCMD(LCDLINE+60);
 159   2                      vWriteData(0xFF);
 160   2                      vWriteData(0xFF);
 161   2                      }
 162   1      
 163   1              vWriteCMD(LCDPAGE+7);
 164   1              vWriteCMD(LCDLINE);
 165   1              for(ucCount=0;ucCount<62;ucCount++)
 166   1                      vWriteData(0x03);        
 167   1      }                


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    635    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     42       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V8.05a   GAMEGRAPH                                                            11/06/2007 16:45:44 PAGE 4   


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

⌨️ 快捷键说明

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