3个灯在同一时刻有一个灯最亮,有一个灯半亮,有一个灯不亮。现在我有控制一个灯渐亮渐灭的代码,怎么改成控制3个灯的?请老鸟指教一下 void slow() { LED0=1; Delay(60000); //特意加延时,可以看到熄灭的过程 for(PWM1=1;PWM1<CYCLE;PWM1++) {
LED0=0; //点亮LED Delay(PWM1);//延时长度,600次循环中从1加至599 LED0=1; //熄灭LED Delay(CYCLE-PWM1);//延时长度,600次循环中从599减至1 } LED0=0; for(PWM1=CYCLE-1;PWM1>0;PWM1--){ //与逐渐变亮相反的过程
LED0=0; Delay(PWM1); LED0=1; Delay(CYCLE-PWM1); } } Delay 函数占据了 cpu, 此原理不行,另想别法,比如用 pwm 功能, dac 功能。。。或硬件
reentrant void slow(uchar cs) { switch(cs) { case 0:LED0=1;break; case 1:LED1=1;break; case 2:LED2=1;break; default:break; } Delay(60000); //特意加延时,可以看到熄灭的过程 for(PWM1=1;PWM1<CYCLE;PWM1++) { switch(cs) { case 0:LED0=0;break; case 1:LED1=0;break; case 2:LED2=0;break; default:break; } Delay(PWM1);//延时长度,600次循环中从1加至599 switch(cs) { case 0:LED0=1;break; case 1:LED1=1;break; case 2:LED2=1;break; default:break; } Delay(CYCLE-PWM1);//延时长度,600次循环中从599减至1 } switch(cs) { case 0:LED0=1;break; case 1:LED1=1;break; case 2:LED2=1;break; default:break; } for(PWM1=CYCLE-1;PWM1>0;PWM1--){ //与逐渐变亮相反的过程 switch(cs) { case 0:LED0=0;break; case 1:LED1=0;break; case 2:LED2=0;break; default:break; } Delay(PWM1); switch(cs) { case 0:LED0=1;break; case 1:LED1=1;break; case 2:LED2=1;break; default:break; } Delay(CYCLE-PWM1); } }
|