|
設(shè):
1、定時器中斷時間為:T,即每經(jīng)過時間T中斷一次。
2、2NT為PWM的周期。
3、兩個PWM分別從P1.0、P1.1輸出。
方案:定義三個變量
1、變量1:TW,用于計數(shù)PWM周期(初始=0,計數(shù)值 0-2N)。
2、變量2:TH,用于計數(shù)脈部寬度(輸出=1的時間)。
3、變量3:TH2,用于計數(shù)P1.1的脈沖寬度(=1的時間)。
中斷服務(wù)程序這樣寫:
1、【PWM的周期】:每次中斷 TW + 1 ,當(dāng)TW = 2N 時,讓TW = 0,重新計數(shù),這樣就完成PWM周期計數(shù)。
2、動作判定:
【第一路P1.0】
當(dāng)TW = 0 時,讓 P1.0 = 1,PWM輸出1;
當(dāng)TW = TH 時,讓P1.0 = 0,PWM輸出0,這樣第一路P1.0輸出1的寬度就是TH。
【第二路P1.1】
當(dāng)TW = N 時,讓 P1.1 = 1,這樣,P1.1以50%的相差輸出PWM=1;要點:同時讓TH2 = TH,開始計時P1.1輸出1的時間。(退出程序,跳過3、)
當(dāng)TW <> N 時,執(zhí)行以下3、。
3、【P1.1 = 1的時間】
如果TH2 = 0,什么也不做,保持現(xiàn)狀(此時P1.1必定輸出0)。
如果TH2 <> 0,則 TH2 -1(P1.1 = 1計時,此時P1.1必定輸出1), 當(dāng)TH2 = 0 時(減成0時,1應(yīng)該結(jié)束了),讓P1.1 = 0,這樣第二路輸出1的寬度就也是TH。
如此,選擇不同的TH值,可得到不同的占空比,而兩個輸出的相差保持50%。注意:必須保證TH < TW。 |
|