基于stc15f2k60s2芯片单片机编程(流水灯)

             蓝桥杯stc15f2k60s2芯片编程(流水灯)
  (1)简单的流水灯

左移之后右移
#include 
#include 						 
sbit BUZZ=P0^6;
sbit RELAY=P0^4;

void delay10ms(unsigned int); 
void main ()
{
	unsigned char n;
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;


  P0=0xfE;
while(1)
{
	
for(n=0;n<7;n++)
	{
	P0=_crol_(P0,1);
	delay10ms(50);
}
for(n=0;n<7;n++)
{
P0=_cror_(P0,1);
	delay10ms(50);
}
}	
}



void delay10ms(unsigned int c)
{
unsigned char a,b;
	for(;c>0;c--)
	for(b=38;b>0;b--)
    for(a=130;a>0;a--);
}

(2)较高级流水灯

从两边向中间流,然后从中间向两边流①

#include 
#include 

void Delay500ms();
void main()
	
{
unsigned char code abile[]={0x7E,0xBD,0xDB,0xE7,0XE7,0XDB,0XBD,0X7E};
unsigned char l;
//	LED=0X81;
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
while(1)
{

	for(l=0;l<8;l++)
	{
	P0=abile[l];
Delay500ms();

	}
}
}
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

从两边向中间流,然后从中间向两边流②

#include 
#include 
unsigned char i;
void Delay500ms();
void main()
{
P2=0XA0;P0=0X00; P2=0X80;P0=0XFF;
	while(1)
	{
	for(i=0;i<4;i++)
{
			P0=0xff<<i&0xff>>i;
			delay500ms();
		}		
	for(i=4;i>0;i--)
     {
	  P0=0xff<<i&0xff>>i;
			 delay500ms();
		 }	
	}
}
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

(3)通过独立按键控制流水灯流动速度

#include 
#include 
void Timer0Init();
unsigned int a,n,i,qq;
void Delay1ms();
void anjian();
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;


void main()
{
P2=0XA0;P0=0X00;
	Timer0Init();
	while(1)
	{	anjian();
	qq=0XFE;
	qq=_crol_(qq,i);
	P2=0X80;P0=qq;}
}
void Timer0Init(void)		//[email protected]
{
	AUXR |= 0x80;		//?????1T??
	TMOD &= 0xF0;		//???????
	TL0 = 0xCD;		//??????
	TH0 = 0xD4;		//??????
	TF0 = 0;		//??TF0??
	TR0 = 1;		//???0????
  EA=1;
	ET0=1;
}
void ding() interrupt 1
{
	a++;
	if(a==n)
	{
		a=0;i++;
  if(i>8)i=0;
  }
}
void anjian()
{
if(S7==0)
	{
		Delay1ms();
		if(S7==0)
		{
			a=0;n=300;
		}while(!S7);
	}
	if(S6==0)
	{
Delay1ms();
		if(S6==0)
		{
			a=0;n=600;
		}while(!S6);
	}
if(S5==0)
	{
		Delay1ms();
		if(S5==0)
		{
			a=0;n=900;
		}while(!S5);
	}
if(S4==0)
	{
		Delay1ms();
		if(S4==0)
		{
			a=0;n=1200;
		}while(!S4);
	}
}
void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

你可能感兴趣的:(基于stc15f2k60s2芯片单片机编程(流水灯))