為什么使用定時器輸出脈沖控制LED沒法實現(xiàn)?求解,哪里出了問題

#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)

{

? //設(shè)置時鐘

? SAFE_MOD = 0x55; //進入安全模式

? SAFE_MOD = 0xAA;

? ?

? CLOCK_CFG &= ~bOSC_EN_XT;? //關(guān)閉外部晶振

? CLOCK_CFG |= bOSC_EN_INT;? //使能內(nèi)部晶振

? 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);//關(guān)閉LED

? ?

? //定時器0初始化

? TMOD &= ~bT1_CLK; //系統(tǒng)時鐘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


您好,看定時器部分的初始化應(yīng)該是沒有問題的,在反轉(zhuǎn)LED的代碼的地方有一些代碼看不到了,是否在點燈邏輯上有什么問題。


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

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