关于输出特定频率的PWM问题!!!!请教

2020-01-24 12:01发布

最近在学PWM,然后想做一个输出10K并且占空比可调的方波

原理基本搞懂,但是,遇到一个关于全局变量的问题,先贴代码:


#include"typename.h"

sbit DY_PORT = P1^0;

void Time0_Init(void)
{
        TMOD = 0x01;
        TH0 = (65536 - 50) / 256;
        TL0 = (65536 - 50) % 256;
        EA=1;
        ET0=1;
        TR0=1;
}

void PWM_Time(void) interrupt 1
{
        TR0 = 0;
        TH0 = (65536 - 50) / 256;
        TL0 = (65536 - 50) % 256;
        DY_PORT = ~DY_PORT;
        TR0 = 1;
}

void main()
{        DY_PORT = 0;
        Time0_Init();
        while(1)
        {
           ;
        }
}

上面的代码用protues输出的频率是理论10K,实际大概是970Hz左右


但是,我定义了个全局变量N = 50;
void PWM_Time(void) interrupt 1
{
        TR0 = 0;
        TH0 = (65536 - N) / 256;
        TL0 = (65536 - N) % 256;
        DY_PORT = ~DY_PORT;
        TR0 = 1;
}
然后中断服务函数写成这样就出问题了,仿真频率测到的数值是300,我把变量N
初值改变,频率计测到的数值不变,300,那位仁兄能指导这是为什么呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。