有个呼吸灯程序,怎么做个流水呼吸灯
#include<reg52.h>
#define N 2 //亮暗的速率
#define T 800 //PWM的周期
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
//======================
void pwm(int x)
{
while(x--);
}
//======================
void flash1(void){
int t = 0;
char f = 0;
int count = 5;//5次,每个函数执行的次数
while(1)
{
LED1= 0;
pwm(t); //Toff,亮的时间
LED1= 1 ;
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;}//超过最小值时,返回最小值,标志为亮
LED2= 0;
pwm(t); //Toff,亮的时间
LED2= 1 ;
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;}//超过最小值时,返回最小值,标志为亮
LED3= 0;
pwm(t); //Toff,亮的时间
LED3= 1 ;
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;}//超过最小值时,返回最小值,标志为亮
}
}
void main()
{
while(1)
{
flash1();
}
}
我试过在中间加上延时 但是就直接变成流水灯了。求大神指导