利用51单片机的计时中断,产生可调的PWM信号。频率最好能在20Khz左右,调整档位10步。

想利用51单片机的计时中断,产生可调的PWM信号。频率最好能在20Khz左右,采用计时方式1. 为什么 TH0=(65536-10)/256; TL0=(65536-10)%256仿真出来的频率还比TH0=(65536-100)/256; TL0=(65536-100)%256的低呢?实际电路好像也是频率低,因为没有实物示波器,所以不知道具体低多少。

中断程序部分如下:
void tim(void) interrupt 1
{
static unsigned char count;
TH0=(65536-10)/256;
TL0=(65536-10)%256;//定时10uS
if(count==PWM_ON)
{
PWM = 0; //转低电平
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右时间是0 保持原来状态
{
PWM = 1; //高电平
}
}
}

楼主:
我们假设延迟3ms
晶体:12Mhz标准算法;X:为延迟时间,x=3000
方式1:3ms:初值是65536-x=64036,TL0=FAH;TH0=24H。即得到初值
如果晶体:6Mhz X/2:为延迟时间
方式1:3ms:初值是65536-x/2=64036,TL0=FAH;TH0=24H。即得到初值
给个联系方式,我发一个延时计算程序给你!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-16
因为你的中断程序太长了,导致单片机在中断中花的时间太长。然后导致计时器不能精确的计时
晶振要换成11.0592MHz的才能准确的计时
第2个回答  2011-12-05
TH0=(65536-10)/256; TL0=(65536-10)%256仿真出来的频率本来比TH0=(65536-100)/256; TL0=(65536-100)%256低,定时时间越长,频率越低
第3个回答  2011-12-05
51是加法计数器,初值越大,定时时间越小,当然频率高
相似回答