C51单片机——定时器延时实现呼吸灯

#include<reg52.h>
unsigned char Cycle=200;	//呼吸灯周期:T=200*100us=20ms
void Delay_100us()
{
    
    
	TH0=(65536-100)/256;
	TL0=(65536-100)%256;
	TR0=1;//启动定时器,开始计时
	while(TF0!=1);//判断定时器是否溢出
	TF0=0;//溢出时清0,进行下次计时
}

void Delay(unsigned char t)
{
    
    
	unsigned char i;
	for(i=0;i<t;i++)
		Delay_100us();
}

void main()
{
    
    
	int LED;
	unsigned char i;	
	TMOD=0x01;
	while(1)
	{
    
    	
		//由暗变亮
		for(i=1;i<Cycle;i++)
		{
    
    
			LED=0x00;
			P2=LED;Delay(i);	
			P2=~LED;Delay(Cycle-i);
		}
		//由亮变暗
		
		for(i=1;i<Cycle;i++)
		{
    
    
			LED=0x00;
			P2=LED;Delay(Cycle-i);	
			P2=~LED;Delay(i);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_53391957/article/details/117001992