第十一節(jié):PIC系列單片機(jī)低功耗模式(SLEEP)
一、進(jìn)入SLEEP
執(zhí)行一條"SLEEP"指令即可進(jìn)入低功耗模式。當(dāng)進(jìn)入SLEEP后,WDT被清零,然后重新開始計(jì)數(shù)。狀態(tài)寄存器F3K中的PD位被置成"0",TO位置成"1",同時(shí)振蕩停止(指OSC1 端的振蕩電路)。所有的I/O口保持原來的狀態(tài)。這種工作模式功耗最低。
為使耗電流最小,進(jìn)入SLEEP前,應(yīng)使所有的I/O口處于高電平VDD或低電平VSS,而不應(yīng)使其處于高阻態(tài),以免產(chǎn)生開關(guān)電流損耗。你可以在I/O口加上拉或下拉電阻,或者把I/O口都置成輸出態(tài)來避免其處于高阻態(tài)(浮態(tài))。
RTCC端亦應(yīng)置為VDD或VSS(通過上拉或下拉)。
MCLR必須處于高電平狀態(tài)。
二、喚醒SLEEP
SLEEP可被WDT溢出喚醒;或在MCLR端加低電平喚醒SLEEP。后一種喚醒方法經(jīng)常用在以下應(yīng)用場合:在系統(tǒng)主電源掉電,并由后備電源(電池)供電后,執(zhí)行"SLEEP"指令進(jìn)入低功耗模式,這樣電池就可長時(shí)間保持系統(tǒng)數(shù)據(jù)。當(dāng)主電源恢復(fù)供電時(shí),讓其在MCLR產(chǎn)生一低電平喚醒SLEEP,并重新復(fù)位。這樣需在MCLR端加一外部復(fù)位電路,請參考§1.10.5。
系統(tǒng)上電時(shí),F(xiàn)3的PD被置為"1",而執(zhí)行"SLEEP"指令后,PD位被置成"0"。所以通過 PD位可以判斷系統(tǒng)是從SLEEP模式喚醒而復(fù)位,還是上電后的復(fù)位。F3中的TO位則可判斷當(dāng)處于SLEEP狀態(tài)的系統(tǒng)是由WDT溢時(shí)喚醒或是由外界給MCLR端一個(gè)低電平而喚醒。這些區(qū)別有時(shí)是很重要的,特別是對系統(tǒng)的一些初始化