用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;}
此帖出自
小平头技术问答
ton值的改变影响着PWM的占空比,for只是个延迟,为了使占空比变化比较慢
没延迟的话,占空比快速变化,波形就显得乱吧
去除for(i=0;i<5000;i++);
程序逻辑没有问题,只是ton加得太快了,比pwm频率还高所以乱了。
很多51都带硬件pwm,建议你看看。
定时器靠硬件逻辑电路工作。
一周热门 更多>