本帖最后由 ly2 于 2014-11-26 20:35 编辑
昨天在高手的指点下把定时器产生PWM波周期不对的程序改了,在这里谢谢帮我的高手们,谢谢你们指点。现在我把定时器的中断时间改成10微秒,那么产生的PWM波周期应该是0.4毫秒,占空比还是50%,可是
仿真出来却是0.9毫秒左右,这是什么原因呢?若是改为N>=3000,N<=1000,那么周期应该是30毫秒,占空比是1/3,可是仿真出来周期却是60毫秒,大了两倍,占空比对了,小弟感谢指点。。#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit pwm=P2^2;
uint N;
void main()
{
TMOD=0X10;
TH1=(65536-10)/256;
TL1=(65536-10)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
if(N>=40)
N=0;
if(N<=20)
pwm=1;
else
pwm=0;
}
}
void T1_
time() interrupt 3
{
TH1=(65536-10)/256;
TL1=(65536-10)%256;
N++;
}
一周热门 更多>