8 51 LED流水灯

1.C语言常用的预处理命令

2.循环左移右移函数

1.C语言常用预处理命令

#define使用

#define A P0(注意后面不用加分号)

 

2.循环左移右移函数

_crol_(a,b);循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。

_cror_(a,b);循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数

#include "reg51.h"    //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;

#define  led P2	   //将单片机的P2端口定义为led

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);
}

void main()
{
	u8 i;
	led=0xfe; //1111 1110     P2^0 = 0
	delay(50000);
	while(1)
	{
		for (i=0;i<7;i++)
		{
			led=_crol_(led,1);	 
			/*0xfe 1111 1110                第1个led灯亮 ,其余熄灭
			i = 0, led = 1111 1101, P2^1= 0,第2个led灯亮 ,其余熄灭。
			i = 1, led = 1111 1011, P2^2= 0,第3个led灯亮 ,其余熄灭。
			i = 2, led = 1111 0111, P2^3= 0,第4个led灯亮 ,其余熄灭。
			i = 3, led = 1110 1111, P2^4= 0,第5个led灯亮 ,其余熄灭。
			i = 4, led = 1101 1111, P2^5= 0,第6个led灯亮 ,其余熄灭。
			i = 5, led = 1011 1111, P2^6= 0,第7个led灯亮 ,其余熄灭。
			i = 6, led = 0111 1111, P2^7= 0,第8个led灯亮 ,其余熄灭。
			i = 7, 退出循环。
			*/
			delay(50000);
		}
		for (i=0;i<7;i++)
		{
			/*           0111 1111               第8个led灯亮 ,其余熄灭。
			i = 0, led = 1011 1111, P2^7= 0,第7个led灯亮 ,其余熄灭。
			i = 1, led = 1101 1111, P2^6= 0,第3个led灯亮 ,其余熄灭。
			i = 2, led = 1110 1111, P2^5= 0,第4个led灯亮 ,其余熄灭。
			i = 3, led = 1111 0111, P2^4= 0,第5个led灯亮 ,其余熄灭。
			i = 4, led = 1111 1011, P2^3= 0,第6个led灯亮 ,其余熄灭。
			i = 5, led = 1111 1101, P2^2= 0,第7个led灯亮 ,其余熄灭。
			i = 6, led = 1111 1110, P2^1= 0,第8个led灯亮 ,其余熄灭。
			i = 7, 退出循环。
			*/
			led=_cror_(led,1);
			delay(50000);
		}
		
	}		
}

里面。

发布了139 篇原创文章 · 获赞 38 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/tjjingpan/article/details/90344238