微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为什么2秒内,由暗变亮在变暗,灯就一直亮

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

时间:10-02 整理:3721RD 点击:
#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;       
}

PWM,是不是程序有问题呀!

程序没错误和警告啊、

我知道了,坑爹啊,uchar num(unsigned char);当num为0时继续减下去,会自动变为最大值,这个时候其他几个数LedPWM爆表了!所以。总是亮的

谢了。只有你一个答了问题十分感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top