char m=0xfe;
while(1)
{
for(i=0;i<8;i++)
{
P2=m;
m=_cro1_(m,1);
P1=led_mod[i];
delay(5);
}
}
m=_crol_(m,1); //_crol_循环左移,该函数在#include <intrins.h>函数库中。
m=_cror_(m,1); //_cror_循环右移,该函数在#include <intrins.h>函数库中。
比如
m=0x81; m=_crol_(m,1); //m就等于0x03
应该是_crol_吧 你那写错了吧 循环左移的意思
https://blog.csdn.net/weixin_34343689/article/details/86036969
crol的l是"left"的意思,不是"1",表示将一个8位(二进制)的数循环左移,移动的时候不是单独移动0,而是所有都移动。
比如代码中m=0xfe,二进制为11111110,
直接左移1位的话变成了11111100,最高位的1被移出去了;
循环左移1位是把最高位的1补到最低位,即11111101