//******************************
// 51单片机模拟呼吸灯
// 2012.9.23
// // p0.0接一个LED灯,状态0为亮
//******************************
#include
#define N 2 //亮暗的速率
#define T 800 //PWM的周期
//sbit led0=P0^0;
//======================
void pwm(int x)
{
while(x--);
}
//======================
void flash1(void){
int t = 0;
char f = 0;
int count = 5;//5次,每个函数执行的次数
while(1){
P0 = 0x00;
pwm(t); //Toff,亮的时间
//led0=1;
P0 = 0xff;
pwm(T-t+100);//Ton,暗的时间
if(!f) t+=N+1;//亮速率较快,模拟呼吸
else t-=N;//暗速率较慢
if(t>T) {f=1;t=T;}//超过最大值时,返回最大值,标志为暗
if(t<0) {f=0;t=0;}//超过最小值时,返回最小值,标志为亮
// count--;
}
}
void main()
{
while(1)
{
flash1();
}
}
22-12-19 14:47