您好,老师void main() { a=0xfe; while(1) { P1=a; delay(900); a=_crol_(a,1); } }怎么接着右移呢。

在这个程序中,左移完了,怎么接着右移呢
单片机用C程序void main() { a=0xfe; while(1) { P1=a; delay(900); a=_crol_(a,1); } }怎么接着右移,要增加什么语句呢

问题不够详细,你要右移哪个变量呢?另外函数_crol_(a,1)你没说明它的功能。
我猜测一下吧:_crol_(a,1)是将参数a右移一位,在循环内一直执行左移操作。
第一次左移高位溢出,左移的结果到最后是a=0x00, 如果接着右移的话增加语句:a=a>>1;
左移完接着右移一直在0xee和0xfc之间变换。不知道你这样操作有什么意义?追问

#include
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
uchar a,b;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
a=0xfe;
while(1)
{
P1=a;
delay(900);
a=_crol_(a,1);
}
}怎么才能紧接着右移,而且是左移,右移循环

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-10
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
uchar a,b;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
a=0xfe;
while(1)//while循环
{
P1=a;//循环P1=0XFE(1111 1110)
delay(900);
a=_crol_(a,1);//a左移一位后的值为0XFC(1111 1101)
}
你这样写程序 a(P1口)的值始终是 0XFE或0XFC
不知道你要求的是不想这样写的?
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,b,c;
void delay(uint x);
void main()
{
a=0x7f;
while(1)
{
for(b=0;b<7;b++)
{
a=_crol_(a,1);
P0=a;
delay(900);
}
a=0xfe;
for(c=2;c>0;c=1)//for 语句死循环
{
for(b=0;b<7;b++)
{
a=_cror_(a,1);
P0=a;
delay(900);
}
}
}
}

void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
第2个回答  2011-09-09
a=_crol_(a,1);
换成a=_cror_(a,1);就是右移追问

#include
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
uchar a,b;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
a=0xfe;
while(1)
{
P1=a;
delay(900);
a=_crol_(a,1);
}
}怎么才能紧接着右移,而且是左移,右移循环

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网