为什么使用定时器输出脉冲控制LED没法实现?求解,哪里出了问题

#include "CH552.h"

#include "GPIO.h"



unsigned int PWM=50;

unsigned char time = 0;


void delay(unsigned int a)

{

  unsigned int i,j,k;

  for(i=0;i

    for(j=0;j<200;j++)

      for(k=0;k<200;k++)

        ;

}

sbit LED = P3^4;

 

void main(void)

{

  //设置时钟

  SAFE_MOD = 0x55; //进入安全模式

  SAFE_MOD = 0xAA;

   

  CLOCK_CFG &= ~bOSC_EN_XT;  //关闭外部晶振

  CLOCK_CFG |= bOSC_EN_INT;  //使能内部晶振

  CLOCK_CFG = CLOCK_CFG & (~MASK_SYS_CK_SEL) | 0x06; //24M

   

  SAFE_MOD = 0x00;//退出安全模式

   

  //LED配置

  //LED -- P3.4 -- 推挽输出

  P3 &= ~(1 << 0x04); 

  P3_DIR_PU |= (1 << 0x04);

  P3 |= (1 << 0x04);//关闭LED

   

  //定时器0初始化

  TMOD &= ~bT1_CLK; //系统时钟12分频

  TMOD = TMOD & 0xF0 | bT0_M1;  //模式2

  TL0 = 0x38;  //赋初值 100us

  TH0 = 0x38;

  ET0 = 1;

  TR0 = 1;

 

  EA = 1;

  while(1);

  {

  if(time>=100)

  time=0;

  if(time

  LED=1;

  else if(time>=PWM)

  LED=0;

  }

}  

//定时器中断

void Time0Interrupt(void) interrupt INT_NO_TMR0 using 1

{

TL0 = 0x38;  //赋初值 100us

    TH0 = 0x38;

time++;


  }

}


编译没有出错,用的是keil5


您好,看定时器部分的初始化应该是没有问题的,在反转LED的代码的地方有一些代码看不到了,是否在点灯逻辑上有什么问题。


只有登录才能回复,可以选择微信账号登录