1996 Microchip Technology Inc.
DS30430B-page 53
8.12.3 WAKE-UP USING INTERRUPTS
When global interrupts are disabled GIE cleared 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 com-
plete as a NOP. Therefore, the WDT and WDT postscaler will not be cleared, the TO bit will not
be set and PD bits will not be cleared.
• If the interrupt occurs during or after the execu-
tion of a SLEEP instruction, the device will immedi- ately wake up from sleep. The SLEEP instruction
will be completely executed before the wake-up. Therefore, the WDT and WDT postscaler 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.
To ensure that the WDT is cleared, a CLRWDT instruc- tion should be executed before a SLEEP instruction.
8.13 Program VerificationCode Protection
If the code protection bits have not been programmed, the on-chip program memory can be
read out for verification purposes.
8.14 ID Locations
Four memory locations 2000h - 2003h are designated as ID locations to store checksum or other code
identification numbers. These locations are not accessible during normal execution but are readable
and writable only during programverify. Only the 4 least significant bits of ID location are usable.
For ROM devices, these values are submitted along with the ROM code.
Note: Microchip does not recommend code pro-
tecting widowed devices.
8.15 In-Circuit Serial Programming
PIC16F8X microcontrollers can be serially programmed while in the end application circuit. This is
simply done with two lines for clock and data, and three other lines for power, ground, and the programming
voltage. Customers can manufacture boards with unprogrammed devices, and then program the
microcontroller just before shipping the product, allowing the most recent firmware or custom firmware
to be programmed.
The device is placed into a programverify mode by holding the RB6 and RB7 pins low, while raising the
MCLR pin from V
IL
to V
IHH
see programming specification. RB6 becomes the programming clock
and RB7 becomes the programming data. Both RB6 and RB7 are Schmitt Trigger inputs in this mode.
After reset, to place the device into programmingverify mode, the program counter PC points to location 00h.
A 6-bit command is then supplied to the device, 14-bits of program data is then supplied to or from the device,
using load or read-type instructions. For complete details of serial programming, please refer to the
PIC16CXX Programming Specifications Literature DS30189.
FIGURE 8-20: TYPICAL IN-SYSTEM SERIAL PROGRAMMING
CONNECTION
For ROM devices, both the program memory and Data EEPROM memory may be read, but only the Data
EEPROM memory may be programmed.
External Connector
Signals To Normal
Connections
To Normal Connections
PIC16FXX V
DD
V
SS
MCLRV
PP
RB6 RB7
+5V 0V
V
PP
CLK Data IO
V
DD
DS30430B-page 54
1996 Microchip Technology Inc.
NOTES:
1996 Microchip Technology Inc.
DS30430B-page 55
9.0 INSTRUCTION SET SUMMARY