![]() |
發布時間: 2019-6-11 20:00
正文摘要:用C語言實現方波占空比的改變,占空比有5擋,循環5次,每次100ms,比如在x=3時,P1口先高電平300ms,然后低電平200ms。用外部中斷0讓x+1,外部中斷x-1。可是,仿真時無論如何占空比都是1:1,就是高電平和低電平的時 ... |
好像沒有外部中斷觸發源,怎么觸發中斷??? |
你這是不了解什么叫占空比吧, 百度一下吧, 多看看別人怎么寫的 |
本帖最后由 yzwzfyz 于 2019-6-13 08:22 編輯 1、用定時器做一個1T中斷。 2、設置一個周期寄存器C,假設你需要的周期是100T,你就讓C=100。 3、設置一個占空比寄存器P,假設你需要的占空比是70,你就讓P=70。 關鍵點(方案): 定時器每次中斷后將C-1,如果P<>0,再將P-1,否則P不動! 1、當C-1=0時,讓IO口置1,同時將C復成100、將P復成70;否則不處理。 2、當P-1=0時,讓IO口清0;否則不處理。 這樣IO口的輸出就如你所愿了。 更高級一點做成活的。 再增設兩個寄存器M,N,將程序中的100用M替代、70用N替代。 這樣你只要改變M、N的值就可以任意改變周期與占空比了。而且隨時改變!不過要保證M>N,這很容易吧。 關鍵不是看你的程序,而是看你的構思!你的程序有什么看頭。 如果你能理解并認為我的方案可行,你就試著寫寫程序。 |