一、原理
常见LED灯模块一共有八位,如果二极管的负极接VCC,正极接51芯片引脚,则给引脚输入低电平,LED灯亮。如果二极管负极接GND,则高电平有效。
#include <reg52.h>
#include <intrins.h>
#define led P1
#define uchar unsigned char
uchar i,j;
void delay(uchar k){
for(i=k;i>0;i--){
for(j=100;j>0;j--){}
}
}
void main(){
// led = 0xfe;//左移流水灯
led = 0xef;//右移流水灯
while(1){
/* 左移实现
for(i=0;i<7;i++){
led = _crol_(led,1);
delay(50);
}
*/
//右移实现
for(i=0;i<7;i++){
led = _cror_(led,1);
delay(50);
}
}
}
三、语法总结
1、此次流水灯实现,使用了 —crol—()、 —cror—()函数;—crol—()函数是带循环左移函数,—cror—()是带循环右移函数;函数在“intrins.h”库中调用。
2、—crol—() 与 << 的不同?
举个例子:P1 = 1111 1110//0xfe
P1 = crol(P1,1);
结果:1111 1101、1111 1011;//这个是循环左移
P1 << = 1;
结果: 1111 1100 、 1111 1000//位左移,后面补0