关于输出特定频率的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,那位仁兄能指导这是为什么呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
RGB电子
1楼-- · 2020-01-24 14:10
初始化的值也用N代替了吗?
qq开始学单片机
2楼-- · 2020-01-24 15:46
RGB电子 发表于 2014-3-27 06:48
初始化的值也用N代替了吗?

是的,这样不可以么?
tragedy
3楼-- · 2020-01-24 16:15
你这程序,实际频率是7.3k。示波器测的
qq开始学单片机
4楼-- · 2020-01-24 19:10
tragedy 发表于 2014-3-27 10:34
你这程序,实际频率是7.3k。示波器测的

但是,如果用到变量,仿真出来的是300,为什么呢

一周热门 更多>