单片机C程序怎么在这里面左移完了,接右移,要怎么写

单片机C程序怎么在这里面左移完了,接右移,要怎么写,第1张

点阵太多,需要使用16+16=32个io,建议使用lcd驱动ic,如ht1621之类,51单片机通过三线接口与ic通讯。

编程方面,程序需要建立16x16点阵的缓冲,需要修改数据就先修改缓冲数据,然后改变输出。上移可以通过把缓冲按字节移位实现,左移就需要把缓冲数据按位移位,移位完成后再通过lcd

driver更新输出。

单片机右移分为算术右移和逻辑右移。(左移没有这个问题,0x01<<i就正确)

算术右移最高位是符号位,右移后符号位保持不变(如果一直右移会导致所有位都变成和最高位一样的值)。

逻辑右移才是最高位补0。

led因为是char,编译器会把">>"解释成算术右移,即最高位是符号位(0x80最高位正好是1),保持不变。最后导致结果不对。

led要定义为unsigned char就应该也对了。

用带进位的rrc即可

MOV A,33H

JB ACC0,TO2

SETC

JMP TO1

TO2:CLRC

TO1:MOV A,30H

RRC A

MOV 30H,A

MOV A,31H

RRC A

MOV 31H,A

MOV A,32H

RRC A

MOV 32H,A

MOV A,33H

RRC A

MOV 33H,A

随便写写的,但思路如此,可能有纰漏自己改改

51单片机

的左移右移,首先在开始要调用"intrinsh"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(k=250;k>0;k--);

理解这三句,第一句是指:m=20;m>0然后m--是真就执行:

for(n=20;n>0;n--)

for(k=250;k>0;k--);

这两句,m--一直减,减一次,里面就执行一次,这里是20次。

流水灯的左右移,第一用"intrinsh"的文件包,第二要要会定义赋值变量,第三延时,这是关键。

以上就是关于单片机C程序怎么在这里面左移完了,接右移,要怎么写全部的内容,包括:单片机C程序怎么在这里面左移完了,接右移,要怎么写、C51的单片机中右移指令>>为什么有时候最高位会补1、51单片机执行循环右移指令的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9471002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存