/*---------------------------------------------------------------------------------------------
程序功能：通过PWM（脉宽调制）调节LED的亮度，实现LED模拟呼吸的过程，
即渐亮再渐暗再渐亮再渐暗......如此往复，再利用LED的余辉和人眼的暂留效应，看上去就和人的呼吸一样。
----------------------------------------------------------------------------------------------*/

#include<reg52.h> 
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P1^0; //LED位定义
uint cycle=600,pwm_low=0;//定义周期并赋值

void delay(uint t)  //延时函数
{
 while(--t);
}

void main (void)
{              
	while(1)         //主循环
	{
 	 	LED1=1;
 	 	delay(60000);       
 		for(pwm_low=1;pwm_low<cycle;pwm_low++)  //LED逐渐变亮
		{ 
			
	   		LED1=0;         //点亮LED  
	   		delay(pwm_low); //pwm_low表示低电平时间，这个循环中低电平时长从1累加到cycle（周期）的值，即600次
	   		LED1=1;         //熄灭LED
	  	    delay(cycle-pwm_low);//延时长度，600次循环中从599减至1
	     
  		 }
 	
 		
		for(pwm_low=cycle-1;pwm_low>0;pwm_low--)  //LED逐渐变暗（与逐渐变亮相反的过程)
		{ 
	   		LED1=0;
	   		delay(pwm_low);
	   		LED1=1;
	  	    delay(cycle-pwm_low);
	     
   		}
	}
}
