使用ch552芯片,設(shè)置脈沖輸出,按鍵改變脈寬,不能實(shí)現(xiàn),是什么問題呢,求解

#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);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//修改主頻,建議稍加延時等待主頻穩(wěn)定

Port3Cfg(1,4);

Port1Cfg(1,3);

Port1Cfg(3,4);

? ? mTimer0Clk12DivFsys();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//T0定時器時鐘設(shè)置

? ? mTimer_x_ModInit(0,2);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//T0 定時器模式設(shè)置

? ? 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; //調(diào)制脈寬

? ? ? ? ? ? led2=!led2;//led燈反轉(zhuǎn)

? ? ? ? ? ? if(condition>=90)//如果脈寬等于總周期了等于0

?{

condition=90;

? ? ? ? ? ? }

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

}

}

}


您好,您說的脈寬是LED1輸出的波形嗎?這個引腳的波形是如何測試的?

LED1輸出高電平是cnt

按鍵按3次之后高電平時間固定,按照您的代碼邏輯大致是這樣的。

您是如何判斷引腳脈寬的?以及是如何實(shí)現(xiàn)修改這個脈寬的?

cnt的高電平占比在周期中最大應(yīng)該就是90/65536,脈寬從占比上來說很低

不知我理解的有沒有問題j_0058.gif


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频