想利用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; //高电平
}
}
}