首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一个不常见的C语言语句

一个不常见的C语言语句

最近再看别人写的程序,有一个个函数是这样写的:
/**********************************************************
  写汉字子函数
**********************************************************/
void ChineseChar(uint x,uint y,int size,uint For_color,uint Bk_color ,char c)
{
   int e=0,i,j;
   int  ed;
   uint  ncols;
   uint  nrows;
   uint  nbytes;
   uchar *pfont;
   uchar *pchar;
   uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
   pfont=(uchar *)fonttable[size];
   if(size==0)
   {
     ncols =16-1;
     nrows =16-1;
     nbytes =32;         //每个字取模的字节数=(16*16)/8
   }
   else
   if(size==1)
   {
     ncols =24-1;
     nrows =24-1;
     nbytes =72;  //每个字取模的字节数=(24*24)/8
   }
   else
   if(size==2)
   {
     ncols =32-1;
     nrows =32-1;
     nbytes =132;   //每个字取模的字节数=(32*32)/8
   }
   pchar=pfont + (nbytes*(c-1));
   Address_set(x,  y, x+nrows,y+ncols);
   for(i=0;i<nbytes;i++)
   {
     ed=*pchar++;
         if(size==0)
         {
       if(i%2==0)
       e=8;
       else
       e=4;
         }
         else
         e=8;
     for(j=0;j<e;j++)
     {
          if((ed>>j)&0x01)
      {
           LCD_Write_DATA(For_color>>8 , For_color  );  //textcolor
          }
     else
     {
       LCD_Write_DATA( Bk_color>>8 ,  Bk_color);  //backcolor
         }
        }
  }
}
上面的红色字体的两个语句表示什么意思呢?求指导。其中hz16,hz24 ,hz32在别的地方定义为
const unsigned char  hz16[]={0x00,0x10,...此处省略很多字};
const unsigned char  hz24[]={0x00,0x10,...此处省略很多字};
const unsigned char  hz32[]={0x00,0x10,...此处省略很多字};
大家讨论讨论。
uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
这里应该是创建了一个字库组合,用来方便调用,hz16[]等这几个数组应该是用来存放刚读出的字模用的
(uchar *)//这个是做字符类型限制,下面的一样
pfont=(uchar *)fonttable[size];
这里是做了个size判断,是否为16*16、24*24、32*32的屏,具体看传参
从上面上段程序看,这个应该是个LED点阵屏控制板,支持两种或三种颜色,而且支持16*16、24*24、32*32屏
返回列表