⑴ 單片機產生方波的原理是什麼啊
就是單片機輸出的時候一直翻轉,舉例說明:單片機輸出高電平一秒,然後關斷一秒,然後……如此翻轉輸出,你就得到了一個頻率為0.5Hz的方波了
⑵ 用AVR單片機 輸出一個0.5ms的方波 定時器怎麼設置
首先需要知道主頻,確定分頻系數。你要輸出方波可使用定時器溢出模式,在中端函數中處理,或者也可以使用比較匹配模式,不需要做函數處理,配置好寄存器就OK了。具體的你需要看AVR的寄存器手冊。不同模式初值計算不同,例如使用溢出模式,中斷時長0.5ms,晶元mega16,主頻8M,1分頻,定時器的初值是0XF0,0X60。
計算過程,
第一步計算每個脈沖多長時間: 1/8000000=0.000000125(0.125us)
第二部計算需要多少脈沖: 0.5ms/0.125us=4000
第三部計算定時器溢出初值:65536-4000=61536(0XF060)
定時器1分為兩個寄存器,0XF0寫入高8位寄存器 0X60寫入低8位寄存器,開啟定時器1分頻,使能定時器溢出中斷即可。這樣就得到了0.5ms的溢出中斷,然後在中斷服務函數中重載定時器初值,並取反你要輸出的埠即可。
溢出中斷的方式需要你寫中斷服務函數,而且還要重載定時器初值,並且精度不高。利用比較匹配模式簡單高效,精度也高,不需要寫服務函數,只要初始化時把定時值寫入比較寄存器配置好寄存器比較模式就行了。由於這種模式是順計時(從零開始),因此可把4000直接寫入比較寄存器OCR中,設置比較模式為埠取反即可。具體的寄存器設置方法你參照手冊,思路就是這樣的。
網上有計算軟體,你可以找找,不過我建議你還是手動算算比較好,這樣掌握和理解的更深入,更牢固!
謝謝!