循环左移指令,和移位区别如下
P1=_crol_(P1,1); 效果是11101110、11011101、10111011......P1<<=1; 效果就是11101110、11011100、10111000.....
建议楼主能用系统指令就用系统指令,像你用的那个delay函数会让单片机使用效率变低,因为进入delay函数后会一直到delay函数运行完才执行其他程序。
这个函数使用还是不方便,自己写了一个简单的位移来实现该功能!
while(1)
{
P0=(0x01<<n);
delay(10);
}
可能该函数本身也是这么来实现的吧!
变量=_crol_(变量名,移动位数),这是循环左移。
左移位函数
这就是一个循环左移的函数,实现原理还是挺简单的。实现原理类似与下面
int _clor_(int kk,unsigned char n)
kk = kk<<n;
return kk;
我们刚做了这个作业,这个函数是将八位数循环移位
uchar _crol_(uchar p, uchar n)
uchar Part=p, num=n;
uchar a,b;
a=(Part>>(8-num));
b=(Part<<num);
Part=(a||b);
return Part;
有什么不清楚的地方,我再给你画个图,形象地解释一下。嘿嘿~
希望能够帮到你。