完善资料让更多小伙伴认识你,还能领取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; //缓冲区左移一位。以便再移入下一位 } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD 解决PCB布线时无法捕捉到焊盘中心的问题
176 浏览 0 评论
Openharmony软件评估指南-米尔瑞芯微RK3568开发板
700 浏览 0 评论
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
1097 浏览 0 评论
【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开发板简介与上电测试
1004 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之传参
555 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11046 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-10 20:52 , Processed in 0.601716 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191