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

📄 matrix16.lst

📁 T6369C控制器的图形液晶显示功能用于烟草的标签显示
💻 LST
字号:
C51 COMPILER V8.06   MATRIX16                                                              03/11/2007 21:30:29 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE MATRIX16
OBJECT MODULE PLACED IN Matrix16.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Matrix16.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          文件名称:Matrix16.C
   3          适用范围:宋体16*16字符点阵信息读取程序
   4                    使用的字体文件为ASC16.BIN和HZK16.BIN,用WINHEX将两个合成在一个文件中,
   5                    文件名为Matrix16.bin,将Matrix16.bin以BIN方式烧录在AT27C040中;
   6          *******************************************************************************/
   7          #include        "Matrix16.H"
   8          
   9          
  10          #define asc_ofs 0x0000          //指定ASC16点阵信息在字库中的偏移位置
  11          #define hzk_ofs 0x1000          //指定HZK16点阵信息在字库中的偏移位置
  12          
  13          //#define addr_ex P1                            //指定P1口作为扩展地址总线(A13-A18)
  14          
  15          unsigned char xdata *p_dots;
  16          unsigned char xdata dot_info[32];
  17          //------------------------------------------------------------------------------
  18          
  19          void GetChDots(uchar ch_code);
  20          void GetHzDots(uchar hz_code_h,hz_code_l);
  21          void ConvertChDots(uint pos_x,uint pos_y);
  22          void ConvertLineMessage(uchar v_ln);
  23          
  24          void ConvertHzDots(uint pos_x,uint pos_y);
  25          void Convert1HzDots2(uchar hz_x,hz_y);
  26          //------------------------------------------------------------------------------
  27          uint GetHzDotsAddr(uchar hz_code_h,hz_code_l)
  28          {
  29   1              ulong addr;
  30   1              uint  addr_l,addr_h;
  31   1      
  32   1              if((hz_code_h<0xa1)|(hz_code_l<0xa1)){
  33   2                      hz_code_h=0xa1;hz_code_l=0xa1;
  34   2              }
  35   1              
  36   1        addr = (hz_code_h-0xa1)*94;
  37   1        addr = (addr+hz_code_l-0xa1)*32;
  38   1        addr = addr+hzk_ofs;                                          //GB2132 offset 0x1000;
  39   1        addr_l = addr & 0x1fff;
  40   1        addr_h = addr >> 13;
  41   1        addr_ex = addr_h;
  42   1              return(addr_l|rom_ofs);                                 //片选汉字库ROM
  43   1      }
  44          
  45          //---------------------------------------------------------------------------
  46          uint GetChDotsAddr(uchar ch_code)
  47          {
  48   1              ulong addr;
  49   1              uint  addr_l;
  50   1      
  51   1              addr = ch_code*16;
  52   1              addr_l = addr & 0x1fff;
  53   1              addr_ex = 0x00;                                                                         //屏蔽高位地址,ASC码用不到。
  54   1              return(addr_l|rom_ofs);                                 //片选ROM
  55   1      }
C51 COMPILER V8.06   MATRIX16                                                              03/11/2007 21:30:29 PAGE 2   

  56          
  57          //---------------------------------------------------------------------------
  58          void GetChDots(uchar ch_code)
  59          {
  60   1              uchar i;
  61   1              
  62   1              p_dots=GetChDotsAddr(ch_code);                                  //计算点阵首地址,赋给指针
  63   1              for(i=0;i<16;i++){                                                                                      //读出点阵信息,放入点阵数组
  64   2                      dot_info[i]=*p_dots++;
  65   2              }
  66   1      }
  67          
  68          void GetHzDots(uchar code_h,code_l)
  69          {
  70   1              uchar i;
  71   1              
  72   1              p_dots=GetHzDotsAddr(code_h,code_l);            //计算点阵首地址,赋给指针
  73   1              for(i=0;i<32;i++){                                                                                      //读出点阵信息,放入点阵数组
  74   2                      dot_info[i]=*p_dots++;
  75   2              }
  76   1      }
  77          
  78          //0308 vonvert from 16*16 to 16*16
  79          void ConvertHzDots(uint pos_x,uint pos_y)
  80          {
  81   1      
  82   1              uint  idata j,y;
  83   1              uint idata addroffset;
  84   1        
  85   1              addroffset=pos_y+pos_x;
  86   1              
  87   1      //左上部和左下部    
  88   1              for(j=0;j<16;j++)
  89   1              {
  90   2                      y=j%2;
  91   2                      if(y==0)
  92   2                      {
  93   3                              bmp_info[addroffset+j/2] = dot_info[j];
  94   3                      }
  95   2                      else
  96   2                      {
  97   3                              bmp_info[addroffset+16+j/2] = dot_info[j];
  98   3                      }
  99   2                      
 100   2          }
 101   1      
 102   1      //右上部和右下部    
 103   1              for(j=0;j<16;j++)
 104   1              {
 105   2                      y=j%2;
 106   2                      if(y==0)
 107   2                      {
 108   3                              bmp_info[addroffset+8+j/2] = dot_info[16+j];
 109   3                      }
 110   2                      else
 111   2                      {
 112   3                              bmp_info[addroffset+24+j/2] = dot_info[16+j];
 113   3                      }
 114   2          }
 115   1        
 116   1      }
 117          
C51 COMPILER V8.06   MATRIX16                                                              03/11/2007 21:30:29 PAGE 3   

 118          void ConvertChDots(uint pos_x,uint pos_y)
 119          {
 120   1              uint  idata j,y;
 121   1              uint idata addroffset;
 122   1        
 123   1              addroffset=pos_y+pos_x;
 124   1              
 125   1              for(j=0;j<16;j++)
 126   1              {
 127   2                              bmp_info[addroffset+j] = dot_info[j];
 128   2          }
 129   1      }
*** WARNING C280 IN LINE 120 OF MATRIX16.C: 'y': unreferenced local variable
 130          
 131          //0308 vonvert from 16*16 to 16*32
 132          void Convert1HzDots2(uchar hz_x,hz_y)
 133          {
 134   1      
 135   1        uint xdata j, y;
 136   1        unsigned char xdata bmp_info_temp[64];
 137   1      
 138   1        addr_ex=0x01;
 139   1      //左上部和左下部    
 140   1              for(j=0;j<16;j++)
 141   1              {
 142   2                      y=j%2;
 143   2                      if(y==0)
 144   2                      {
 145   3                              bmp_info_temp[j/2] = dot_info[j];
 146   3                      }
 147   2                      else
 148   2                      {
 149   3                              bmp_info_temp[16+j/2] = dot_info[j];
 150   3                      }
 151   2                      
 152   2              }
 153   1      
 154   1      //右上部和右下部    
 155   1              for(j=0;j<16;j++)
 156   1              {
 157   2                      y=j%2;
 158   2                      if(y==0)
 159   2                      {
 160   3                              bmp_info_temp[8+j/2] = dot_info[16+j];
 161   3                      }
 162   2                      else
 163   2                      {
 164   3                              bmp_info_temp[24+j/2] = dot_info[16+j];
 165   3                      }
 166   2              }
 167   1                      
 168   1              for(j=0;j<32;j++)  
 169   1              {
 170   2                      bmp_info[2*j+1]=bmp_info[2*j]=bmp_info_temp[j];
 171   2              }
 172   1              
 173   1      }
*** WARNING C280 IN LINE 132 OF MATRIX16.C: 'hz_x': unreferenced local variable
 174          
 175          //---------------------------------------------------------------------------
 176          void ConvertLineMessage(uchar v_ln)
 177          {
C51 COMPILER V8.06   MATRIX16                                                              03/11/2007 21:30:29 PAGE 4   

 178   1              uint xdata i,j;
 179   1      //pos_y(行) pos_x(列)
 180   1              uint xdata pos_x, pos_y;
 181   1      
 182   1              pos_y=v_ln * LINEWIDTH;
 183   1              j=0;
 184   1              
 185   1              for(i=0;i<LINEWIDTH;i++)
 186   1              {
 187   2                      if(info_ln[i]>0xa0)
 188   2                      {
 189   3                              GetHzDots(info_ln[i],info_ln[i+1]);
 190   3                              pos_x=32*j;
 191   3                              ConvertHzDots(pos_x,pos_y);
 192   3                              i++;
 193   3                      }
 194   2                      else
 195   2                      {
 196   3                              GetChDots(info_ln[i]);
 197   3                              ConvertChDots(pos_x,pos_y);
 198   3                      }
 199   2                      j++;
 200   2      
 201   2              }
 202   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1159    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     32      76
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      11
   IDATA SIZE       =   ----      12
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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