【51单片机快速入门指南】8:看门狗定时器(WDT)
目錄
- 硬知識
- 測試程序
- main.c
- 現象
普中51-單核-A2
STC89C52
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0
硬知識
???????摘自《STC89C52系列單片機器件手冊》
適用型號:
STC89C51,STC89C52,STC89C53,STC89C14,STC89LE51,STC89LE52,STC89LE53,STC89LE14,STC89C54,STC89C58,STC89C516,STC89C510,STC89C512,STC89C514,STC89LE54,STC89LE58,STC89LE516,STC89LE510,STC89LE512,STC89LE514
???????在工業控制/ 汽車電子/ 航空航天等需要高可靠性的系統中,為了防止“系統在異常情況下,受到干擾,MCU/CPU程序跑飛,導致系統長時間異常工作”,通常是引進看門狗,如果MCU/CPU 不在規定的時間內按要求訪問看門狗,就認為MCU/CPU處于異常狀態,看門狗就會強迫MCU/CPU復位,使系統重新從頭開始按規律執行用戶程序。
???????STC89C52系列單片機內部也引進了此看門狗功能, 使單片機系統可靠性設計變得更加方便/簡潔。為此功能,我們增加如下特殊功能寄存器WDT_CONTR:
WDT_CONTR: 看門狗(Watch-Dog-Timer)控制寄存器
EN_WDT :
???????看門狗允許位, 當設置為“1 ”時,看門狗啟動。
CLR_WDT :
???????看門狗清“0”位,當設為“1”時,看門狗將重新計數。硬件將自動清“0 ”此位。
IDLE_WDT :
???????看門狗“IDLE ”模式位, 當設置為“1”時, 看門狗定時器在“空閑模式”計數
???????當清“0”該位時, 看門狗定時器在“空閑模式”時不計數
PS2,PS1,PS0 :
???????看門狗定時器預分頻值,如下表所示
看門狗溢出時間 =(12×=(12×=(12×Pre-scale×32768)/×32768)/×32768)/Oscillator frequency
可視為16位的定時器:
看門狗溢出時間 =12/=12/=12/Oscillator frequency × 65536 × 2[PS2:PS0]2^{[PS2:PS0]}2[PS2:PS0]
測試程序
main.c
初始化看門狗,[PS2:PS0] = 0,晶振頻率為11.0592MHz,則看門狗溢出時間 =12/=12/=12/ 11.0592M × 65536 × 2[PS2:PS0]=2^{[PS2:PS0]}=2[PS2:PS0]= 0.0711s = 71.1ms
#include <STC89C5xRC.H>#define WDT_EN 0x20 #define WDT_DIS 0x00 #define WDT_CLR 0x10 #define WDT_IDLE_EN 0x08 #define WDT_IDLE_DIS 0x00void main(void) {WDT_CONTR = 0;WDT_CONTR = WDT_EN|WDT_CLR|WDT_IDLE_EN|0;P20 = 0;while(1){ } }現象
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【51单片机快速入门指南】8:看门狗定时器(WDT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Rails IDE 有很多选择,但是具体
- 下一篇: HtmlGenericControl