PIC單片機16F84的內(nèi)部硬件資源(七)
10 復位
復位是單片機的初始化操作。其主要功能是把程序計數(shù)器PCL初始化為000H,可使16F84單片機從000H單元開始執(zhí)行程序。
PIC16F84芯片有下列幾種不同的復位方式。
(1)芯片上電復位POR。
(2)正常工作狀態(tài)下通過外部MCLR引腳加低電平復位。
(3)在省電休眠狀態(tài)下通過外部MCLR引腳加低電平復位。
(4)監(jiān)視定時器WDT超時溢出復位。
PIC16F84片內(nèi)集成有“上電復位”POR電路,對于一般應用,只要把MCLR引腳接高電位即可。
在正常工作或休眠狀態(tài)下用MCLR復位,只需在MCLR引腳上加一按鍵瞬間接地即可。
單片機16F84復位操作,對其它一些寄存器會有影響,如表1所示。
11監(jiān)視定時器WDT
單片機系統(tǒng)常用于工業(yè)控制,在操作現(xiàn)場通常會有各種干擾,可能會使執(zhí)行程序彈飛到一種死循環(huán),從而導致整個單片機控制系統(tǒng)癱瘓。如果操作者在場,就可進行人工復位,擺脫死循環(huán)。但操作者不能一直監(jiān)視著系統(tǒng),即使監(jiān)視著系統(tǒng),也往往是引起不良后果之后才進行人工復位。由于PIC16F84中具有程序運行自動監(jiān)視系統(tǒng),即監(jiān)視定時器WDT(Watch Dog Time),直譯為“看門狗”定時器。這好比是主人養(yǎng)了一條狗,主人在正常干活時總不忘每隔一段時間就給狗喂食,狗就保持安靜,不影響主人干活。如果主人打嗑睡,不干活了,到一定時間,狗餓了,發(fā)現(xiàn)主人還沒有給它吃東西,就會大叫起來,把主人喚醒。由此可見,WDT有如下特性:
(1)本身能獨立工作,基本上不依賴CPU。
(2)CPU在一個固定的時間間隔中和WDT打一次交通(如使其清零,即喂一次狗),以表明系統(tǒng)目前工作正常。
(3)當CPU落入死循環(huán)后,能被WDT及時發(fā)覺(如WDT計數(shù)溢出),并使系統(tǒng)復位。
PIC16F84內(nèi)的WDT,其定時計數(shù)的脈沖序列由片內(nèi)獨立的RC振蕩器產(chǎn)生,所以它不需要外接任何器件就可以工作。而且這個片內(nèi)RC振蕩器與OSC1/CLKIN(引腳{16})上的振蕩電路無關(guān),即使OSC1和OSC2上的時鐘不工作,WDT照樣可以監(jiān)視定時。例如:當PIC16F84在執(zhí)行SLEEP指令后,芯片進入休眠狀態(tài),CPU不工作,主振蕩器也停止工作,但是,WDT照樣可監(jiān)視定時。當WDT超時溢出后,可激活(喚醒)芯片繼續(xù)正常的操作。而在正常操作期間,WDT超時溢出將產(chǎn)生一個復位信號。如果不需要這種監(jiān)視定時功能,在固化編程時,可關(guān)閉這個功能。附圖是監(jiān)視定時器的結(jié)構(gòu)框圖。表2是與WDT有關(guān)的寄存器。
WDT的定時周期在不加分頻器的情況下,其基本定時時間是18ms,這個定時時間還受溫度、VDD和不同元器件的工藝參數(shù)等的影響。如果需要更長的定時周期,還可以通過軟件控制OPT/ON寄存器把預分頻器配置給WDT,這個預分頻器的最大分頻比可達到1∶128。這樣就可把定時周期擴大128倍,即達到23秒。
如果把預分頻器配置給WDT,用CLRWDT和SLEEP指令可以同時對WDT和預分頻器清零,從而防止計時溢出引起芯片復位。所以在正常情況下,必須在每次計時溢出之前執(zhí)行一條CLRWDT指令(即喂一次“狗”),以避免引起芯片復位。當系統(tǒng)受到嚴重干擾處于失控狀態(tài)時,就不可能在每次計時溢出之前執(zhí)行一條CLR WDT指令,WDT就產(chǎn)生計時溢出,從而引起芯片復位,從失控狀態(tài)又重新進入正常運行狀態(tài)。
當WDT計時溢出時,還會同時清除狀態(tài)寄存器中的D4位T0,檢測T0位即可知道復位是否由于WDT計時溢出引起的?! ~?
復位是單片機的初始化操作。其主要功能是把程序計數(shù)器PCL初始化為000H,可使16F84單片機從000H單元開始執(zhí)行程序。
PIC16F84芯片有下列幾種不同的復位方式。
(1)芯片上電復位POR。
(2)正常工作狀態(tài)下通過外部MCLR引腳加低電平復位。
(3)在省電休眠狀態(tài)下通過外部MCLR引腳加低電平復位。
(4)監(jiān)視定時器WDT超時溢出復位。
PIC16F84片內(nèi)集成有“上電復位”POR電路,對于一般應用,只要把MCLR引腳接高電位即可。
在正常工作或休眠狀態(tài)下用MCLR復位,只需在MCLR引腳上加一按鍵瞬間接地即可。
單片機16F84復位操作,對其它一些寄存器會有影響,如表1所示。
11監(jiān)視定時器WDT
單片機系統(tǒng)常用于工業(yè)控制,在操作現(xiàn)場通常會有各種干擾,可能會使執(zhí)行程序彈飛到一種死循環(huán),從而導致整個單片機控制系統(tǒng)癱瘓。如果操作者在場,就可進行人工復位,擺脫死循環(huán)。但操作者不能一直監(jiān)視著系統(tǒng),即使監(jiān)視著系統(tǒng),也往往是引起不良后果之后才進行人工復位。由于PIC16F84中具有程序運行自動監(jiān)視系統(tǒng),即監(jiān)視定時器WDT(Watch Dog Time),直譯為“看門狗”定時器。這好比是主人養(yǎng)了一條狗,主人在正常干活時總不忘每隔一段時間就給狗喂食,狗就保持安靜,不影響主人干活。如果主人打嗑睡,不干活了,到一定時間,狗餓了,發(fā)現(xiàn)主人還沒有給它吃東西,就會大叫起來,把主人喚醒。由此可見,WDT有如下特性:
(1)本身能獨立工作,基本上不依賴CPU。
(2)CPU在一個固定的時間間隔中和WDT打一次交通(如使其清零,即喂一次狗),以表明系統(tǒng)目前工作正常。
(3)當CPU落入死循環(huán)后,能被WDT及時發(fā)覺(如WDT計數(shù)溢出),并使系統(tǒng)復位。
PIC16F84內(nèi)的WDT,其定時計數(shù)的脈沖序列由片內(nèi)獨立的RC振蕩器產(chǎn)生,所以它不需要外接任何器件就可以工作。而且這個片內(nèi)RC振蕩器與OSC1/CLKIN(引腳{16})上的振蕩電路無關(guān),即使OSC1和OSC2上的時鐘不工作,WDT照樣可以監(jiān)視定時。例如:當PIC16F84在執(zhí)行SLEEP指令后,芯片進入休眠狀態(tài),CPU不工作,主振蕩器也停止工作,但是,WDT照樣可監(jiān)視定時。當WDT超時溢出后,可激活(喚醒)芯片繼續(xù)正常的操作。而在正常操作期間,WDT超時溢出將產(chǎn)生一個復位信號。如果不需要這種監(jiān)視定時功能,在固化編程時,可關(guān)閉這個功能。附圖是監(jiān)視定時器的結(jié)構(gòu)框圖。表2是與WDT有關(guān)的寄存器。
WDT的定時周期在不加分頻器的情況下,其基本定時時間是18ms,這個定時時間還受溫度、VDD和不同元器件的工藝參數(shù)等的影響。如果需要更長的定時周期,還可以通過軟件控制OPT/ON寄存器把預分頻器配置給WDT,這個預分頻器的最大分頻比可達到1∶128。這樣就可把定時周期擴大128倍,即達到23秒。
如果把預分頻器配置給WDT,用CLRWDT和SLEEP指令可以同時對WDT和預分頻器清零,從而防止計時溢出引起芯片復位。所以在正常情況下,必須在每次計時溢出之前執(zhí)行一條CLRWDT指令(即喂一次“狗”),以避免引起芯片復位。當系統(tǒng)受到嚴重干擾處于失控狀態(tài)時,就不可能在每次計時溢出之前執(zhí)行一條CLR WDT指令,WDT就產(chǎn)生計時溢出,從而引起芯片復位,從失控狀態(tài)又重新進入正常運行狀態(tài)。
當WDT計時溢出時,還會同時清除狀態(tài)寄存器中的D4位T0,檢測T0位即可知道復位是否由于WDT計時溢出引起的?! ~?
成都 衛(wèi)東
知識競賽試題:
24簡述PIC單片機中看門狗WDT的作用和功能。
本文標簽:PIC單片機16F84的內(nèi)部硬件資源(七)
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《PIC單片機16F84的內(nèi)部硬件資源(七)》相關(guān)權(quán)利人與機電之家網(wǎng)取得聯(lián)系。
關(guān)于“PIC單片機16F84的內(nèi)部硬件資源(七)”的更多資訊