1 //******************************
 2 //   51单片机模拟呼吸灯
 3 //     2012.9.23
 4 //      
5 // p0.0接一个LED灯,状态0为亮 6 //****************************** 7 8 9 #include<reg52.h> 10 #define N 2 //亮暗的速率 11 #define T 800 //PWM的周期 12 13 14 //sbit led0=P0^0; 15 //====================== 16 void pwm(int x) 17 { 18 while(x--); 19 } 20 //====================== 21 22 void flash1(void){ 23 int t = 0; 24 char f = 0; 25 int count = 5;//5次,每个函数执行的次数 26 while(1){ 27 P0 = 0x00; 28 pwm(t); //Toff,亮的时间 29 //led0=1; 30 P0 = 0xff; 31 pwm(T-t+100);//Ton,暗的时间 32 if(!f) t+=N+1;//亮速率较快,模拟呼吸 33 else t-=N;//暗速率较慢 34 if(t>T) {f=1;t=T;}//超过最大值时,返回最大值,标志为暗 35 if(t<0) {f=0;t=0;}//超过最小值时,返回最小值,标志为亮 36 // count--; 37 } 38 } 39 40 void main() 41 { 42 43 while(1) 44 { 45 flash1(); 46 47 } 48 }

 

posted on 2012-12-18 15:10  _兜  阅读(2219)  评论(0编辑  收藏  举报