最近在学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,那位仁兄能指导这是为什么呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是的,这样不可以么?
但是,如果用到变量,仿真出来的是300,为什么呢
一周热门 更多>