求看一个pwm程序

2019-03-24 17:56发布

void main()
{
        TMOD=0x01;                 //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
        TR0=1;                         //打开定时器
        TH0=0Xff;                 //定时器设置,每隔100微秒发起一次中断。
        TL0=0Xfd;
        ET0=1;                         //开定时器0中断
        EA=1;                         //开总中断
        while(1)
        {
                keyscan();
                if((num!=0)&&(num!=10))        //对于占空比为0和100%这两种极端情况,最好分离出,单独考虑
                {
                        if(pp<=num)
                                pwm=1;
                        else
                                pwm=0;
                }
                else if(num==0)        //当占空比为0
                        pwm=0;
                else
                        pwm=1;
                if(pp==10)                //当占空比为100%
                        pp=0;
        display(num);//显示num当前值,占空比为num/10。
        }
}

void time0() interrupt 1
{        TH0=0Xff;
        TL0=0Xfd;
        pp++;
}



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。