流水灯的多种实现方式
四种实现流水灯的方法,
第一种是直接法。
第二种是调用左右移》或《 。
第三种是调用_crol_或_cror_及intrinsic.h文件。
第四种运用数组。
去掉相应的注释即可用
#include <REGX52.H> //头文件
#include <intrins.h> //调用左右移库函数
unsigned char code LED[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E}; //LED点亮数组
void main()
{
unsigned char X; //定义左移位变量
unsigned int i; //定义延时变量
unsigned char temp; //定义数组自加变量
X=0;
//i=3000;
temp=0;
//P1=0xFE; //点亮第一个LED
while(1)
{
//****************方法一:直接法*****************
/*
P1=0xFE; //点亮第1个LED
while(i--);//延时
P1=0xFD; //点亮第2个LED
while(i--);//延时
P1=0xFB; //点亮第3个LED
while(i--);//延时
P1=0xF7; //点亮第4个LED
while(i--);//延时
P1=0xEF; //点亮第5个LED
while(i--);//延时
P1=0xDF; //点亮第6个LED
while(i--);//延时
P1=0xBF; //点亮第7个LED
while(i--);//延时
P1=0x7E; //点亮第8个LED
while(i--);//延时
*/
//****************方法二:左右移*****************
/*
P1=~(0x01<<X);
X++;
if(X>=8)
{
X=0;
}
while(i--);
*/
//****************方法三:调用库函数intrins.h*****************
/*
while(i--);
P1=_crol_(P1,2); //2为移动的位数, _crol_为左移函数
*/
//****************方法四:运用数组点亮LED*****************
P1=LED[temp++];
if(temp>=8)
{
temp=0;
}
i=4000;
while(i--);
}
}