1樓:匿名使用者
提供一種思路,程式沒時間寫。
1、pwm需要週期,因此定時器必須得設定匹配值,達到週期計數時間後復位tc值;
2、兩個pwm波形需要產生可調的pwm,那麼就需要讓定時器知道什麼時刻該讓這個io口輸出高低電平。可以讓兩個輸出提供引數,比如數值是多少後出現高電平,高電平持續多長數值?
3、最後就是關鍵點了,即將定時器tc值(週期值)細化,比如我脈寬週期設定tc值是3000時候復位,那麼我可以將這個定時器定時300時候出現一次中斷,600時候中斷一次,900時候出現一次中斷,一次類推,這樣就可以得到很多的時間片段,即標誌位count。
4、我希望io口在週期內出現可調節脈寬那麼可以實現了,比如count==io1的時候讓其出現高電平,持續多長時間後出現低電平(中斷裡面完成);
簡單的示意程式:
void timer_handle(void)
}估計精度不怎麼好。
2樓:匿名使用者
樓上說的就可以了,簡單點說就是增加幾個count變數,每次定時中斷增1,在中斷一定次數後將輸出反向,count清0重記,這程式應該很簡單吧,加不了幾行的。
3樓:匿名使用者
可以用stc12c5204ad,增強型的51系列,帶雙路pwm輸出,兩個的佔空比可以不一樣
4樓:
是的51微控制器是不可以的。
去學習一下別的微控制器。絕對有你需要的結果的,甚至更好的都有。
5樓:匿名使用者
一個定時器不能,51是不能,呵。
6樓:視角與時間
用c還是彙編,微控制器的型號?
51微控制器用一個定時器可以輸出頻率一定,佔空比可調的pwm脈衝嗎?
誰給一個51微控制器用一個定時器可以輸出頻率一定,佔空比可調的pwm脈衝例子給我參考一下啊
7樓:匿名使用者
一.51沒有這樣的抄
功能,襲stc12微控制器才有這樣的功能,不過你可以用延時函式來產生pwm波形,但比較浪費cpu時間。
二.還有一種方法可以用51來實現,但要消耗兩個定時器,一個t0定時器控制pwm週期,另一個t1定時器控制pwm佔空比。(t0裝的初值要大於t1的初值)在定時器中斷的時候都是對i/o口進行取反就可以了。
一個定時器產生pwm波形,做不出來,要兩個的(不過只賞0分太少了吧!!!)
8樓:匿名使用者
只給個我認為對的思路吧,把定時器的定時時間初值用變數實現,在中斷程式裡對輸出口取反操作,通過給變數賦不同的初值來實現佔空比的調節!應該不難的~~
關於微控制器的定時器問題
以下程式以測試通過,晶振頻率12m,採用p1口灌電流驅動。還有問題再問我。org 0000h ajmp main org 000bh ajmp time0 main mov tmod,01h mov ie,82h mov tl0,0afh mov th0,3ch mov r3,14h mov r2,...
51微控制器中的定時器中斷是怎麼用的
娛樂小八卦啊 如下 實現led燈一秒亮滅閃爍 void main tmod 0x01 設定定時器0為工作方式1 m1 m0為01 th0 65536 45872 256 裝初值11.0582晶振定時50ms數為45872 tl0 65536 45872 256 ea 1 開總中斷 et0 1 開定時...
微控制器的定時器溢位後,程式如何執行
在定時器計數的這段時間裡,程式是一步一步向下執行。要執行定時器中斷,要在程式開始就開啟定時器中斷。當產生溢位後,程式會直接跳到中斷程式 不用加跳轉指令 當中斷程式執行完畢後,程式會跳回到執行中斷程式前的程式處繼續執行。至於如何開啟定時器中斷,請參考資料。51微控制器定時器 計數器定時溢位時,在執行中...