[求助] 求看一个pwm程序

automomaek   2015-7-11 08:21 楼主
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++;
}



回复评论 (6)

这个10次中断,每次3us,周期是30us,为什么产生的不是33khz的波
点赞  2015-7-11 08:22
为什么不行额
点赞  2015-7-11 10:00
8051的芯片?
点赞  2015-7-11 16:12
引用: K米加 发表于 2015-7-11 16:12
8051的芯片?

对的,是89C52,为什么不行呢
点赞  2015-7-11 17:39
程序是自己写的吗
点赞  2015-7-19 17:45
用示波器测量有PWM波输出吗
点赞  2015-7-19 17:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复