51单片机入门——用库函数实现流水灯左右移动(向右移动N次后再向左移标题动N次

51单片机入门——用库函数实现流水灯左右移动(向右移动N次后再向左移标题动M次

由于电路图决定P0口为低电平时,led亮!
用库函数实现流水灯左右来回移动,可控制移动次数。

#include	     //头文件
#include		  //库函数头文件
#define uint unsigned int	  //宏定义
#define uchar unsigned char	  
void delay(uint x);		   //声明子函
uchar led; 		     //定义变量用于给P0口赋值
uint n=0,flag=0;	  //定义变量
sbit LED=P0^0;
sbit ADDR0=P1^0;     //位声明
sbit ADDR1=P1^1;	
sbit ADDR2=P1^2;				  
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
void delay(uint x)		//延时函数

{	uint i,j;
    for(i=0;i<x;i++)	 
	  for(j=0;j<110;j++);
}
void main()
{
  	uint i=0,j=0;
	ENLED=0;	   //74HC138的4、5脚低电平有效	
	ADDR3=1;  	  //74HC138的6脚高电平有效		  
	ADDR2=1;	  //74HC138输入011,位选LEDS6低电平
	ADDR1=1;
	ADDR0=0;
	led=0x7f;			   //led赋初值:0111 1111
while(1)
 { 	  	 
		P0=led;	  				//把变量led赋给P0口		
		if(flag==0)
		{
			led=_cror_(led,1); 		//循环函数,向右移动一位再赋给P0口
			delay(1000);  		 //延时500ms
			if(led==0xfe)		//1111 1110	 循环到最低位led时n+1计数;
				{
					n++;
					if(n==2)   	  	//向右循环两次
					{
						flag=1;		    //标志置1
						n=0;		   //n归 0
					}
				}
		}
		else
		{
			led=_crol_(led,1);	 //循环函数,向左移动一位再赋给P0口
			delay(1000);
			if(led==0x7f)	//0111 1111  循环到最高位led时
				{
					n++;			//n+1计数;
					if(n==2)	   //向左循环两次
					{
					flag=0;		   //标志置 0
					n=0;		   //n归 0
					}
				}
		}	 
 }
 }

## 2、位移操作实现流水灯左右来回移动


//#include	     //头文件
#include		  //库函数头文件
#define uint unsigned int	  //宏定义
#define uchar unsigned char	  
void delay(uint x);		   //声明子函
uchar led; 		     //定义变量用于给P0口赋值
uint n=0,flag=0;	  //定义变量
sbit LED=P0^0;
sbit ADDR0=P1^0;     //位声明
sbit ADDR1=P1^1;	
sbit ADDR2=P1^2;				  
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
void delay(uint x)		//延时函数

{	uint i,j;
    for(i=0;i<x;i++)	 
	  for(j=0;j<110;j++);
}
void main()
{
  	uint i=0,j=0;
	ENLED=0;	   //74HC138的4、5脚低电平有效	
	ADDR3=1;  	  //74HC138的6脚高电平有效		  
	ADDR2=1;	  //74HC138输入011,位选LEDS6低电平
	ADDR1=1;
	ADDR0=0;
	led=0x7f;			   //led赋初值:0111 1111
	while(1)
		{
			P0=~led;
			delay(1000);
			if(flag==0)
			{
				led=led>>1;
				if(led==0x01)
				{
					flag=1;
				}
			}
			else 
			{
			led=led<<1;
			if(led==0x80)
			{
				flag=0;
			}
}
}
}

你可能感兴趣的:(51单片机)