熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-6-11 20:00
正文摘要:用C語言實(shí)現(xiàn)方波占空比的改變,占空比有5擋,循環(huán)5次,每次100ms,比如在x=3時(shí),P1口先高電平300ms,然后低電平200ms。用外部中斷0讓x+1,外部中斷x-1。可是,仿真時(shí)無論如何占空比都是1:1,就是高電平和低電平的時(shí) ... |
| 好像沒有外部中斷觸發(fā)源,怎么觸發(fā)中斷??? |
| 你這是不了解什么叫占空比吧, 百度一下吧, 多看看別人怎么寫的 |
|
本帖最后由 yzwzfyz 于 2019-6-13 08:22 編輯 1、用定時(shí)器做一個(gè)1T中斷。 2、設(shè)置一個(gè)周期寄存器C,假設(shè)你需要的周期是100T,你就讓C=100。 3、設(shè)置一個(gè)占空比寄存器P,假設(shè)你需要的占空比是70,你就讓P=70。 關(guān)鍵點(diǎn)(方案): 定時(shí)器每次中斷后將C-1,如果P<>0,再將P-1,否則P不動(dòng)! 1、當(dāng)C-1=0時(shí),讓IO口置1,同時(shí)將C復(fù)成100、將P復(fù)成70;否則不處理。 2、當(dāng)P-1=0時(shí),讓IO口清0;否則不處理。 這樣IO口的輸出就如你所愿了。 更高級(jí)一點(diǎn)做成活的。 再增設(shè)兩個(gè)寄存器M,N,將程序中的100用M替代、70用N替代。 這樣你只要改變M、N的值就可以任意改變周期與占空比了。而且隨時(shí)改變!不過要保證M>N,這很容易吧。 關(guān)鍵不是看你的程序,而是看你的構(gòu)思!你的程序有什么看頭。 如果你能理解并認(rèn)為我的方案可行,你就試著寫寫程序。 |
Powered by 單片機(jī)教程網(wǎng)