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