![C51單片機(jī)看門狗電路及程序設(shè)計(jì)方案_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/bf7cab91-038a-41c6-a172-edac6c126b79/bf7cab91-038a-41c6-a172-edac6c126b791.gif)
![C51單片機(jī)看門狗電路及程序設(shè)計(jì)方案_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/bf7cab91-038a-41c6-a172-edac6c126b79/bf7cab91-038a-41c6-a172-edac6c126b792.gif)
![C51單片機(jī)看門狗電路及程序設(shè)計(jì)方案_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/bf7cab91-038a-41c6-a172-edac6c126b79/bf7cab91-038a-41c6-a172-edac6c126b793.gif)
![C51單片機(jī)看門狗電路及程序設(shè)計(jì)方案_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/bf7cab91-038a-41c6-a172-edac6c126b79/bf7cab91-038a-41c6-a172-edac6c126b794.gif)
![C51單片機(jī)看門狗電路及程序設(shè)計(jì)方案_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-9/29/bf7cab91-038a-41c6-a172-edac6c126b79/bf7cab91-038a-41c6-a172-edac6c126b795.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、c51單片機(jī)看門狗電路及程序設(shè)計(jì)方案院系:信息工程學(xué)院年級:2010級電子一班 劉禹豪電子一班 趙訓(xùn)虎電子二班 鄧啟新一、 引言在由單片機(jī)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)中,程序的正常運(yùn)行常常會因?yàn)閬碜酝饨绲碾姶艌龈蓴_等原因而被打斷,從而造成程序的跑飛,而陷入死循環(huán)。由此導(dǎo)致單片機(jī)控制的系統(tǒng)無法繼續(xù)工作,造成整個系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時監(jiān)測的考慮,便產(chǎn)生了一種專門用于監(jiān)測單片機(jī)程序運(yùn)行狀態(tài)的芯片或程序,俗稱看門狗(watchdog) (1)看門狗電路基本原理看門狗電路的應(yīng)用,使單片機(jī)可以在無人狀態(tài)下實(shí)現(xiàn)連續(xù)工作,其工作原理是:看門狗芯片和單片機(jī)的一個i/o引
2、腳相連 此處設(shè)計(jì)原理實(shí)際上為下文中硬件看門狗設(shè)計(jì)思路。*,該i/o引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機(jī)其他控制語句中間的,一旦單片機(jī)由于干擾造成程序跑飛后而陷入某一程序段 進(jìn)入死循環(huán)狀態(tài)時,寫看門狗引腳的程序便不能被執(zhí)行,這個時候,看門狗電路就會由于得不到單片機(jī)送來的信號,便在它和單片機(jī)復(fù)位引腳相連的引腳上送出一個復(fù)位信號,使單片機(jī)發(fā)生復(fù)位,即程序從程序存儲器的起始位置開始執(zhí)行,這樣便實(shí)現(xiàn)了單片機(jī)的自動復(fù)位。(2)看門狗電路一般設(shè)計(jì)方式“看門狗”電路一般分為硬件看門狗與軟件看門狗兩種設(shè)計(jì)方式。硬件看門狗是利用了一個定時器,來監(jiān)控主程
3、序的運(yùn)行,也就是說在主程序的運(yùn)行過程中,我們要在定時時間到之前對定時器進(jìn)行復(fù)位。如果出現(xiàn)死循環(huán),或者說pc指針不能回來,那么定時時間到后就會使單片機(jī)復(fù)位。常用的wdt芯片如max813,5045,imp 813等,價格410元不等.軟件看門狗技術(shù)的原理和硬件看門狗類似,只不過是用軟件的方法實(shí)現(xiàn)(即利用單片機(jī)內(nèi)部定時器資源,通過編程模擬硬件看門狗工作方式),以51系列為例:因在51單片機(jī)中有兩個定時器,在利用內(nèi)部定時器資源來對主程序的運(yùn)行進(jìn)行監(jiān)控時??梢詫1(或t0)設(shè)定一定的定時時間(設(shè)定的定時值要小于主程序的運(yùn)行時間),當(dāng)產(chǎn)生定時中斷的時候?qū)σ粋€變量進(jìn)行賦值(此變量在主程序運(yùn)行的開始已有一
4、個初值)。當(dāng)主程序運(yùn)行至最后時對此變量的值進(jìn)行判斷,如果值發(fā)生了預(yù)期的變化,就說明t0中斷正常,如果沒有發(fā)生變化則使程序復(fù)位??紤]到設(shè)計(jì)要求,本設(shè)計(jì)采用軟件看門狗設(shè)計(jì)思路。二、 看門狗電路整體設(shè)計(jì)思路根據(jù)設(shè)計(jì)要求,本設(shè)計(jì)利用c51單片機(jī)內(nèi)部自帶的定時器1進(jìn)行編程,并配合少量電路實(shí)現(xiàn)“看門狗“電路功能。整個設(shè)計(jì)分為軟件部分與硬件部分,如下:(1) 軟件部分設(shè)計(jì)原理:軟件設(shè)計(jì)分為三部分:“看門狗“定時器設(shè)置程序、溢出中斷服務(wù)程序和喂狗代碼。1.1設(shè)計(jì)思路:1)在主程序開頭,“看門狗“定時器設(shè)置程序設(shè)置定時器1計(jì)時50ms。2)當(dāng)定時達(dá)50ms時,定時器1產(chǎn)生溢出中斷,溢出中斷服務(wù)程序開始工作,將看
5、門狗標(biāo)志num加1。當(dāng)num的值等于100時,說明看門狗定時器已經(jīng)計(jì)時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ù)計(jì)數(shù)值進(jìn)行調(diào)整:當(dāng)num門限值較小,即看門狗計(jì)數(shù)時間較短時,喂狗代碼可放于程序中各循環(huán)體之后或均勻分布于整個主程序中。當(dāng)num門限值較大,即看門狗計(jì)數(shù)時間較長時,喂狗代碼可放于程序主循環(huán)體末尾。但是需注意看門狗計(jì)數(shù)時間必須長
6、于正常工作時間,以免非正常復(fù)位。1.2軟件設(shè)計(jì)流程圖:start定時器1主程序寄存器累加定時器1設(shè)置溢出中斷開定時器1循環(huán)中斷服務(wù)程序喂狗代碼num+1nonum=100?yes復(fù)位以下為三部分詳細(xì)程序設(shè)計(jì)1.3“看門狗“定時器設(shè)置程序:“看門狗“定時器設(shè)置程序?qū)Χ〞r器1進(jìn)行設(shè)置。設(shè)定時器1為工作方式1。設(shè)m為工作方式1下,定時器最大計(jì)數(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 = mt/ t機(jī) (2)因此,當(dāng)t1工作于方式1,定時時
7、間為50ms,時鐘頻率fosc=12mhz時,可知:x=m- t/ t機(jī) = 65536-50000/1 =15536=3cb0h所以,“看門狗“定時器設(shè)置程序清單(c語言)如下:tmod=0x10; /設(shè)置tmod寄存器,定時器1設(shè)為方式1 tl1=0xb0; /設(shè)置定時器初值低8位 th1=0x3c; /設(shè)置定時器初值高8位,設(shè)置為計(jì)時50ms et1=1; /開定時器1溢出中斷 ea=1; /開總中斷控制 tf1=0; /定時器1溢出中斷標(biāo)志清零 tr1=1; /開定時器11.4溢出中斷服務(wù)程序:溢出中斷服務(wù)程序?yàn)槎〞r器1溢出中斷服務(wù)程序,每執(zhí)行一次,num加1,并判斷num是否達(dá)到10
8、0,即計(jì)時5s。若已達(dá)到5s,i/o口p1.0輸出復(fù)位信號。溢出中斷服務(wù)程序清單(c語言)如下:void int_t1() interrupt 3 using 3 /定時器1溢出中斷服務(wù)程序num+; /每溢出一次標(biāo)志加1if (num=100) /當(dāng)標(biāo)志等于100時,即計(jì)時5s p1=(0x01); /p1.0輸出1 1.5喂狗代碼:喂狗代碼主要功能為暫時關(guān)定時器1,定時器1寄存器清零,看門狗標(biāo)志num清零和重新開啟定時器1.喂狗代碼程序清單(c語言)如下:tr1=0; /喂狗代碼,關(guān)定時器1 tl1=0xb0; /重新設(shè)置定時器初值 th1=0x3c; tf1=0; /定時器1溢出中斷標(biāo)志
9、清零 tr1=1; /開定時器11.6完整測試程序清單完整測設(shè)程序分為兩部分,以一個正向運(yùn)行一次的流水燈程序和逆向無限循環(huán)流水燈程序組成。在正向進(jìn)行一次流水燈程序時,看門狗代碼不會復(fù)位單片機(jī);逆向無限循環(huán)流水燈程序時,延時5s,看門狗復(fù)位單片機(jī)。完整測試程序清單(c語言)如下:#include reg51.h#include stdio.hunsigned int i,num; /設(shè)置變量unsigned char temp;void delay(unsigned int t); /聲明delay函數(shù)int main() num=0; /看門狗復(fù)位標(biāo)志 p1=(0x00); /將p1口賦值為0
10、 tmod=0x10; /設(shè)置tmod寄存器,定時器1設(shè)為方式1 tl1=0xb0; /設(shè)置定時器初值低8位 th1=0x3c; /設(shè)置定時器初值高8位,設(shè)置為計(jì)時50ms et1=1; /開定時器1溢出中斷 ea=1; /開總中斷控制 tf1=0; /定時器1溢出中斷標(biāo)志清零 tr1=1; /開定時器1 temp=0x01; /流水燈狀態(tài)標(biāo)志 for(i=0;i8;i+) /流水燈程序(1) p0=temp; /點(diǎn)亮p0口對應(yīng)的led delay(100); temp=1; /點(diǎn)亮的led燈前移一位 tr1=0; /喂狗代碼,關(guān)定時器1 tl1=0xb0; /重新設(shè)置定時器初值 th1=0x
11、3c; tf1=0; /定時器1溢出中斷標(biāo)志清零 tr1=1; /開定時器1 while(1) /流水燈程序(2) /倒序,無限循環(huán) temp=0x80; for(i=0;i=1; tr1=0; /喂狗代碼 tl1=0xb0; th1=0x3c; tf1=0; tr1=1; num=0; return 0;void delay(unsigned int t) /延時子程序 register unsigned int bt; for(;t;t-) for(bt=0;bt255;bt+); void int_t1() interrupt 3 using 3 /定時器1溢出中斷服務(wù)程序 num+;
12、/每溢出一次標(biāo)志加1 if (num=100) /當(dāng)標(biāo)志等于100時,即計(jì)時5s p1=(0x01); /p1.0輸出1 完整測試程序清單(c語言反匯編版)如下:q0000: ljmp q00ab q0003: push acc inc 0ah mov a,0ah jnz q000d inc 09h q000d: xrl a,#64h orl a,09h jnz q0016 mov p1,#0feh q0016: pop acc reti nop nop ljmp q0003 q001e: clr a mov 09h,a mov 0ah,a mov p1,#0ffh mov tmod,#10h
13、 mov tl1,#0b0h mov th1,#3ch setb et1 setb ea clr tf1 setb tr1 mov 08h,#01h mov 0bh,a mov 0ch,a q003e: lcall q0089 mov a,08h add a,acc mov 08h,a inc 0ch mov a,0ch jnz q004f inc 0bh q004f: clr c subb a,#08h mov a,0bh subb a,#00h jc q003e clr tr1 mov tl1,#0b0h mov th1,#3ch clr tf1 setb tr1 q0064: mov 0
14、8h,#80h clr a mov 0bh,a mov 0ch,a q006c: lcall q0089 mov a,08h clr c rrc a mov 08h,a inc 0ch mov a,0ch jnz q007d inc 0bh q007d: clr c subb a,#08h mov a,0bh subb a,#00h jc q006c sjmp q0064 ret q0089: mov a,08h cpl a mov p0,a mov r7,#64h mov r6,#00h q0092: mov a,r7 orl a,r6 jz q00aa clr a mov r5,a mov r4,a q0099: inc r5 cjne r5,#00h,q009e inc r4 q009e: mov a,r5 cpl a orl a,r4 jnz q0099 mov a,r7 dec r7 jnz q0092 dec
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年學(xué)校食堂廚師崗位聘任協(xié)議
- 2025年度辦公樓租賃合同全新版
- 2025年度體育場館清潔工勞動合同范本(含設(shè)施清潔與保養(yǎng))
- 2025年度租賃型公寓退房協(xié)議
- 二零二五年度電商企業(yè)客服外包智能服務(wù)系統(tǒng)合作協(xié)議
- 交通監(jiān)控設(shè)施安裝合同書樣本
- 二手房交易合同定金協(xié)議范本
- 二手房按揭貸款購房合同
- 二手車輛買賣合同范本
- 個人股權(quán)轉(zhuǎn)讓合同范本標(biāo)準(zhǔn)
- 腔鏡器械的清潔消毒與保養(yǎng)課件
- 骨科手術(shù)的術(shù)后飲食和營養(yǎng)指導(dǎo)
- 旅游定制師入行培訓(xùn)方案
- 奧數(shù)培訓(xùn)班課件
- 2024年中國南方航空股份有限公司招聘筆試參考題庫含答案解析
- 六年級上冊數(shù)學(xué)應(yīng)用題100題
- 個人代賣協(xié)議
- 賞析小說語言(二)
- 【立高食品公司的償債能力現(xiàn)狀及問題分析(論文9000字)】
- 10.《運(yùn)動技能學(xué)習(xí)與控制》李強(qiáng)
- 冀教版數(shù)學(xué)七年級下冊綜合訓(xùn)練100題含答案
評論
0/150
提交評論