为什么不能控制脉冲大小改变,请问一下是什么问题呢

#include "CH552.H"                                                  

#include "Debug.H"

#include "Timer.H"

#include "stdio.h"

#include "GPIO.H"


#pragma  NOAREGS


//UINT8 FLAG;

//UINT16 Cap[8] = {0};

//typedef unsigned int uint16_t;

sbit LED1 = P3^4;

sbit led2 = P1^3;

sbit key = P1^4;

unsigned int condition=0;//这里高电平占一份

unsigned int cnt;  //整个周期

void button();


void main( ) 

{

    CfgFsys( );                                                                //CH554时钟选择配置   

    mDelaymS(5);                                                               //修改主频,建议稍加延时等待主频稳定

    Port3Cfg(1,4);

    Port1Cfg(1,3);

    Port1Cfg(3,4);

    mTimer0Clk12DivFsys();                                                   //T0定时器时钟设置

    mTimer_x_ModInit(0,2);                                                     //T0 定时器模式设置

    mTimer_x_SetData(0,0x5555);                                               //T0定时器赋值

    mTimer0RunCTL(1);                                                          //T0定时器启动

    ET0 = 1;                                                                   //T0定时器中断开启

    EA = 1;

    while(1)

{

   if(cnt>=100)

   {

      LED1=0;

    }

   if(cnt<condition)

{

     LED1=1;

}

else

{

    LED1=0;

}

    button();

}

}

void Time0Interrupt(void) interrupt INT_NO_TMR0 using 1

{

    mTimer_x_SetData(0,0x5555);                                               //T0定时器赋值

    cnt++;

}

void button()

{

   if(key==0)

   {

       mDelaymS(5);

      if(key==0)

   {

           condition=condition+30; //调制脉宽

            led2=!led2;//led灯反转

            if(condition>=90)//如果脉宽等于总周期了等于0

{

          condition=90;

            }

            while(!key);  //等待按键松手

   }

  }

}


您好,您说的脉冲大小改变指的是脉宽的变化吗?

贴出来的代码有部分丢失。


这是完整的代码

image.png


这边不太清楚代码到底是怎么运行的,猜测是定时器中对cnt做加加运行,尚且不知道主循环中对cnt的判断是怎么的,是和condition这个变量做比较吗?您可以仔细阅读一下前面的代码,看一下缺少的是哪一个部分,将对应的部分代码贴出来


已经可以了


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