導航:首頁 > 操作系統 > 單片機看門狗程序

單片機看門狗程序

發布時間:2022-01-11 23:11:56

⑴ (單片機)外部看門狗是怎麼實現的

你應該看一看一款具體的外部看門狗晶元的內部結構圖,比如MAX706,他有一個引腳WDI,是看門狗計數器輸入引腳,看門狗晶元不會去統計單片機輸出的脈沖數,而是只檢測在這個引腳上是否發生了電平翻轉。
單片機需要控制這個引腳的電平保持高低不停的跳變。
一但看門狗啟用,看門狗晶元內部的1.6秒計數器開始計數,如果WDI引腳上現在了電平反轉,則復位計數器,如果在1.6秒的時間內沒有在WDI引腳上檢測到電平反轉,看門狗晶元就會在RST引腳上輸出一個200ms的低電平,復位目標MCU,然後復位他自己的計數器,重新開1.6秒計數,然後以上過程無限重復。

⑵ 關於AVR單片機的看門狗程序,謝謝!

WDTCR=(1<<WDCE)|(1<<WDE);

這句等同於WDTCR=0x18;
要認識到WDCE=4,WDE=3,也就是他們在WDTCR寄存器中的第幾位;
分開運算就是
1<<4=0x10;
1<<3=0x08;
0x10|0x08=0x18
WDTCR=0x18;

還有你這個關看門狗的程序還沒完成,如果要關看門狗還要在置1後的四個時鍾周期內對WDE寫0;

void WDT_off(void)
{
WDTCR=(1<<WDCE)|(1<<WDE);
WDTCR&=~(1<<WDE); //寫0
}

⑶ STC單片機怎麼加看門狗程序

加到While循環的最前面就可以了。
define Pre_scale_Word 0x3c //0.68s
sfr WDT_CONTR 0xc1;
..................................
while(1)
{
WDT_COUNTR=Pre_scale_Word;
....................................
}

⑷ 關於51單片機中得看門狗程序

在由單片機構成的微型計算機系統中,由於單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對單片機運行狀態進行實時監測的考慮,便產生了一種專門用於監測單片機程序運行狀態的晶元,俗稱"看門狗"(watchdog)
看門狗電路的應用,使單片機可以在無人狀態下實現連續工作,其工作原理是:看門狗晶元和單片機的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的,一旦單片機由於干擾造成程序跑飛後而陷入某一程序段 進入死循環狀態時,寫看門狗引腳的程序便不能被執行,這個時候,看門狗電路就會由於得不到單片機送來的信號,便在它和單片機復位引腳相連的引腳上送出一個復位信號,使單片機發生復位,即程序從程序存儲器的起始位置開始執行,這樣便實現了單片機的自動復位。
編輯本段基本原理
看門狗,又叫 watchdog timer,是一個定時器電路, 一般有一個輸入,叫喂狗(kicking the dog or service the dog),一個輸出到MCU的RST端,MCU正常工作的時候,每隔一段時間輸出一個信號到喂狗端,給 WDT 清零,如果超過規定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就會給出一個復位信號到MCU,使MCU復位. 防止MCU死機. 看門狗的作用就是防止程序發生死循環,或者說程序跑飛。 工作原理:在系統運行以後也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那麼看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。所以在使用有看門狗的晶元時要注意清看門狗。

⑸ 單片機的看門狗怎麼用

首先,你要知道什麼是看門狗?在由單片機構成的微型計算機系統中,由於單片機的工作常常會受到來自外界電磁場的干擾,造成程序的跑飛,而陷入死循環,程序的正常運行被打斷,由單片機控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對單片機運行狀態進行實時監測的考慮,便產生了一種專門用於監測單片機程序運行狀態的晶元,俗稱"看門狗"(watchdog)。其次,看門狗的工作原理是什麼?在系統運行以後也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那麼看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。所以在使用有看門狗的晶元時要注意清看門狗(俗稱喂狗)。下面這段程序是我成功調試過了的,看門狗寄存器的各位的具體的意義,你可以自己去看下單片機的PDF文檔,裡面有詳細的介紹.#include52系列單片機頭文件#defineucharunsignedchar#defineuintunsignedintsfrWDT_CONTR=0xe1;/*看門狗寄存器聲明*/sbitled1=P1^0;/*接發光二極體*/voiddelayms(uintxms)/*延時函數*/{uinti,j;for(i=xms;i>0;i--)/*i=xms即延時約xms毫秒*/for(j=110;j>0;j--);}voidmain(){WDT_CONTR=0x35;led1=0;delayms(500);led1=1;while(1){delayms(1000);//WDT_CONTR=0x35;/*喂狗,如果這句話不加的話單片機就會一直復位,看到的現象是發光二極體閃爍,加上這句的話,發光二極體一直亮著,所以在實際工程應用的時候通常要在程序裡面調用比較頻繁的函數內部寫上這句話*/}}/*******************************************************************喂狗的技巧:如果一個大循環少於看門狗益處時間,放在while(1)哪個地方都可以啊,如果大於,看下哪個地方停頓時間長就放哪*********************************************************************/

⑹ 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都不帶狗。

⑺ 單片機 看門狗 程序解釋

// WDRST = 0x1E;
// WDRST = 0xE1;
這兩句是喂狗指令,也只有AT89C52系列單片機才有這個指令。溢出時間是固定的,溢出會導致mcu復位,所以需要在程序中不斷喂狗。

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

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

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

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

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

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

(8)單片機看門狗程序擴展閱讀:

看門狗工作原理:

使用時,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,也必須執行該指令序列。

⑼ 單片機程序里看門狗程序重要嗎

看門狗功能可以在一定程度上提高系統的穩定性,在單片機因外部干擾等原因「死機」時能夠自動復位重新啟動。並不是一定要使用的,根據情況來應用。有些單片機不使用內置看門狗時要在程序上人工關閉,比如MSP430單片機。

⑽ 關於單片機的程序--看門狗程序

看門狗就是在單片機執行程序的時候,防止程序進入死循環而設置的。在現在的應用中一般都是用單片機內部的專用看門狗,在單片機初始化的時候給看門狗寄存器設置一定值,這個定值就是在單片機正常執行程序的時間范圍外的一定值,也也不能太大。在具體的程序應用中,要不斷地給它賦初值(喂狗)。在看門狗計數到溢出的時候,沒有收到喂狗命令,看門狗會發出復位單片機的命令。一般在發行版的程序中存在看門狗。而在調試的時候就沒有看門狗了。

閱讀全文

與單片機看門狗程序相關的資料

熱點內容
哪裡找橫屏圖片素材app 瀏覽:841
linuxifcfgeth0沒有 瀏覽:991
光遇光遇伺服器已滿怎麼解決 瀏覽:744
macpythonmodule 瀏覽:802
exo在哪裡下載app 瀏覽:784
it程序員在國企的感受 瀏覽:499
快手app哪裡看物流 瀏覽:213
梁的加密區在梁的什麼位置 瀏覽:638
蘿卜源碼編譯 瀏覽:982
安卓手機連不上蘋果熱點是為什麼 瀏覽:437
微信加密密保問題忘記怎麼辦 瀏覽:920
在哪裡能製作手機app 瀏覽:165
python搭建web網站 瀏覽:685
空乘程序員 瀏覽:349
玩加密幣犯法嗎 瀏覽:245
html載入pdf 瀏覽:1002
git源碼如何本地編譯命令 瀏覽:868
單片機研究報告 瀏覽:265
天正建築命令欄 瀏覽:598
加密貨幣應稅事件 瀏覽:459