16x16点阵、、看不懂啊、、、、帮帮忙吧、、、、

2019-07-16 01:17发布

本帖最后由 lioe001 于 2013-4-19 18:45 编辑

void xmove(char dir,unsigned char *ptr,char n,char speed)                                                                                                                                       
{      /*       方向                    n是要移动的汉字个数        移动速度*/         
        unsigned char  i=0,  ib=0;
        unsigned int   tmp=0, speedm=0;
        unsigned char  buffer2[16];         //半个汉字的缓存

        n*=2;     //左半字和右半字,所以要x2            
        for(i=0;i<16;i++)   //清零
                buffer2=0;

        if(dir == 1)     
        {
/****     向左移动    ****/
                for(n;n>0;n--)   
                {               
                        if(ptr != 0)
                        {
                                tmp = n%2;        //判断是左半字还是右半字
                                for(i=0;i<16;i++)
                                        buffer2=ptr[i*2+tmp];
        
                                if(tmp)                //tmp为1时,将地址指向下一个汉字
                                        ptr+=32;
                        }
                        
                        for(tmp=8;tmp>0;tmp--)  //要移动8列        
                        {                                   
                                ib=0;        
                                for(i=0;i<16;i++)
                                {                //要移16行,共16个字节
                                        buffer[ib] <<=1; //移第一个半字
                                        if(buffer[ib+1] & 0x80)   //
                                                buffer[ib]++;                                 //        
                                        ib++;                                                          //
                                        buffer[ib]<<=1;                //移后半字         //         
                                        if(buffer2 & 0x80)           
                                                buffer[ib]++;
                                        ib++;
        
                                        buffer2<<=1;
                //缓冲左半字向左移一位
                                }
                                
                                speedm=speed;        //更新点阵
                                while(speedm--)
                                        display();
                        }
                }
        }
就是到了红 {MOD}字体中看不懂、、、
PS:buffer[ib]是第一个字的数组、、、、


QQ截图20130419184503.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。