标题:
小白请教C语言循环移位函数
[打印本页]
作者:
芙蓉焊料
时间:
2023-2-22 11:31
标题:
小白请教C语言循环移位函数
第一种:正常循环
void main()
{
uhcar c=0xfe;
while(1)
{
P0=c;
c=_crol_(c,1);
delay(200);
}
}
第二种:只循环一位就停止了
void main()
{
uhcar c=0xfe;
while(1)
{
P0=_crol_(c,1);
delay(200);
}
}
作者:
zhuls
时间:
2023-2-22 14:55
因为第二个你的C,永远是0xfe,所以P0看上去只“循环一位”就停了。第一个的C每移一次就变一次所以会“一直移”~~”
作者:
zhuls
时间:
2023-2-22 14:59
_crol_的用法:
a=_crol_(b,n) =>>a是目标,b是源,n是要移多少位。
即源寄存器中的数据,带C左移n位后存入目标寄存器中。
作者:
qsssuv
时间:
2023-2-22 15:21
void main()
{
P0 = 0xFE;
while(1)
{
P0 = P0<<1|P0>>7;
delay(200);
}
}
作者:
暖西夏
时间:
2023-2-22 17:28
因为第一个c会一直变化,但第二个程序,c是固定值
作者:
yun~
时间:
2023-2-22 22:55
第二个把c位移了,要重新定义一下
作者:
188610329
时间:
2023-2-23 13:05
为什么要多个C 多此一举呢?
直接用P0不好么?
void main()
{
P0=0xfe;
while(1)
{
P0=_crol_(P0,1);
delay(200);
}
}
作者:
zhuls
时间:
2023-2-23 14:18
188610329 发表于 2023-2-23 13:05
为什么要多个C 多此一举呢?
直接用P0不好么?
逻辑上有c没c是一样的,但除非万不得已,直接操作MCU的IO是有一定的风险的:有可能你读到的IO值并不是你之前输出的值--被外围硬件改变了。
作者:
a399288395
时间:
2023-2-25 14:39
第二种:只循环一位就停止了
void main()
{
uhcar c=0xfe;
while(1)
{
P0=_crol_(c,1); //在这个位置,C 一直都没有变化重新赋值,所以 C永远都是0xfe
delay(200);
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1