使用定時器模擬輸出脈沖輸出,按鍵控制大小,編譯沒用問題,燒寫代碼沒有實現(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定時器時鐘設置

? ? 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

{

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!=1)

{

mDelaymS(5);

if(key!=1)

{

condition=condition+30; //調制脈寬

? ? ? ? ? ? led2=!led2;//led燈反轉

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

{

condition=90;

? ? ? ? ? ? }

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

}

}

}


您好,代碼中打開EA開關之后的那個while(1),目的應該是運行后面的cnt長度判斷的部分吧,那個while(1)后面‘;’。


不能控制脈沖的改變,是什么問題呢


您好,您說的脈沖大小改變指的是脈寬的變化嗎?

貼出來的代碼有部分丟失。



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

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