熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-12-6 21:34
正文摘要:51單片機(jī)波形發(fā)生器程序 有沒(méi)有大佬幫忙看看這個(gè)問(wèn)題怎么解決。河枚〞r(shí)中斷來(lái)產(chǎn)生波形,通過(guò)設(shè)置定時(shí)時(shí)間來(lái)設(shè)置波形頻率,但是當(dāng)頻率到100hz后,程序由于進(jìn)中斷函數(shù)頻率過(guò)高導(dǎo)致數(shù)碼管顯示異常,到1000hz后連按鍵 ... |
說(shuō)明的時(shí)序設(shè)計(jì)不合理。 事件的處理不要放在中斷服務(wù)處理程序中,放中主程序中。 中斷服務(wù)程序要盡量短,做個(gè)事件的標(biāo)記即可! 在主程序中,根據(jù)標(biāo)記處理事件。 |
這種通過(guò)定時(shí)器產(chǎn)生高頻率波形輸出對(duì)于很多51單片機(jī)是搞不定的,很多51的單片機(jī)定時(shí)器中斷時(shí)間設(shè)置少于50us以下就開(kāi)始沒(méi)法勝任,你自己可以算一下最多能輸出多高的方波,像你這種最好不要用定時(shí)器而是拉到有pwm功能輸出的腳上。 |
xuyaqi 發(fā)表于 2022-12-7 09:51 主要是要求用的51單片機(jī) |
npn 發(fā)表于 2022-12-7 08:29 加了溢出檢測(cè)后確實(shí)溢出了 |
中斷服務(wù)程序盡量短! |
你先測(cè)出來(lái)中斷耗時(shí)多少,然后保證中斷間隔大于這個(gè)時(shí)間。 |
程序結(jié)構(gòu)問(wèn)題,1khz頻率不算高,按鍵或許會(huì)反應(yīng)遲鈍,但不會(huì)沒(méi)有反應(yīng),而且需要確定1khz和定時(shí)器中斷時(shí)間的對(duì)應(yīng)關(guān)系 |
有直接輸出波形不要cpu參與的單片機(jī),為什么會(huì)有越來(lái)越多高級(jí)單片機(jī),就是老單片機(jī)功能不夠用。 |
有直接輸出波形不要cpu |
100hz =100次/秒 ,T = 10ms 51假如用12M晶振,12000000次/S,T =1/12, Tcy = 12* 1/12 = 1us 一個(gè)周期64個(gè)采樣點(diǎn),就是要花10ms, 那每個(gè)采樣時(shí)間段156.25us, 似乎要加濾波電路吧 |
定時(shí)器0中斷程序處理時(shí)間,超過(guò)初值時(shí)間導(dǎo)致溢出。 溢出后TF0硬件置1,包含 intrins.h 頭文件后,中斷底部加一句判斷有無(wú)溢出: if(_testbit_(TF0)) { } 溢出后if條件會(huì)成立,更換1T單片機(jī)或使用更高頻率晶振。 |
Powered by 單片機(jī)教程網(wǎng)