2023年9月24日 星期日

單晶片8051看門狗計時器設計用意以及程式設計

單晶片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)的範例。以下是該範例的功能說明:
  1. #include <reg52.h>:這是包含了8051微控制器的暫存器定義文件。它是用來定義和操作微控制器的硬體配置和暫存器。
  2. sfr WDTRST = 0xA6;:這一行定義了一個特殊功能暫存器(SFR)WDTRST,用來控制看門狗計時器(WDT)的行為。WDTRST位於地址0xA6。
  3. void delay(unsigned int x):這是一個自定義的延遲函數,用於引入一定的時間延遲。延遲的長度由參數x的值控制。
  4. void main():這是主函數,程序的執行從這裡開始。
  5. P0=0x0;:這一行將P0(8051的一個I/O接口)的所有位元設置為0,即將P0接口的所有輸出引腳設置為低電位。
  6. delay(25000);:這一行執行了delay函數,將程序執行約25000個循環迴圈,達到時間延遲的效果。
  7. P0=0xff;:這一行將P0接口的所有位元設置為1,即將P0接口的所有輸出腳位設置為高電。
  8. delay(25000);:再次執行delay函數,時間延遲。
  9. WDTRST=0x1e;WDTRST=0xe1;:接下來,致能看門狗功能。
  10. while(1);:進入一個無限循環,程序將在這裡無限等待,不再執行其他指令。
總的來說,這個範例演示了如何使用8051微控制器的看門狗計時器,在系統進入無窮迴圈時,利用看門狗電路來重新啟動,因此您可以看到LED的閃爍。

沒有留言:

張貼留言