因为需要产生一个频率几百赫兹的pwm波,只能用定时器0溢出来提供时基。
但是用系统时钟产生的pwm波没问题,用定时器0溢出产生的pwm波畸形了,不知道为啥
定时器0代码如下,不知道是不是中断的原因,因为关了中断用工作方式2是没问题的,可是工作方式2达不到几百赫兹的频率。。
void Timer0_Init(void)
{
TMOD |= 0x01;//工作方式1,16位
TH0=T_Init/256;
TL0=T_Init%256;
EA=1;
ET0=1;
TR0=1;
}
void Time0(void) interrupt 1 using 0
{
TH0=T_Init/256;
TL0=T_Init%256;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
得用硬件pwm了
在中断中尽量减少运算,直接用个常数不行?
IMG_20140826_081458.jpg (1.27 MB, 下载次数: 0)
下载附件
2014-8-26 08:22 上传
硬件pwm不是用软件模拟的
一般是把相关数据放进去
然后由硬件去产生pwm波
现在很多单片机都自带硬件pwm输出
可以解决你的问题
一周热门 更多>