为什么2秒内,由暗变亮在变暗,灯就一直亮

2019-07-15 23:14发布

#include <reg52.h>
#include "T0_time.h"
#include "MacroAndConst.h"
#define MaxLedPWM 99
#define MinLedPWM 0
uchar num,LedCount,LedPWM;
bit ledflag;
sbit led=P3^7;


void T0_timeinit(void)         //定时200微妙中断一次
{
        TMOD&=0xf0;
        TMOD |= 0x01;
        TH0=0xff;
        TL0=0x47;
        TR0=1;
        ET0=1;
}

void T0_time() interrupt 1
{
        TH0=0xff;
        TL0=0x47;
       
        if(++LedCount>=100)                   //20ms*100=2s,2s内灯由暗变亮
        {
                LedCount=0;
               
                if((num<=MaxLedPWM)&&(0==ledflag))         //ledflag为标志,控制灯变亮
                 {
                         num++;
                        if(num>MaxLedPWM)
                        {
                                num=MaxLedPWM;
                                ledflag=1;
                        }
                 }
                 if((num>=MinLedPWM)&&(1==ledflag))                 //ledflag标志控制等变暗
                 {
                         num--;
                        if(num<MinLedPWM)
                        {
                                num=MinLedPWM;
                                ledflag=0;       
                        }
                 }
                 LedPWM=num;
        }                                 //当跳出循环的时候,根据占空比发生相应的变化
        if(LedPWM>0)
        {
                led=0;
                LedPWM--;
        }
        else
        led=1;       
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。