最近在学单片机,学到PWM调光程序,自己也写了一个,但是发现有个问题:
程序是这样的:
//2013.3.30
#include<reg52.h>
sbit LED=P1^0;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;
while(1)
{
LED=1;
Delay(60000);
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)//逐渐变亮
{
LED=0;
Delay(PWM_LOW);
LED=1;
Delay(CYCLE-PWM_LOW);
}
LED=0;
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)//逐渐变暗
{
LED=0;
Delay(PWM_LOW);
LED=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(--t);
}
程序如果这样写,那会很顺畅,从暗变亮,到最亮之后从亮变暗
但如果我改一个字:
把逐渐变暗的for循环里的红色-1删掉,改成
for(PWM_LOW=CYCLE;PWM_LOW>0;PWM_LOW--)//逐渐变暗
程序就会出问题,从暗变亮之后到达最亮,然后会有一下熄灭的过程,然后才会变暗
表示不能理解为什么一个“-1”会有这么大效果?
求高手指导