C51不能实现带进位的移位,有两种办法完成这个功能,一种是在C中嵌入汇编,另一种就是使用特殊写法。
在这里我只介绍使用C特殊写法完成左移或者右移的方法,请你参考,如果遇到问题,欢迎交流。
看下面的例子:
CY=ACC&1;
...
CY=ACC&0x80;
这两个语句编译后会产生带进位右移和左移指令,如果你的数据不是在这两个寄存器,请你根据情况变通。
例如:
unsigned char c;
ACC=c;
CY=ACC&1;
......
我对C不熟.不过可以这样做:
放置需要转换的数据到可以进行位操作的地址.然后做8循环,将第N位复制到另一个数据地址的8-N位上就可以了.