Datasheet
© 2008 Microchip Technology Inc. DS41249E-page 123
PIC16F785/HV785
15.6 Power-Down Mode (Sleep)
The Power-down mode is entered by executing a
SLEEP instruction.
If the Watchdog Timer is enabled:
• WDT will be cleared but keeps running
•PD
bit in the STATUS register is cleared
•TO
bit is set
• Oscillator driver is turned off
• I/O ports maintain the status they had before
SLEEP was executed (driving high, low or high-
impedance).
For lowest current consumption in this mode, all I/O
pins should be either at V
DD or VSS, with no external
circuitry drawing current from the I/O pin and all unused
peripheral modules should be disabled. Digital I/O pins
that are high-impedance inputs should be pulled high,
or low, externally to avoid switching currents caused by
floating inputs. The T0CKI input should also be at V
DD
or VSS for lowest current consumption. The
contribution from on-chip pull-ups on PORTA should be
considered.
The MCLR
pin must be at a logic high level.
15.6.1 WAKE-UP FROM SLEEP
The device can wake-up from Sleep through one of the
following events:
1. External Reset input on MCLR
pin
2. Watchdog Timer Wake-up (if WDT was enabled)
3. Interrupt from RA2/AN2/T0CKI/INT/C1OUT pin,
PORTA change or a peripheral interrupt.
The first event will cause a device Reset. The two latter
events are considered a continuation of program exe-
cution. The TO
and PD bits in the STATUS register can
be used to determine the cause of device Reset. The
PD
bit, which is set on power-up, is cleared when Sleep
is invoked. TO
bit is cleared if WDT Wake-up occurred.
The following peripheral interrupts can wake the device
from Sleep:
• TMR1 interrupt; Timer1 must be operating as an
asynchronous counter.
• CCP Capture mode interrupt
• A/D conversion (when A/D clock source is RC)
• EEPROM write operation completion
• Comparator output changes state
• Interrupt-on-change
• External Interrupt from INT pin
Other peripherals cannot generate interrupts since,
during Sleep, no on-chip clocks are present.
When the SLEEP instruction is being executed, the next
instruction (PC + 1) is pre-fetched. For the device to
wake-up through an interrupt event, the corresponding
interrupt enable bit (and PEIE bit where applicable)
must be set (enabled). Wake-up is regardless of the
state of the GIE bit. If the GIE bit is clear (disabled), the
device continues execution of the instruction after the
SLEEP instruction. If the GIE bit is set (enabled), the
device executes the instruction after the SLEEP instruc-
tion, then branches to the interrupt address (0004h). In
cases where the execution of the instruction, following
SLEEP, is not desired, the user should place a NOP
after the SLEEP instruction.
The WDT is cleared when the device wakes up from
Sleep, regardless of the source of wake-up.
15.6.2 WAKE-UP USING INTERRUPTS
When global interrupts are disabled (i.e., GIE bit of the
INTCON register is clear) and any interrupt source has
both its interrupt enable bit and interrupt flag bit set, one
of the following will occur:
• If the interrupt occurs before the execution of a
SLEEP instruction, the SLEEP instruction will
complete as a NOP. Therefore, the WDT and WDT
prescaler and postscaler (if enabled) will not be
cleared, the TO
bit will not be set and the PD bit
will not be cleared.
• If the interrupt occurs during or after the execu-
tion of a SLEEP instruction, the device will
immediately wake-up from Sleep. The SLEEP
instruction will be completely executed before the
wake-up. Therefore, the WDT and WDT prescaler
and postscaler (if enabled) will be cleared, the TO
bit will be set, and the PD
bit will be cleared.
Even if the flag bits were checked before executing a
SLEEP instruction, it may be possible for flag bits to
become set before the SLEEP instruction completes. To
determine whether a SLEEP instruction executed, test
the PD
bit. If the PD bit is set, the SLEEP instruction
was executed as a NOP.
When global interrupts are disabled, a CLRWDT
instruction should be executed before a SLEEP
instruction to ensure that the WDT is cleared.
Note: It should be noted that a Reset generated
by a WDT time-out does not drive MCLR
pin low.
Note: If the global interrupts are disabled (GIE is
cleared), but any interrupt source has both
its interrupt enable bit and the correspond-
ing interrupt flag bits set (including PEIE,
where applicable), the device will immedi-
ately wake-up from Sleep. The SLEEP
instruction is completely executed.