51單片機輕松入門—基于STC15W4K系列(C語言版)
李友全 編著:http://m.zg4o1577.cn/bbs/dpj-37954-1.html
第11章 單片機小知識(復位 ) 1 外部RST引腳復位(不斷電下載程序) 2 軟件復位 3 內部低壓檢測復位 4 看門狗復位 復位將使單片機內核及其它功能部件都處在一個確定的初始狀態,并從這個狀態 開始工作,復位分為熱啟動復位(斷電復位)和冷啟動復位(非斷電復位)兩大 類,它們區別如表11-1所示。 表11-1 冷啟動復位與熱啟動復位對照表 冷啟動復位 | 系統斷電后再上電引 起的硬復位 | 熱啟動復位 | 通過RST引腳產生的 硬復位 | 內部看門狗復位 | 內部低壓檢測復位 | 通過對IAP_CONTR寄 存器操作的軟復位 |
|
| 從系ISP監控程序區開始執行程序,如果檢測 不到合法的ISP下載命令流,將軟復位到用戶 程序區執行用戶程序 | 復位到用戶程序區0000H處。 |
|
外部RST引腳復位就是從外部向RST引腳施加大于100uS寬度的高電平復位脈沖,外 部高電平消失后,單片機從系統ISP程序下載監控區啟動,因此可以使用P5.4/RST引腳外 接常開按鍵到VCC的方式實現不斷電下載程序(先點下載,后按復位鍵),這樣可提高程序 下載速度。P5.4/RST引腳出廠時被配置為I/O口,要將其配置為復位引腳,需要在ISP下 載程序時設置(如上圖),需要注意的是在ISP軟件中改變了P5.4口的設置后,程序下載 到單片機并不立即生效,需要給單片機斷電重啟后才生效,ISP軟件中的很多設置都是這 樣的,測試過程注意斷電重啟才生效的問題。 2 軟件復位 從用戶程序區軟件復位并切換到用戶程序命令為: IAP_CONTR = 0x20 ; 從用戶程序區軟件復位并切換到ISP程序下載監控區命令為: IAP_CONTR = 0x60 ; 實驗代碼如下: #include "STC15W4K.H" // 注意宏定義后面沒分號 void delay3s(void) { unsigned char i,j,k; for(i=255;i>0;i--) // 注意后面沒分號 for(j=255;j>0;j--) // 注意后面沒分號 for(k=255;k>0;k--); // 注意后面有分號 } void main(void) { P00=0; delay3s(); P00=1; delay3s(); IAP_CONTR = 0x20 ; // 選擇用戶程序區軟復位。 // IAP_CONTR = 0x60 ; // 選擇ISP區軟復位。 while(1); } 3 內部低壓檢測復位 為防止電源接通與斷開瞬間系統供電不穩定狀態引起程序功能混亂(部分 外圍器件供電不在要求范圍內),在要求比較嚴格的運用中建議使用低壓檢 測復位,當電源電壓VCC低于內部低電壓檢測門檻電壓時,單片機產生復位, 當VCC高于內部低電壓檢測門檻電壓時,單片機解除復位狀態并恢復正常工 作,要使用此功能,前提是在STC-ISP軟件下載程序時,允許低電壓檢測復 位,低壓檢測門檻電壓就是復位門檻電壓,IAP15W4K58S4單片機內部低壓檢 測門檻電壓可設定范圍是:2.03V—4.08V。 // 程序功能:程序運行狀態LED點亮,復位狀態LED熄滅。
#include "STC15W4K.H" void main(void) { while(1) { P41=0; // 點亮LED } } 4 看門狗復位
在工業控制、汽車電子、航空航天等需要高可靠性的系統中,為了防止系統在異常情況下 受到干擾,CPU程序跑飛,導致系統長時間異常工作,往往需要在系統中使用看門狗電路,看 門狗電路的基本作用就是監視CPU的工作,正常工作時,單片機可以在規定的時間內復位看門 狗(即喂狗),時間只要不超出看門狗電路的溢出時間即可,當系統進入死循環或者執行到無 程序代碼區造成死機時,單片機就會停止喂狗,超過一定時間后,看門狗電路就會強制系統 復位,使系從新開始運行,要使用此功能,需要在STC-ISP軟件下載程序時開啟看門狗,開啟 看門狗后程序必須不斷地在規定的時間內喂狗,注意:看門狗一旦開啟,單片機執行任何指 令都無法將其關閉,必須斷電才能關閉。狗定時器溢出時間由ISP軟件的分頻系數確定(見下 頁表格)。
具有看門狗的程序示例。 #include “STC15W4K.H” void main(void) { … // 其他初始化代碼 while(1) { display(); // 顯示程序 keyboard(); // 鍵盤程序 … // 其他代碼 WDT_CONTR = 0x3c; // 喂狗信號,復位WDT。 } } |