C51單片機(jī)看門狗電路及程序設(shè)計方案0001_第1頁
C51單片機(jī)看門狗電路及程序設(shè)計方案0001_第2頁
C51單片機(jī)看門狗電路及程序設(shè)計方案0001_第3頁
C51單片機(jī)看門狗電路及程序設(shè)計方案0001_第4頁
C51單片機(jī)看門狗電路及程序設(shè)計方案0001_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C51單片機(jī)看門狗電路及程序設(shè)計案院系:信息工程學(xué)院年級:2010級電子一班禹豪電子一班訓(xùn)虎電子二班鄧啟新Word文檔引言在由單片機(jī)構(gòu)成的微型計算機(jī)系統(tǒng)中, 擾等原因而被打斷, 從而造成程序的跑飛, 繼續(xù)工作,造成整個系統(tǒng)的陷入停滯狀態(tài), 程序的正常運行常常會因為來自外界的電磁場干 而陷入死循環(huán)。由此導(dǎo)致單片機(jī)控制的系統(tǒng)無法 發(fā)生不可預(yù)料的后果, 所以出于對單片機(jī)運行狀態(tài)進(jìn)行實時監(jiān)測的考慮, 便產(chǎn)生了一種專門用于監(jiān)測單片機(jī)程序運行狀態(tài)的芯片或程序,俗 稱看門狗(watchdog)(1)看門狗電路基本原理看門狗電路的應(yīng)用,使單片機(jī)可以在無人狀態(tài)下實現(xiàn)連續(xù)工作,其工作原理是:看門狗芯片和單片機(jī)的一

2、個I/O引腳相連*,該I/O引腳通過程序控制它定時地往看門狗的這個引 腳上送入高電平(或低電平),這一程序語句是分散地放在單片機(jī)其他控制語句中間的,一旦單片機(jī)由于干擾造成程序跑飛后而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時,寫看門狗引腳的程序便不能被執(zhí)行,這個時候,看門狗電路就會由于得不到單片機(jī)送來的信號,便在它和單片機(jī)復(fù)位引腳相連的引腳上送出一個復(fù)位信號,使單片機(jī)發(fā)生復(fù)位,即程序從程序存儲器的起始位置開始執(zhí)行,這樣便實現(xiàn)了單片機(jī)的自動復(fù)位。此處設(shè)計原理實際上為下文中硬件看門狗設(shè)計思路。(2 )看門狗電路一般設(shè)計式“看門狗”電路一般分為 硬件看門狗 與軟件看門狗 兩種設(shè)計式。硬件看門狗 是利用了一個定時

3、器, 來監(jiān)控主程序的運行, 也就是說在主程序的運行過程中,我們要在定時時間到之前對定時器進(jìn)行復(fù)位。如果出現(xiàn)死循環(huán),或者說PC指針不能回來,那么定時時間到后就會使單片機(jī)復(fù)位。 常用的 WDT芯片如MAX813,5045,IMP 813 等, 價格410元不等.軟件看門狗技術(shù)的原理和硬件看門狗類似,只不過是用軟件的法實現(xiàn)(即利用單片機(jī)部定時器資源,通過編程模擬硬件看門狗工作式),以51系列為例:因在 51單片機(jī)中有兩個定時器,在利用部定時器資源來對主程序的運行進(jìn)行監(jiān)控時。可以對T1 (或T0 )設(shè)定一定的定時時間(設(shè)定的定時值要小于主程序的運行時間),當(dāng)產(chǎn)生定時中斷的時候?qū)σ粋€變量進(jìn)行賦值(此變量

4、在主程序運行的開始已有一個初值)。當(dāng)主程序運行至最后時對此變量的值進(jìn)行判斷,如果值發(fā)生了預(yù)期的變化,就說明T0中斷正常,如果沒有發(fā)生變化則使程序復(fù)位??紤]到設(shè)計要求,本設(shè)計采用軟件看門狗設(shè)計思路。二、看門狗電路整體設(shè)計思路根據(jù)設(shè)計要求,本設(shè)計利用C51單片機(jī)部自帶的定時器 1進(jìn)行編程,并配合少量電路實 現(xiàn)“看門狗“電路功能。整個設(shè)計分為軟件部分 與硬件部分,如下:(1)軟件部分設(shè)計原理:軟件設(shè)計分為三部分:“看門狗“定時器設(shè)置程序、溢出中斷服務(wù)程序 和喂狗代碼。1.1設(shè)計思路:1)在主程序開頭,“看門狗“定時器設(shè)置程序 設(shè)置定時器1計時50ms。2) 當(dāng)定時達(dá)50ms時,定時器1產(chǎn)生溢出中斷,

5、溢出中斷服務(wù)程序 開始工作,將 看門狗標(biāo)志num加1。當(dāng)num的值等于100時,說明看門狗定時器已經(jīng)計時 5s,此時, 單片機(jī)I/O端口 P1.0輸出高電平,對程序進(jìn)行復(fù)位。3)在此過程中,喂狗代碼 將被穿插于程序中循環(huán)體末尾。當(dāng)循環(huán)體結(jié)束時,喂狗 代碼執(zhí)行,關(guān)閉定時器 1、清空num并重新初始化定時器設(shè)置。若循環(huán)體進(jìn)入死循環(huán), 喂狗代碼無法執(zhí)行,num將一直累加至100,此時程序復(fù)位。注:喂狗代碼放置位置可根據(jù) num預(yù)計數(shù)值進(jìn)行調(diào)整:當(dāng)num門限值較小,即看門狗計數(shù)時間較短時,喂狗代碼可放于程序中各循環(huán)體之后或均勻分布于整個主程序 中。當(dāng)num門限值較大,即看門狗計數(shù)時間較長時,喂狗代碼可

6、放于程序主循環(huán)體末 尾。但是需注意看門狗計數(shù)時間必須長于正常工作時間,以免非正常復(fù)位。1.2軟件設(shè)計流程圖:1.3 “看門狗“定時器設(shè)置程序:“看門狗“定時器設(shè)置程序?qū)Χ〞r器 1進(jìn)行設(shè)置。設(shè)定時器1為工作式1。設(shè)M為 工作式1下,定時器最大計數(shù)值,可知 M=65536 。所以,設(shè)定時器1的初值為X,則 初值X與機(jī)器期I機(jī)及定時時間T的關(guān)系為:(M-X)T 機(jī)=T(1)其中:T機(jī)=12個時鐘期=12 /fosc。所以,定時器1的初值為:X = M T/ T 機(jī)(2)因此,當(dāng)T1工作于式1,定時時間為 50ms,時鐘頻率fosc=12MHz 時,可知:X=M- T/ T 機(jī) =65536-5000

7、0/1 =15536=3CB0H所以,“看門狗“定時器設(shè)置程序清單( c語言)如下:TMOD=0x10;/設(shè)置TMOD寄存器,定時器1設(shè)為式1TL仁 0xB0;/設(shè)置定時器初值低8位TH1=0x3C;/設(shè)置定時器初值高 8位,設(shè)置為計時50msET1=1;/開定時器1溢出中斷EA=1;/開總中斷控制TF1=0;/定時器1溢出中斷標(biāo)志清零TR1=1;/開定時器11.4溢出中斷服務(wù)程序:溢出中斷服務(wù)程序為定時器1溢出中斷服務(wù)程序,每執(zhí)行一次,num加1,并判斷num是否達(dá)到100,即計時5s。若已達(dá)到5s, I/O 口 P1.0輸出復(fù)位信號。溢出中斷服務(wù)程序清單(c語言)如下:void int_T

8、1() interrupt 3 using 3/定時器1溢出中斷服務(wù)程序num+;/每溢出一次標(biāo)志加 1if (num=100)/當(dāng)標(biāo)志等于100時,即計時 5sP仁(0x01);/P1.0 輸出 1 1.5喂狗代碼:喂狗代碼主要功能為暫時關(guān)定時器1,定時器1寄存器清零,看門狗標(biāo)志num清零和重新開啟定時器1.喂狗代碼程序清單(c語言)如下:TR1=0;/喂狗代碼,關(guān)定時器 1TL1=0xB0;/重新設(shè)置定時器初值TH1=0x3C;TF1=0;TR1=1;/定時器1溢出中斷標(biāo)志清零/開定時器11.6完整測試程序清單完整測設(shè)程序分為兩部分,以一個正向運行一次的流水燈程序和逆向無限循環(huán)流水燈程序組

9、成。在正向進(jìn)行一次流水燈程序時,看門狗代碼不會復(fù)位單片機(jī);逆向無限循環(huán)流水燈程序時,延時5s,看門狗復(fù)位單片機(jī)。完整測試程序清單(c語言)如下:#i nclude reg51.h#in elude stdio.hun sig ned int i,num; un sig ned char temp;/設(shè)置變量void delay (un sig ned int t);/聲明delay函數(shù)int mai n()num=0;P仁 (0x00);TMOD=0x10;TL1=0xB0;TH1=0x3C;ET1=1;EA=1;TF1=0;TR1=1;/看門狗復(fù)位標(biāo)志/將P1 口賦值為0/設(shè)置TMOD寄存器

10、,定時器1設(shè)為式1/設(shè)置定時器初值低 8位/設(shè)置定時器初值高 8位,設(shè)置為計時50ms/開定時器1溢出中斷/開總中斷控制/定時器1溢出中斷標(biāo)志清零/開定時器1temp=0x01; for(i=0;i8;i+) P0=temp; delay(100); temp=1;/流水燈狀態(tài)標(biāo)志/流水燈程序(1)/點亮P0 口對應(yīng)的LED點亮的LED燈前移一位TR1=0;TL1=0xB0; TH1=0x3C; TF1=0;TR1=1;/喂狗代碼,關(guān)定時器1/重新設(shè)置定時器初值/定時器1溢出中斷標(biāo)志清零/開定時器1while(1)temp=0x80;/流水燈程序(2)/倒序,無限循環(huán)for(i=0;i=1;/

11、喂狗代碼TR1=0;TL1=0xB0;TH1=0x3C;TF1=0;TR1=1;num=0;return 0;/延時子程序void delay (un sig ned int t) register un sig ned int bt; for(;t;t-) for(bt=0;bt255;bt+);void in t_T1() in terrupt 3 using 3 nu m+;if (n um=100)P仁 (0x01);/定時器1溢出中斷服務(wù)程序 /每溢出一次標(biāo)志加 1/當(dāng)標(biāo)志等于100時,即計時5s/P1.0 輸出 1完整測試程序清單(c語言反匯編版)如下:Q0000:Q0003:LJ

12、MP Q00ABPUSH ACCINC 0AHMOV A,0AHJNZ Q000DINC 09HQ000D:XRL A,#64HORL A,09HJNZ Q0016MOV P1,#0FEHQ0016:Q001E:Q003E:Q004F:Q0064:Q006C:POPACCRETINOPNOPLJMPQ0003CLRAMOV09H,AMOV0AH,AMOVP1,#0FFHMOVTMOD,#1OHMOVTL1,#0B0HMOVTH1,#3CHSETBET1SETBEACLRTF1SETBTR1MOV08H,#01HMOV0BH,AMOV0CH,ALCALL Q0089MOVA,08HADDA,AC

13、CMOV08H,AINC0CHMOVA,0CHJNZQ004FINC0BHCLRCSUBBA,#08HMOVA,0BHSUBBA,#00HJCQ003ECLRTR1MOVTL1,#0B0HMOVTH1,#3CHCLRTF1SETBTR1MOV08H,#80HCLRAMOV0BH,AMOV0CH,ALCALL Q0089MOVA,08HCLRCRRCAMOV08H,AINC0CHMOVA,0CHJNZQ007DINC0BHQ007D:CLRCSUBBA,#08HMOVA,0BHSUBBA,#00HJCQ006CSJMPRETQ0064Q0089:MOVA,08HCPLAMOVP0,AMOVR7,#64HMOVR6,#00HQ0092:MOVA,R7ORLA,R6JZQ00AACLRAMOVR5,AMOVR4,AQ0099:INCR5CJNER5,#00H,Q009EINCR4Q009E:MOVA,R5CPLAORLA,R4JNZQ0099MOVA,R7DECR7JNZQ0092DECR6SJMPQ0092Q00AA:RETQ00A

溫馨提示

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

評論

0/150

提交評論