#来看看如何做一个走马灯吧!
#include "reg52.h"
#include "intrins.h"
#define led P2 //定义一个符号常量,使得后面的代码中led等效为P2
void delay(int i); //定义一个延时函数
void main()
{
int i=0;
led=0xfe; //十六进制,0123456789abcdef分别是十进制的0-15 f对应成2进制是1111,e对应成2进制是1110,合起来就是11111110 与高低电平相对应,即第一位至第十五位是高电平,第十六位是低电平。
delay(50000);
while(1)
{
for(i=0;i<7;i++)
{led = _crol_(led,1); //位操作,使得led向左移一位。
delay(50000);
}
}
}
void delay(int i)
{
while(i--);
}
需要注意的是,crol函数和cror函数都在 instrins.h头文件里。需要引入这个头文件。
crol,_cror_和 >>,<<都是位移函数 两者的区别在哪?
_crol_带循环
<<是位左移,后面补0。
例如P1=0xEE;
//P1=crol(P1,1); 效果是11101110、11011101、10111011…
//P1<<=1; 效果就是11101110、11011100、10111000…