这是我用89c52编写输出3路占空比可变的PWM信号,设定的频率为200Hz,但用示波器测得小于10Hz,求大神解救

这是我用89c52编写输出3路占空比可变的PWM信号,设定的频率为200Hz,但用示波器测得小于10Hz,求大神解救,第1张

问题在这里:
TMOD=0x01;//设置定时器0为工作方式1
TH0=0xFF;
TL0=0x00;
你的定时器工作方式1,但是中断里没有重载定时器,所以,除了第一次以外,其他每次中断,都是65536个周期。
另外说一下,你为什么要把中断服务函数写那么大呢?好的工程师一个原则,中断服务函数,尽最大努力的短
再补充一下:既然你定时器跑的周期是256个,为什么不用方式2?自动重载,节省开销

用定时器模拟PWM即可。具体就不算了,看你代码大体原理差不多,你可以试着接一个蜂鸣器,将输出角接到蜂鸣器上,查下声音的频率表,打出一个频率出来看发出的音对不对,我以前用类似的道理做过一个类似于贺卡那个铃声的东西。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/13188342.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-30
下一篇2025-08-30

发表评论

登录后才能评论

评论列表(0条)

    保存