单片机C语言右移指令怎么用?

想用右移指令实现流水灯,用for语句循环8次以下语句
unsigned char x,y;
x=0x01;
for(y=0,y<8;y++)
{
x=(x>>1);
P0=x;
}
为什么结果显示的是 先点亮2个,然后3个,4个,5个。。 请望高人指点。。。

用这种移位语句,就是这种结果。

你试试:_crol_()和_cror_()移位函数。

需要先加上头文件:
#include<intrins.h>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-04
因为P0一开始没有赋予初值,那个X就已经移位了,所以就到第二个了
第2个回答  2020-01-19
赋初始值后没有延迟 人眼看不到
第3个回答  2010-04-05
是不是没有延时啊,加一个延时看看,太快了人眼分辨不出来。
第二种肯能是:你的>> 是不是循环右移啊。
第4个回答  2021-07-03
#include<reg52.h>
unsigned int i,j,z;
void main()
{
while(1)
{
P0=~(0x80>>j++);
if(8==j)
{
j=0;
}
for(i=0;i<500;i++)
{
for(z=0;z<1000;z++);
}
}
}