Keil软件使用及流水灯设计
在点亮流水灯的同时,我们要对移位操作进行了解
左移
在C51中操作符“<<",每执行一次左移指令,会将最高位移入单片机寄存器的CY位(CY是进位标志),CY会丢弃原来的数据,并且在最低为补0;其他位依次向左移动一位,如图所示:
右移
在C51中操作符“>>",每执行一次左移指令,会将最低位移入单片机寄存器的CY位,CY会丢弃原来的数据,并且在最高为补0;其他位依次向右移动一位,如图所示:
循环左移
最高位移入最低位,其他位次向左移一位
循环右移
最低位移入最高位,其他位次向右移一位
下面让我们实践一下
#include <REG51F.H> //以51为例
#include <intrins.H> //引入_crol_
void Delay100ms(unsigned char cnt);
void main(){
P1 = 0xfe; //赋值 11111110
while (1){
Delay100ms(20);
P1 = _crol_(P1,1);
}
}
void Delay100ms(unsigned char cnt) //@12.000MHz
{
unsigned char i, j;
while(cnt--){
i = 195;
j = 138;
do
{
while (--j);
} while (--i);
}
}
Keil软件使用及流水灯设计