導航:首頁 > 操作系統 > 什麼是51單片機看門狗

什麼是51單片機看門狗

發布時間:2023-02-13 15:34:14

㈠ 電子行業里的"看門狗"是什麼意思

看門狗,又叫 watchdog timer,是一個定時器電路, 一般有一個輸入,叫喂狗,一個輸出到MCU的RST端,MCU正常工作的時候,每隔一端時間輸出一個信號到喂狗端,給 WDT 清零,如果超過規定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就回給出一個復位信號到MCU,是MCU復位. 防止MCU死機. 看門狗的作用就是防止程序發生死循環,或者說程序跑飛。

工作原理:在系統運行以後也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那麼看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。所以在使用有看門狗的晶元時要注意清看門狗。
硬體看門狗是利用了一個定時器,來監控主程序的運行,也就是說在主程序的運行過程中,我們要在定時時間到之前對定時器進行復位如果出現死循環,或者說PC指針不能回來。那麼定時時間到後就會使單片機復位。常用的WDT晶元如MAX813 ,5045, IMP 813等,價格4~10元不等.

軟體看門狗技術的原理和這差不多,只不過是用軟體的方法實現,我們還是以51系列來講,我們知道在51單片機中有兩個定時器,我們就可以用這兩個定時器來對主程序的運行進行監控。我們可以對T0設定一定的定時時間,當產生定時中斷的時候對一個變數進行賦值,而這個變數在主程序運行的開始已經有了一個初值,在這里我們要設定的定時值要小於主程序的運行時間,這樣在主程序的尾部對變數的值進行判斷,如果值發生了預期的變化,就說明T0中斷正常,如果沒有發生變化則使程序復位。對於T1我們用來監控主程序的運行,我們給T1設定一定的定時時間,在主程序中對其進行復位,如果不能在一定的時間里對其進行復位,T1 的定時中斷就會使單片機復位。在這里T1的定時時間要設的大於主程序的運行時間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時中斷子程序來監視。這樣就夠成了一個循環,T0監視T1,T1監視主程序,主程序又來監視T0,從而保證系統的穩定運行。

51 系列有專門的看門狗定時器,對系統頻率進行分頻計數,定時器溢出時,將引起復位.看門狗可設定溢出率,也可單獨用來作為定時器使用.
凌陽61的看門狗比較單一,一個是時間單一,第二是功能在實際的使用中只需在循環當中加入清狗的指令就OK了。

C8051Fxxx單片機內部也有一個21位的使用系統時鍾的定時器,該定時器檢測對其控制 寄存器的兩次特定寫操作的時間間隔。如果這個時間間隔超過了編程的極限值,將產生一個WDT復位。
--------------------------------------------------------------------------------
看門狗使用注意:大多數51 系列單片機都有看門狗,當看門狗沒有被定時清零時,將引起復位。這可防止程序跑飛。設計者必須清楚看門狗的溢出時間以決定在合適的時候,清看門狗。清看門狗也不能太過頻繁否則會造成資源浪費。程序正常運行時,軟體每隔一定的時間(小於定時器的溢出周期)給定時器置數,即可預防溢出中斷而引起的誤復位。
看門狗運用:看門狗是恢復系統的正常運行及有效的監視管理器(具有鎖定光碟機,鎖定任何指定程序的作用,可用在家庭中防止小孩無節制地玩游戲、上網、看錄像)等具有很好的應用價值.

系統軟體"看門狗"的設計思路:

1.看門狗定時器T0的設置。在初始化程序塊中設置T0的工作方式,並開啟中斷和計數功能。系統Fosc=12 MHz,T0為16位計數器,最大計數值為(2的10次方)-1=65 535,T0輸入計數頻率是.Fosc/12,溢出周期為(65 535+1)/1=65 536(μs)。

2.計算主控程序循環一次的耗時。考慮系統各功能模塊及其循環次數,本系統主控製程序的運行時間約為16.6 ms。系統設置"看門狗"定時器T0定時30 ms(T0的初值為65 536-30 000=35 536)。主控程序的每次循環都將刷新T0的初值。如程序進入"死循環"而T0的初值在30 ms內未被刷新,這時"看門狗"定時器T0將溢出並申請中斷。

3.設計T0溢出所對應的中斷服務程序。此子程序只須一條指令,即在T0對應的中斷向量地址(000BH)寫入"無條件轉移"命令,把計算機拖回整個程序的第一行,對單片機重新進行初始化並獲得正確的執行順序。

㈡ 單片機中的看門狗是什麼東西

看門狗實際上是一計數器,在程序運行中,你得抽空去清看門狗,不能讓計數器計滿.一但程序在干擾下跑飛了,沒去清看門狗,看門狗數值計滿後,就會發出一清0脈沖,是程序從0地址開始運行.

㈢ 求大神解答!51單片機有了復位電路為什麼還要看門狗復位啊

看門狗,顧名思義,是幫你的程序看家,當你的程序有問題時,狗就要幫你復位了。復位電路只是作為外部手動復位的一種方式。而看門狗定時器的原理是,當你開啟它後,它就會定時需要被設定一次,比如10ms,20ms等,稱作喂狗,那麼在程序正常運行時,正常喂狗了,它就會乖乖地,如果程序出問題,比如跑飛了,或者取指錯誤死機了,那麼程序喂不了狗了,狗就會在定時時間到時認為你程序死了,就會自動進行復位了,其實一般小程序用不著看門狗,都是復雜的大程序用。

㈣ 51單片機看門狗問題

在程序初始化中向看門狗寄存器(WDTRST地址是0A6H)中先寫入01EH,再寫入0E1H。即可激 活看門狗。
ORG 0000H
LJMP begin
Begin:
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;後送E1
;在程序初始化中激活看門狗。
……
……
For:
……
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;後送E1
;喂狗指令
……
LJMP For

在C語言中要增加一個聲明語句。 在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看門狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}

其他參考代碼:

AJMP MAIN ;匯編

MAIN:

;啟動看門狗
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;後送E1

;主程序
START:

ACALL WDT ;調用復位看門狗子程序

AJMP START

;主程序

;復位看門狗子程序
WDT:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;後送E1
RET

END

注意事項:
1. 89S51的看門狗必須由程序激活後才開始工作。所以必須保證CPU有可靠的上電復位。否則看門狗也無法工作。
2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。
3. 89S51隻有14位計數器。在16383個機器周期內必須至少喂狗一次。而且這個時間是固定的,無法更改。當晶振為12M時每16個毫秒需喂狗一次。還可利用定時器把看門狗的喂狗時間延長幾秒至幾分鍾。

你不往寄存器寫值,默認是沒有開看門狗的,你就不用管了

㈤ 簡述51單片機看門狗電路的功能和工作原理

看門狗實際上是定時器,計數值結束會引起復位,所以在定時結束之前要清除計數器,即喂狗,若程序出現異常將不能及時喂狗,就會引起單片機復位。多數5I單片機內沒有看門狗電路。

㈥ 單片機中的看門狗是什麼東西,有什麼作用

看門狗(WDT)是一個定時器。看門狗是用來防止萬一單片機程序出錯造成重大損失的。防錯的原理很簡單,它在硬體上就是一個定時器,當它溢出的時候就會讓單片機強制復位使程序重新開始執行。

正常的情況下是不能讓它溢出的,所以在程序上每隔一段時間要給他置一次值(俗稱喂狗),只要程序中正常給它喂他就不會溢出。

一旦程序跑飛了,有干擾或者進入死循環之類的情況時,不能正常執行程序了,那麼就永遠執行不到喂狗的指令了,但此時定時器是硬體控制的,仍然會走,所以溢出了,單片機就復位了。

一般安全性要求比較高的,系統跑飛了會造成重大事故的都會加一個「狗」保安全。

通常,看門狗的溢出時間越短越靈敏,跑飛之後復位的時間越短,也就越安全,但是,喂狗的操作也要更頻繁。

(6)什麼是51單片機看門狗擴展閱讀:

看門狗工作原理:

使用時,WDT將遞增直到溢出或「超時」。 除非處於休眠或空閑模式,否則WDT超時將強制器件復位。 為避免WDT超時復位,用戶必須使用PWRSAV或CLRWDT指令定期清除看門狗定時器。 如果WDT在休眠或空閑模式下超時。

器件將喚醒並從執行PWRSAV指令的位置繼續執行代碼。 在以上兩種情況下,WDTO位(RCON <4>)將被置1,表明器件復位或喚醒事件是由WDT超時引起的。

如果WDT將CPU從睡眠或空閑模式喚醒,則還將置位「睡眠」狀態位(RCON <3>)或「空閑」狀態位(RCON <2>),表明該設備先前已上電。 保存模式。

在正常操作期間,WDT超時將產生設備復位。 當設備處於睡眠狀態時,WDT超時將喚醒設備以繼續正常操作(稱為WDT喚醒)。 清零WDTE設置位可以永久關閉WDT。 後分頻器分配完全由軟體控制,也就是說,可以在程序執行期間隨時更改它。

為避免不可預測的器件復位,當從Timer0預分頻器分配更改為WDT後分頻器分配時,必須執行以下指令序列。 即使禁止了WDT,也必須執行該指令序列。

㈦ 51單片機 c語言看門狗程序怎麼寫

看門狗在51單片機電路里的作用是防止程序 「跑飛」、「死機」後,系統不動作,而採取復位的辦法「喚醒」系統。

89S51、89S52系列單片機自帶有看門狗功能,片內數據區A6H寄存器具有看門狗功能,使用很簡單:

#include<reg51.h>
...
sfr WDTRST = 0xA6;
...
void main()
{
WDTRST=0x1E;;//初始化看門狗
WDTRST=0xE1;//初始化看門狗
for(;;)
{
WDTRST=0x1E;;//喂狗指令

WDTRST=0xE1;//喂狗指令
}

}
可見,你只要在程序的大循環體內加一條喂狗指令就行。但這種看門狗功能有限,不是很可靠的,它依靠晶振工作,一旦晶振不起振,就無效了。

實踐中多採用外部看門狗的方法,可以選用的晶元很多:MAX708、MAX813
、X25045.....具體編程就要看晶元的參考資料了。

例如:X25045是SPI匯流排的看門狗晶元,復位端和單片機復位端連接,SPI數據輸入你可以選擇合適的IO介面。

WREN 0x06 設置寫允許位
WRDI 0x04 復位寫允許位
RDSR 0x05 讀狀態寄存器
WRSR 0x01 寫狀態寄存器
READ 0x03/0x0b 讀操作時內部EEPROM頁地址
WRITE 0x02/0x0a 寫操作時內部EEPROM頁地址

#include <reg51.h>
sbit CS= P2^7;
sbit SO= P2^6;
sbit SCK= P2^5;
sbit SI= P2^4;
#define WREN 0x06 //
#define WRDI 0x04 //
#define RDSR 0x05 //
#define WRSR 0x01 //
#define READ0 0x03 //
#define READ1 0x0b //
#define WRITE0 0x02 //
#define WRITE1 0x0a //
#define uchar unsigned char
uchar ReadByte() //read a byte from device
{
bit bData;
uchar ucLoop;
uchar ucData;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
SCK=1;
SCK=0;
bData=SO;
ucData<<=1;
if(bData)
{ ucData|=0x01; }
}
return ucData;
}
void WriteByte(uchar ucData)//write a byte to device
{
uchar ucLoop;
for(ucLoop=0;ucLoop<8;ucLoop++)
{
if((ucData&0x80)==0) //the MSB send first
{SI=0;}
else
{SI=1;}
SCK=0;
SCK=1;
ucData<<=1;
}
}
uchar ReadReg() //read register
{
uchar ucData;
CS=0;
WriteByte(RDSR);
ucData=ReadByte();
CS=1;
return ucData;
}
uchar WriteReg(uchar ucData) //write register
{
uchar ucTemp;
ucTemp=ReadReg();
if((ucTemp&0x01)==1) //the device is busy
return 0;
CS=0;
WriteByte(WREN);//when write the WREN, the cs must have a high level
CS=1;
CS=0;
WriteByte(WRSR);
WriteByte(ucData);
CS=1;
return 1;
}

void WriteEpm(uchar cData,uchar cAddress,bit bRegion)
/* 寫入一個位元組,cData為寫入的數,cAddress為寫入地址,bRegion為頁 */
{
while((ReadReg()&0x01)==1); //the device is busy
CS=0;
WriteByte(WREN); //when write the wren , the cs must have a high level
CS=1;
CS=0;
if(bRegion==0)
{ WriteByte(WRITE0);} //write the page addr
else
{WriteByte(WRITE1);}
WriteByte(cAddress);
WriteByte(cData);
SCK=0; //
CS=1;
}
uchar ReadEpm(uchar cAddress,bit bRegion)
/* 讀入一個位元組,cAddress為讀入地址,bRegion為頁 */
{
uchar cData;
while((ReadReg()&0x01)==1);//the device is busy
CS=0;
if(bRegion==0)
{WriteByte(READ0); }
else
{WriteByte(READ1);}
WriteByte(cAddress);
cData=ReadByte();
CS=1;
return cData;
}
main()
{
WriteReg(0x00);//set the watchdog time as 1.4s
CS=1;
CS=0; //reset the watchdog
}

回復: xumin9514

所有的89S系列都帶狗,所有的80C系列都不帶狗。
所以89S51 89S52都帶狗,80C51、80C52都不帶狗。

㈧ 51單片機關於看門狗的問題

給單片機設置看門狗電路,是為了在單片機電路死機或程序跑飛的情況下對單片機進行強制復位,從而重新開始正常運行。而在單片機正常工作時是不需要頻繁復位的,這會干擾單片機的正常工作。在程序中設置喂狗間隔時間,就是為了及時對計時器進行清零,以避免不必要的復位操作。只有當死機或程序跑飛的狀態出現時,程序就運行不到計時器的清零操作,這種情況下看門狗電路才會產生復位信號輸出,使單片機從初始化開始重新運行,脫離死機或程序跑飛狀態。

補充回答:在單片機的程序設計中,每次喂狗操作都應該在看門狗定時器溢出之前進行,這樣一來當程序程序正常運行時,看門狗定時器總能夠得到及時的清零,使看門狗不會因定時器溢出而輸出強制復位信號,這是程序連續正常運行所需的。

㈨ 單片機中的看門狗是什麼東西,有什麼作用

看門狗(WDT)是一個定時器,開啟看門狗定時器之後(比如定時200ms),在單片機程序中每隔一定的時間(小於200ms)要「喂狗」一次,即將看門狗定時器清零。

看門狗分硬體看門狗和軟體看門狗。硬體看門狗是利用一個定時器電路,其定時輸出連接到電路的復位端,程序在一定時間范圍內對定時器清零(俗稱「喂狗」),因此程序正常工作時,定時器總不能溢出,也就不能產生復位信號。

如果程序出現故障,不在定時周期內復位看門狗,就使得看門狗定時器溢出產生復位信號並重啟系統。軟體看門狗原理上一樣,只是將硬體電路上的定時器用處理器的內部定時器代替,這樣可以簡化硬體電路設計,但在可靠性方面不如硬體定時器。

比如系統內部定時器自身發生故障就無法檢測到。當然也有通過雙定時器相互監視,這不僅加大系統開銷,也不能解決全部問題,比如中斷系統故障導致定時器中斷失效。

(9)什麼是51單片機看門狗擴展閱讀:

應用:

看門狗電路的應用,使單片機可以在無人狀態下實現連續工作,其工作原理是:看門狗晶元和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的。

一旦單片機由於干擾造成程序跑飛後而陷入某一程序段進入死循環狀態時,寫看門狗引腳的程序便不能被執行,這個時候,看門狗電路就會由於得不到單片機送來的信號,便在它和單片機復位引腳相連的引腳上送出一個復位信號。

使單片機發生復位。即程序從程序存儲器的起始位置開始執行,這樣便實現了單片機的自動復位。

閱讀全文

與什麼是51單片機看門狗相關的資料

熱點內容
解壓文件蘋果手機rar 瀏覽:145
centos開機命令行模式 瀏覽:695
遍歷所有listpython 瀏覽:660
力控加密文件夾 瀏覽:515
如何更改移動伺服器密碼 瀏覽:686
蘋果8p手機加密 瀏覽:749
ipad建文件夾怎麼弄 瀏覽:833
iphone13對wap3加密 瀏覽:555
pdf文件打開失敗 瀏覽:913
dubbo怎麼調用不同伺服器介面 瀏覽:40
全能解壓王app歷史版本 瀏覽:75
優先隊列與拓撲排序演算法 瀏覽:281
pdf轉換formacbook 瀏覽:871
pdf文件內容怎麼編輯 瀏覽:48
134壓縮機排氣溫度多少 瀏覽:256
unity等待編譯後 瀏覽:806
黑鯊手機鎖屏視頻在哪個文件夾 瀏覽:781
wow地圖解壓後怎麼壓縮 瀏覽:823
有pdf卻打不開 瀏覽:462
七星彩軟體app怎麼下載 瀏覽:219