ch552使用定時器輸出PWM,按鍵控制輸出占空比,定時器正常工作,按鍵控制也是可以,引腳沒有輸出Pwm波形是什么問題?

#define uchar unsigned char

sbit key1 = P3^2;? ?

sbit key2 = P3^0;? ?

sbit pin1 = P1^4;

sbit led1 = P3^1;

uchar condition=0,time;

void Time0_Init()

{

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

mTimer_x_ModInit(0,1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//T0定時器模式設置16位定時器

mTimer_x_SetData(0,0xC350);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //T0定時器賦值5MS

mTimer0RunCTL(1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //T0定時器啟動

ET0? ?= 1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//T0定時器中斷開啟

EA? ? = 1;

}

voidmTimer0Interrupt( void ) interrupt INT_NO_TMR0 using 1? ? ? ? ? ?//timer0中斷服務程序,使用寄存器組1

{

mTimer_x_SetData(0,0xC350);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //非自動重載方式需重新給TH0和TL0賦值

time++;

if(time

{

pin1=1;

}

else

pin1=0;

if(time>=100)

{

time=0;

}

}

void main( )?

{

CfgFsys( );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //CH554時鐘選擇配置? ?

? ? mDelaymS(5);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//配置時鐘后,建議延時穩(wěn)定時鐘

Time0_Init();

mDelaymS(5);

while(1)

{

if(key1==0)

{

mDelaymS(50);

if(key1==0)

{

led1=0;

condition+=10;

if(condition>=100)

{

condition=100;

}

}

}

if(key2==0)

{

mDelaymS(50);

if(key2==0)

{

led1=1;

condition-=10;

if(condition<=0)

{

condition=0;

}

}

}

}

}


每次你貼的代碼都不全,參考的價值不是很大,這次貼出來的代碼也顯示不全。

要請教問題先自己排除問題,可以把你的解決問題的思路描述出來,看是不是自己想法上的問題。

ctrl+c ctrl+v貼代碼解決不了現(xiàn)在的問題和以后可能遇到的問題。


每次回復您的帖子我即使想幫助您解決問題但也沒有一次是實質(zhì)性的指出了問題是什么

例如這次中斷函數(shù)中的"if"條件不完整。

image.png

我們歡迎您提出問題,但是務必將問題描述完整、清晰、有條理:

我的代碼是這樣(現(xiàn)狀)-----我覺得這樣子(理論支撐)-----可以實現(xiàn)-----但是現(xiàn)在的現(xiàn)象是(異常)------我懷疑這里(歧義)------但是不生效(結(jié)果)--------

best regard

沁恒原廠技術(shù)支持,歡迎您直接和我聯(lián)系

image.png


僅針對這次的問題,從你的描述可以獲取信息:

image.png

1、ch552使用定時器輸出PWM

我們最終的目的,P14實現(xiàn)一個翻轉(zhuǎn),通過time這個變量實現(xiàn)一些寬度上的控制

2、按鍵控制輸出占空比

結(jié)合4,主循環(huán)中執(zhí)行的部分工作正常

3、定時器正常工作

從當前代碼來看定時器唯一的宏觀上我們能夠觀察的現(xiàn)象就是P14的翻轉(zhuǎn)輸出,但是根據(jù)前述該功能是不正常的,那是如何判斷定時器工作正常的呢?是否可以在中斷函數(shù)中加上一些printf來監(jiān)控?

4、按鍵控制也是可以

同2

5、引腳沒有輸出Pwm波形是什么問題

代碼中沒有對P14引腳進行初始化,那就是一個大約70K上拉的準雙向,這個驅(qū)動很弱。外部是如何觀察的,按照你計算的定時器5毫秒,這個相對人的主觀意識是一個很微觀的東西,是否有借助外部可靠儀器來分析?是如果判斷P14引腳沒有動作的?是否P14外部有實際連接的器件、電路導致的無法實現(xiàn)高電平的輸出,如果這個引腳懸空有進行測試過嗎?



1、最終目的使用定時器模擬可控PWM占空比輸出

2、定時器工作正常,是通過串口檢測的

3、P14引腳有示波器檢測信號輸出,沒有輸出波形變化

4、按鍵檢測是否按下,通過led亮滅表示


那問題就單一成:

1、pin1 P14能否通過寫1寫0來實現(xiàn)翻轉(zhuǎn)

2、中斷中的time變量判斷條件是否有問題


A1:led1能夠翻轉(zhuǎn),那將pin1和led1對換,看pin1是否有反應,結(jié)果共有4種情況,這個可以排除或定位到硬件上面的問題

A2:分別在if和else種printf不同的東西,判斷條件是否合理,這個應該可以排除掉軟件的問題


軟硬結(jié)合應該就可以解決這個問題了


問題已解決


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

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