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

📄 gamegraph.lst

📁 由51单片机与12864组成 俄罗斯方块游戏程序 keil工程
💻 LST
字号:
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/13/2007 09:15:29 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_BlockDisMap[4][4]={
  24          {0x00,0x00,0x00,0x00},{0x0F,0x0B,0x0D,0x0F},
  25          {0xF0,0xB0,0xD0,0xF0},{0xFF,0xBB,0xDD,0xFF}};    
  26          
  27          //*************************************************************************************************
  28          //*                                                                                                                                                                                               *
  29          //*                      **********************************读格子状态**************************                           *
  30          //*                                                                                                                                                                                               *
  31          //*************************************************************************************************
  32          unsigned char ucReadBlock(unsigned char ucRow,unsigned char ucLine)
  33          {
  34   1              unsigned char ucResult; 
  35   1      
  36   1              if(ucLine<8)
  37   1                      ucResult=uca_BlockMap[ucRow*2]>>(ucLine);
  38   1              else
  39   1                      ucResult=uca_BlockMap[ucRow*2+1]>>(ucLine-8);
  40   1      
  41   1              if(ucResult&0x01)
  42   1                      return 1;
  43   1              else
  44   1                      return 0;
  45   1      }
  46          
  47          //*************************************************************************************************
  48          //*                                                                                                                                                                                               *
  49          //*                      **********************************写格子状态**************************                           *
  50          //*                                                                                                                                                                                               *
  51          //*************************************************************************************************
  52          void vWriteBlock(unsigned char ucRow,unsigned char ucLine ,unsigned char ucValue)
  53          {
  54   1              if(ucValue==1)
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/13/2007 09:15:29 PAGE 2   

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

 117          
 118          //*************************************************************************************************
 119          //*                                                                                                                                                                                               *
 120          //*                      **********************************方块显示扩展************************                           *
 121          //*                                                                                                                                                                                               *
 122          //*************************************************************************************************
 123          //可在LCD任何地方显示方块,注意:其中ucRow,ucLine为LCD坐标。
 124          void vShowBlockEx(unsigned char ucRow,unsigned char ucLine,BLOCK *pstBlockType)
 125          {
 126   1              unsigned char ucCount;
 127   1              for(ucCount=0;ucCount<8;ucCount++)
 128   1                      vShowCustomRow(ucRow+ucCount%2,ucLine+(ucCount/2)*4,4,\
 129   1                                      uca_BlockDisMap[0x03&(unsigned char)((pstBlockType->uiBlockMap)>>(ucCount*2))]);
 130   1      }
 131                                           
 132          //*************************************************************************************************
 133          //*                                                                                                                                                                                               *
 134          //*                      ******************************游戏区域边框绘制函数**************************             *
 135          //*                                                                                                                                                                                               *
 136          //*************************************************************************************************
 137          void vShowFrame()
 138          {
 139   1              unsigned char ucCount;
 140   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<绘制左半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 141   1      
 142   1              CS1=1;
 143   1              CS2=0;
 144   1              vWriteCMD(LCDPAGE);
 145   1              vWriteCMD(LCDLINE+FRAMELEFT);
 146   1              for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
 147   1                      vWriteData(0xC0);
 148   1      
 149   1              for(ucCount=1;ucCount<7;ucCount++)
 150   1                      {
 151   2                      vWriteCMD(LCDPAGE+ucCount);
 152   2                      vWriteCMD(LCDLINE+FRAMELEFT);
 153   2                      vWriteData(0xFF);
 154   2                      vWriteData(0xFF);
 155   2                      }
 156   1      
 157   1              vWriteCMD(LCDPAGE+7);
 158   1              vWriteCMD(LCDLINE+FRAMELEFT);
 159   1              for(ucCount=FRAMELEFT;ucCount<64;ucCount++)
 160   1                      vWriteData(0x03);
 161   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<绘制右半屏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 162   1              CS1=0;
 163   1              CS2=1;
 164   1              vWriteCMD(LCDPAGE);
 165   1              vWriteCMD(LCDLINE);
 166   1              for(ucCount=0;ucCount<62;ucCount++)
 167   1                      vWriteData(0xC0);
 168   1      
 169   1              for(ucCount=1;ucCount<7;ucCount++)
 170   1                      {
 171   2                      vWriteCMD(LCDPAGE+ucCount);
 172   2                      vWriteCMD(LCDLINE+60);
 173   2                      vWriteData(0xFF);
 174   2                      vWriteData(0xFF);
 175   2                      }
 176   1      
 177   1              vWriteCMD(LCDPAGE+7);
 178   1              vWriteCMD(LCDLINE);
C51 COMPILER V8.05a   GAMEGRAPH                                                            11/13/2007 09:15:29 PAGE 4   

 179   1              for(ucCount=0;ucCount<62;ucCount++)
 180   1                      vWriteData(0x03);        
 181   1      }                


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    682    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     42      14
   IDATA SIZE       =   ----    ----
   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 + -