求看一个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++;
}



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
automomaek
1楼-- · 2019-03-24 22:21
这个10次中断,每次3us,周期是30us,为什么产生的不是33khz的波
automomaek
2楼-- · 2019-03-25 04:11
为什么不行额
K米加
3楼-- · 2019-03-25 08:13
 精彩回答 2  元偷偷看……
automomaek
4楼-- · 2019-03-25 13:36
K米加 发表于 2015-7-11 16:12
8051的芯片?

对的,是89C52,为什么不行呢
liqing19891017
5楼-- · 2019-03-25 16:59
程序是自己写的吗
liqing19891017
6楼-- · 2019-03-25 22:37
 精彩回答 2  元偷偷看……

一周热门 更多>