PWM输出问题

2019-03-24 19:27发布

用51模拟PWM波,为什么去除for(i=0;i<5000;i++); 程序就有问题,还有在运行这句话的过程中,定时器0应该也在运行,不会产生问题吗大家帮忙看看!谢谢!
#include"reg52.h"sbit led=P1^0;char count,ton;void main(){ int i; TMOD=0x01; TH0=(65535-88)/256; TL0=(65535-88)%256; EA=1; ET0=1; TF0=0; TR0=1; //ton=50 ; while(1)  {         for(i=0;i<5000;i++);  ton++;     if(ton>=100)ton=0;      }}
void time() interrupt 1 using 1{ TH0=(65535-88)/256; TL0=(65535-88)%256; count++; if(count>=100)count=0,led=0; if(count==ton)led=1;} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
Li_Lei
2019-03-25 04:46

去除for(i=0;i<5000;i++);

程序逻辑没有问题,只是ton加得太快了,比pwm频率还高所以乱了。

很多51都带硬件pwm,建议你看看。

定时器靠硬件逻辑电路工作。

 

[ 本帖最后由 huo_hu 于 2012-1-17 11:28 编辑 ]

一周热门 更多>