想做一个流水灯,但是就是出不来要的那个效果,这样写代码对吗?
想做一个流水灯,但是就是出不来效果,代码写的不对吗?
重新改了一下
#include
void delay50ms(unsigned int t)
{
unsigned char a,b;
while(t--)
{
for(b=165;b>0;b--)
for(a=150;a>0;a--);
}
}
void main(void)
{
char i,j;
char a=0x80,b;
while(1)
{
b=0x01;
P2=b;
delay50ms(10);
for(i=7;i>0;i--)
{
P2=a|b;
delay50ms(10);
for(j=i-1;j>0;j--)
{
a=(a>>1)&0x7f;
P2=a|b;
delay50ms(10);
}
b=a|b;
a=0x80;
}
}
}
函数 rightrot(x,n) 返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后得到的值。
unsigned rightrot(unsigned x, unsigned n)
{
while (n > 0)
{
if ((x & 1) == 1)
x = (x >> 1) | ~(~0U >> 1);
else
x = (x >> 1);n--;
}
return x;
}
这是我给你的函数 你可以输入X初值 然后 想移动几位就改变n的值就可以了