野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16472|回复: 4

if ( (tmp_char >> 15-j) & 0x01 == 0x01)这句没想懂~~~

[复制链接]
发表于 2013-10-17 23:30:24 | 显示全部楼层 |阅读模式
GetGBKCode_from_sd(buffer,str);  /* 取字模数据 */

    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
        tmp_char=(tmp_char<<8);
        tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+j,y+i,Color);
            }
            else
            {
                LCD_ColorPoint(x+j,y+i,bkColor);
            }
        }
    }

回复

使用道具 举报

发表于 2013-10-18 09:53:19 | 显示全部楼层
if ( (tmp_char >> 15-j) & 0x01 == 0x01) 就是判断tmp_char这个变量右移了(15-j)位之后的最低位是否为1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-18 10:51:57 | 显示全部楼层
回复@slyuji:void LCD_Char_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
   
#ifndef NO_CHNISEST_DISPLAY         /*如果汉字显示功能没有关闭*/
    u8 i,j;
    u8 buffer[32];
    u16 tmp_char=0;
   
   
   GetGBKCode_from_sd(buffer,str);  /* 取字模数据 */
   
    for (i=0;i<16;i++)
    {
        tmp_char=buffer[i*2];
        tmp_char=(tmp_char<<8);
        tmp_char|=buffer[2*i+1];
        for (j=0;j<16;j++)
        {
            if ( (tmp_char >> 15-j) & 0x01 == 0x01)
            {
                LCD_ColorPoint(x+j,y+i,Color);
            }
            else
            {
                LCD_ColorPoint(x+j,y+i,bkColor);
            }
        }
    }
   
#endif

为什么这么判断
回复 支持 反对

使用道具 举报

发表于 2013-10-18 17:03:35 | 显示全部楼层
天之痕 发表于 2013-10-18 10:51
回复@slyuji:void LCD_Char_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
   

这个是 字幕文件 里定义的。
你看看字幕软件 是如何生成字库的,就能理解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-19 11:02:15 | 显示全部楼层
山外メ雲ジ 发表于 2013-10-18 17:03
这个是 字幕文件 里定义的。
你看看字幕软件 是如何生成字库的,就能理解

真棒!!非常感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-25 21:14 , Processed in 0.029277 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表