使用定时器0输出方波,占空比不是50%

2020-01-25 15:23发布

使用定时器输出方波,但方波不是标准的占空比为50%,第一,二个高电平时间为100us,第三个变成170us,如此反复
程序如下
#include <reg52.h>
#include<intrins.h>


#define uchar  unsigned char
#define uint   unsigned int




sbit EN = P2^1;   //test
sbit DIR = P2^2;   //test
sbit STEP = P2^3;        //test
void InitTimer0(void);
//void zhengzhuan(void);

void InitTimer0(void)
{
        TMOD = 0x02;                         //定时器0方式2,8位计数,自动重载
        TH0 = 0xa4 ;        //定时100us,脉冲频率10khz,占空比50%
        TL0 = 0xa4 ;
        ET0 = 1;
        EA  = 1;
        TR0 = 1;

}

void Timer0Interrupt(void) interrupt 1
{
       
        STEP = ~STEP;           //翻转
       
}

/*void zhengzhuan(void)
{
        InitTimer0();
} */
void main()
{
        EN = 0;
        DIR = 0;
        STEP = 1;
        //zhengzhuan();
        InitTimer0();
}

请问程序有问题吗?谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。