單片機(jī)的看門(mén)狗課件_第1頁(yè)
單片機(jī)的看門(mén)狗課件_第2頁(yè)
單片機(jī)的看門(mén)狗課件_第3頁(yè)
單片機(jī)的看門(mén)狗課件_第4頁(yè)
單片機(jī)的看門(mén)狗課件_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)的看門(mén)狗-及系列為什么要看門(mén)狗?你家的看門(mén)狗是做什么的?“看門(mén)狗定時(shí)器”是這樣一種東西,從功能上說(shuō)它可以讓微控制器在意外狀況下(比如軟件陷入死循環(huán)或跑飛)重新回復(fù)到系統(tǒng)上電狀態(tài),以保證系統(tǒng)出問(wèn)題的時(shí)候重啟一次。 就跟我們現(xiàn)在用電腦一樣,死機(jī)了你就按一下reset鍵重啟一次電腦,看門(mén)狗就是負(fù)責(zé)干這個(gè)事兒的。它是52單片機(jī)增加的一個(gè)功能,以前Intel 8031、AT 89C51時(shí)代單片機(jī)片內(nèi)都沒(méi)有“看門(mén)狗”功能,需要我們外擴(kuò)看門(mén)狗芯片,比如X5045。“看門(mén)狗”就是一個(gè)計(jì)數(shù)器,由于位數(shù)有限計(jì)數(shù)器能夠裝的數(shù)值是有限的(比如8位的最多裝256個(gè)數(shù)、16位的最多裝65536個(gè)數(shù)),從開(kāi)啟“看門(mén)狗

2、”那刻起,它就開(kāi)始不停的數(shù)機(jī)器周期,數(shù)一個(gè)機(jī)器周期就計(jì)數(shù)器加,加到計(jì)數(shù)器盛不下了(術(shù)語(yǔ)叫溢出)就就產(chǎn)生一個(gè)復(fù)位信號(hào),重啟系統(tǒng)。看門(mén)狗的看門(mén)原理我們?cè)谠O(shè)計(jì)程序時(shí),先根據(jù)看門(mén)狗計(jì)數(shù)器的位數(shù)和系統(tǒng)的時(shí)鐘周期算一下計(jì)滿數(shù)需要的時(shí)間,就是說(shuō)在這個(gè)時(shí)間內(nèi)“看門(mén)狗”計(jì)數(shù)器是不會(huì)裝滿的,然后在這個(gè)時(shí)間內(nèi)告訴它重新開(kāi)始計(jì)數(shù),就是把計(jì)數(shù)器清零,這個(gè)過(guò)程叫“喂狗”,這樣隔一段時(shí)間喂一次狗,只要程序正常運(yùn)行他就永遠(yuǎn)計(jì)不滿,一旦出現(xiàn)死循環(huán)之類(lèi)的故障,沒(méi)有及時(shí)來(lái)清零計(jì)數(shù)器,就會(huì)導(dǎo)致裝滿了溢出,他就重啟系統(tǒng),這就是舉個(gè)例子說(shuō):8051 單片機(jī)選用12MHz晶振,一個(gè)時(shí)鐘周期為1us,如果“看門(mén)狗計(jì)數(shù)器”是16位的,最大計(jì)數(shù)

3、65536個(gè),那么從0開(kāi)始計(jì)到65535需要約65ms,所以我們可以在程序的50ms左右清零一次計(jì)數(shù)器(“喂狗”),讓他重新從0開(kāi)始計(jì),再過(guò)50ms,再清,這樣下去只要程序正常運(yùn)行,計(jì)數(shù)器永遠(yuǎn)不會(huì)計(jì)滿,也就永遠(yuǎn)不會(huì)被“看門(mén)狗”復(fù)位。每種單片機(jī)的“看門(mén)狗”實(shí)現(xiàn)方法不盡相同,但是原理都一樣,而且“看門(mén)狗”都是啟動(dòng)了之后就不能被關(guān)閉,只能系統(tǒng)復(fù)位(重新斷電在上電)才能關(guān)閉。 設(shè)置“看門(mén)狗”的一般步驟如下:1. 設(shè)置“看門(mén)狗”相關(guān)寄存器,啟動(dòng)“看門(mén)狗”;2. 隔一段時(shí)間清零一次,“喂狗”;3. 如果程序正常,一直運(yùn)行;如果程序出錯(cuò),沒(méi)有按時(shí)“喂狗”,“看門(mén)狗”就在溢出的時(shí)候復(fù)位系統(tǒng)。的看門(mén)狗AT89S

4、52單片機(jī)看門(mén)狗定時(shí)器是14位的,最大計(jì)數(shù)214=16384個(gè)數(shù),每計(jì)16384個(gè)時(shí)鐘周期就溢出一次。也就是說(shuō)如果使用12M晶振的話,至少應(yīng)該在16.384ms內(nèi)喂一次狗。 其中N是單片機(jī)的時(shí)鐘周期,STC89C5X系列單片機(jī)提供6時(shí)鐘周期和12時(shí)鐘周期兩種時(shí)鐘周期,可以在燒寫(xiě)程序時(shí)修改; Prescale是預(yù)分頻數(shù),通過(guò)設(shè)置【看門(mén)狗控制寄存器】可以設(shè)置為2、4、8、16、32、64、128、256;怎么設(shè)置演示程序中有介紹; 晶振頻率就是系統(tǒng)選用的晶振。 所以如果同樣選擇12MHz晶振,使用傳統(tǒng)的12時(shí)鐘周期,它最小的溢出時(shí)間是(12*2*32768)/(12*106)=65.536ms,最

5、大溢出時(shí)間是(12*256*32768)/(12*106)8.38s。如果選擇256分頻,也就是說(shuō)只要在8.38秒之內(nèi)喂一次狗就可以了。 看門(mén)狗應(yīng)用舉例STC89C52最小單片機(jī)系統(tǒng)+兩個(gè)指示燈 串行口接口(用于下載程序和測(cè)試本次試驗(yàn) #include sfr WDT_CONTR=0 xE1;/定義特殊功能寄存器:STC單片機(jī)看門(mén)狗控制寄存器#define uchar unsigned char#define true 1#define false 0#define WEIGOU WDT_CONTR=0 x34/看門(mén)狗啟動(dòng)設(shè)置和“喂狗”操作sbit LED=P16;/信號(hào)燈,系統(tǒng)正常工作就一閃

6、一閃的sbit LED_busy=P17;/工作燈,上電滅一會(huì)兒(約800ms),然后正常工作的時(shí)候一直亮著;用于指示系統(tǒng)是否重啟uchar timer0_ctr,i;const uchar str=I love MCU!;/定義一句話,讓他從串口輸出,只有系統(tǒng)重啟的時(shí)候才輸出一次,所以也是用于驗(yàn)證看門(mén)狗有沒(méi)有重啟系統(tǒng)/延時(shí)函數(shù),11.0592MHz晶振下延時(shí)約xms毫秒void delay_ms(unsigned xms)unsigned x,y;for(x=xms; x0; x-)for(y=110; y0; y-);/串行口初始化程序void InitCOM()SCON=0 x50;/S

7、CON=(0101 0000)B,波特率不加倍,允許接收TH1=0 xFD;/設(shè)置波特率=9600bpsTL1=TH1;TR1=1;/啟動(dòng)定時(shí)器1/定時(shí)器0中斷服務(wù)程序程序,控制信號(hào)燈閃爍。如果系統(tǒng)正常運(yùn)行,信號(hào)燈1.5秒閃一次void Timer0_isr() interrupt 1TH0=0 x4C;TL0=0 x00;timer0_ctr+;if(timer0_ctr=30)TR0=0;/定時(shí)器0暫停,否則再次來(lái)中斷會(huì)沖斷程序timer0_ctr=0;LED=0;delay_ms(100);LED=1;TR0=1;/定時(shí)器0重新啟動(dòng)void main()WEIGOU;/上來(lái)第一步設(shè)置看門(mén)

8、狗定時(shí)器,并且啟動(dòng)InitMain();InitCOM();/開(kāi)機(jī)通過(guò)串口發(fā)送一次“I love MCU!”,使用串口調(diào)試助手可以查看/由于在while大循環(huán)外邊,所以只要系統(tǒng)不重新啟動(dòng),則上電后只會(huì)發(fā)送一次,用于判斷系統(tǒng)是否重啟i=0;while(stri!=0)SBUF=stri;while(TI=0);TI=0;i+;/while大循環(huán)while(true)/約每隔800ms喂一次狗,可以通過(guò)調(diào)整這里的喂狗時(shí)間來(lái)驗(yàn)證看門(mén)狗是否有效/我們?cè)O(shè)置的看門(mén)狗約1秒。所以可以用800和2000分別做一次試驗(yàn),看是否會(huì)被看門(mén)狗復(fù)位delay_ms(800);LED_busy=0;/第一次上電約延時(shí)80

9、0ms工作燈點(diǎn)亮,如果系統(tǒng)不重啟,他將一直亮著,用于指示系統(tǒng)是否重啟WEIGOU;89S52看門(mén)狗使用方法 在ATMEL的89S52系列的89S52與89C51功能相同。指令兼容。HEX程序無(wú)需任何轉(zhuǎn)換可以直接使用。89S52比89C51增加了一個(gè)看門(mén)狗功能。89S52的其它功能可以參見(jiàn)89C52的資料??撮T(mén)狗具體使用方法如下:在程序初始化中向看門(mén)狗寄存器(WDTRST地址是0A6H)中先寫(xiě)入01EH,再寫(xiě)入0E1H。即可激活看門(mén)狗。的看門(mén)狗應(yīng)用在C語(yǔ)言中要增加一個(gè)聲明語(yǔ)句。 在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0 xA6; 程序代碼sfr WDTRST = 0 xA6; main() WDTRST=0 x1E; WDTRST=0 xE1;/初始化看門(mén)狗。 While (1) WDTRST=0 x1E; WDTRST=0 xE1;/喂狗指令 注意事項(xiàng):1 89S51的看門(mén)狗必須

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論