單晶片8051是一種廣泛使用的嵌入式微控制器,具有多種應用,包括控制、監視和通信等。其中的看門狗計時器電路(Watchdog Timer Circuit)是8051微控制器的一個重要功能,其主要用途是增加系統的可靠性和穩定性。
看門狗電路的主要用途說明如下:
- 監控系統異常:看門狗電路是一種計時器,定期地產生一個計時器溢出中斷,當系統正常運行時,主程序會定期重設這個計時器。如果系統出現故障或卡死,主程序無法正常運行,那麼計時器將在預定的時間內達到溢出,觸發中斷,這將被視為系統異常。
- 系統重置(Reset):一旦看門狗計時器達到溢位並觸發中斷,它將引發一個硬體重置信號,將8051單晶片微控制器恢復到最初始的狀態。這樣可以確保在系統出現故障或死循環時,讓單晶片微控制器能夠重新啟動並恢復正常運行。
- 防止無限循環:如果系統中的軟體程序執行時,因任何原因進入無限循環或無限延遲,看門狗計時器電路將在預定的時間內達到溢出,強制系統重新啟動,防止系統陷入永無止境的等待狀態。
總之,單晶片8051的看門狗計時器電路可以用於監控系統的運行情況,並在檢測到異常情況時,執行硬體重置的動作,以確保系統的穩定性和可靠性。這有助於避免系統在故障情況下長時間停擺,並提高了嵌入式系統應用的可用性。
以下是在KEIL IDE模擬器中進行看門狗計時器(WDT)重置範例以及在硬體開發套件中進行測試的情形。
程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<reg52.h> sfr WDTRST = 0xA6; void delay(unsigned int x) { while(x--); } void main() { P0=0x0; delay(25000); P0=0xff; delay(25000); WDTRST=0x1e; WDTRST=0xe1; while(1); } |
程式說明:
這個範例是使用8051單晶片微控制器來實現一個簡單的看門狗計時器(WDT)的範例。以下是該範例的功能說明:
- #include <reg52.h>:這是包含了8051微控制器的暫存器定義文件。它是用來定義和操作微控制器的硬體配置和暫存器。
- sfr WDTRST = 0xA6;:這一行定義了一個特殊功能暫存器(SFR)WDTRST,用來控制看門狗計時器(WDT)的行為。WDTRST位於地址0xA6。
- void delay(unsigned int x):這是一個自定義的延遲函數,用於引入一定的時間延遲。延遲的長度由參數x的值控制。
- void main():這是主函數,程序的執行從這裡開始。
- P0=0x0;:這一行將P0(8051的一個I/O接口)的所有位元設置為0,即將P0接口的所有輸出引腳設置為低電位。
- delay(25000);:這一行執行了delay函數,將程序執行約25000個循環迴圈,達到時間延遲的效果。
- P0=0xff;:這一行將P0接口的所有位元設置為1,即將P0接口的所有輸出腳位設置為高電。
- delay(25000);:再次執行delay函數,時間延遲。
- WDTRST=0x1e;WDTRST=0xe1;:接下來,致能看門狗功能。
- while(1);:進入一個無限循環,程序將在這裡無限等待,不再執行其他指令。
總的來說,這個範例演示了如何使用8051微控制器的看門狗計時器,在系統進入無窮迴圈時,利用看門狗電路來重新啟動,因此您可以看到LED的閃爍。
沒有留言:
張貼留言