lanfengxun 发表于 2013-12-24 12:48:20

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

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


#define ucharunsigned 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();
}

请问程序有问题吗?谢谢

lcw_swust 发表于 2013-12-24 14:03:53

main最后加while(1);

huangyiting1990 发表于 2013-12-24 18:19:17

楼上正解,你这是在一直初始化,定时设置呢。。。。

xou822 发表于 2013-12-25 08:27:08

主程序执行完了以后系统还相应中断么?
页: [1]
查看完整版本: 使用定时器0输出方波,占空比不是50%