熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2025-1-15 00:10
正文摘要:在這里我發(fā)現(xiàn)小燈會(huì)出現(xiàn)閃爍,就是他會(huì)慢慢亮,慢慢滅,但是就是會(huì)閃幾下 |
小優(yōu)化: 在占空比為0或100時(shí)關(guān)閉T0中斷,否則開(kāi)啟T0中斷。 這樣configpwm()可以不用分成2個(gè)函數(shù)。
|
pwm工作期間只能在中斷期間操作pwmout,否則可能會(huì)閃爍。 configpwm()要分成2個(gè)函數(shù)。一個(gè)僅用于計(jì)算High,Low的加載值,另一個(gè)配置T0,開(kāi)啟或關(guān)閉T0。 High,Low的加載值僅在T0中斷處理更新。
|
PWM 是周期不變,占空比變化的信號(hào)。 定時(shí)器應(yīng)設(shè)置為固定周期,定時(shí)時(shí)間到就對(duì)一個(gè)計(jì)數(shù)器進(jìn)行加一操作。 計(jì)數(shù)器值小于占空比輸出高電平;大于占空比輸出低電平。 計(jì)數(shù)器值如果大于 PWM 周期則計(jì)數(shù)器清零。 |
lkc8210 發(fā)表于 2025-1-15 09:33 感謝,我去試試看 |
WL0123 發(fā)表于 2025-1-15 08:10 好的,謝謝了 |
WL0123 發(fā)表于 2025-1-15 08:10 什么人工智%發(fā)言? |
41/42行+12太小了 最少要加30 |
調(diào)光燈出現(xiàn)閃爍是因?yàn)镻WM周期大于20ms。樓主用改變定時(shí)中斷周期來(lái)改變占空比的方式不妥。 //以200um中斷周期為例,占空比0~100% void Timer0Interrupt(void) interrupt 1 { static unsigned char count=0; TH0 = 0xFF; TL0 = 0x38; if(++count>=100)count=0; // num值在主函數(shù)中由按鍵調(diào)整0~100 if(count>=num)OUT=0;//暗 else OUT=1;//亮 } |
Powered by 單片機(jī)教程網(wǎng)