单片机定时器产生10微秒的中断出错了

2019-07-15 18:06发布

本帖最后由 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++;
}
7P5H(A`}FDPJ1WLCD{5DBN8.png


)W`477B9D7DPJ(E2ASY0.jpg



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。