完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
本帖最后由 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(); } } } 就是到了红色字体中看不懂、、、 PS:buffer[ib]是第一个字的数组、、、、
|
|
相关推荐
4个回答
|
|
|
其实我也不懂啊
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(tmp=8;tmp>0;tmp--)
{ ib=0; for(i=0;i<16;i++)// { buffer[ib] <<=1; //显示缓冲区左移一位。 if(buffer[ib+1] & 0x80) // 看到这句,我觉得应该是16x16点阵的左移。 //把后面一个字节的最高位补到前面一个字节的最低位 buffer[ib]++; //如果后字节最高位是1,则前面一个字节最低位补个1 ib++; //地址加一 buffer[ib]<<=1; //后一个字节的左移1位 if(buffer2 & 0x80) //和上面一样,把缓冲的最高位补进显示缓存 buffer[ib]++; //同上 ib++;//同上 buffer2<<=1; //缓冲区左移一位。以便再移入下一位 } |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:30 , Processed in 0.489163 second(s), Total 48, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2127