流水灯简单操作(keil5)

使流水灯一开始全亮后灭三次(全闪三次),再依次点亮,再依次熄灭。

#include <STC15F2K60S2.H>
#define close P2=0x1f&(P2|0xe0);//关闭锁存器(y4,y5,y6,y7)
/***************************************************/

void initsystem(unsigned char i)
{
    
    
	switch(i)
	{
    
    
		case 4:
			P2=0X8f&(P2|0xe0);//打开y4锁存器
		break;
		case 5:
			P2=0xbf&(P2|0xe0);//打开y5锁存器
		break;
		case 6:
			P2=0xdf&(P2|0xe0);//打开y6锁存器
		break;
		case 7:
			P2=0xff&(P2|0xe0);//打开y7锁存器
		break;
	}
}
/***********************************************/

void led_control(unsigned char n,unsigned char q)//控制灯(p0端,锁存器)
{
    
    
	initsystem(q);
	P0 = n;
}
/*******************************************/

void Delay (unsigned int t)//延时
{
    
    
	while(t--);
	while(t--);
}
/********************************************/

void LED_Running ()//跑马灯
{
    
    
	unsigned char i;
	for (i=0;i<3;i++)//灯全亮灭3次
	{
    
    
		led_control(0x00,4);
		Delay (60000);
		led_control(0xff,4);
		Delay (60000);

	}
	for(i=1;i<8;i++)//灯依次亮
	{
    
    
		led_control(0xff<<i,4);
		Delay(60000);

	} 
	for(i=1;i<8;i++)//灯依次灭
	{
    
    
		led_control(~(0xff<<i),4);
		Delay(60000);

	}
}
/**********************************************/

void main()//主函数
{
    
    
	led_control(1,4);close;//初始化
	led_control(0x00,5);close;//初始化
	while(1)
	{
    
    
		LED_Running ();
	}
}

猜你喜欢

转载自blog.csdn.net/m0_53126906/article/details/113769171