使流水灯一开始全亮后灭三次(全闪三次),再依次点亮,再依次熄灭。
#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 ();
}
}