9.11 Determining the Cause of a Reset

Upon any Reset, multiple bits in the STATUS and PCON0 registers are updated to indicate the cause of the Reset. The following table shows the Reset conditions of these registers.

Table 9-3. Reset Condition for Special Registers
ConditionProgram
CounterSTATUS Register(2,3)PCON0 Register
Power-on Reset0-110 00000011 110x
Brown-out Reset0-110 00000011 11u0
MCLR Reset during normal operation0-uuu uuuuuuuu 0uuu
MCLR Reset during Sleep0-10u uuuuuuuu 0uuu
WDT Time-out Reset0-0uu uuuuuuu0 uuuu
WDT Wake-up from SleepPC + 2-00u uuuuuuuu uuuu
WWDT Window Violation Reset0-uuu uuuuuu0u uuuu
Interrupt Wake-up from SleepPC + 2(1)-10u 0uuuuuuu uuuu
RESET Instruction Executed0-uuu uuuuuuuu u0uu
Stack Overflow Reset (STVREN = 1)0-uuu uuuu1uuu uuuu
Stack Underflow Reset (STVREN = 1)0-uuu uuuuu1uu uuuu
Data Protection (Fuse Fault)0---u uuuuuuuu uuuu
VREG or ULP Ready Fault0---1 10000011 001u

Legend: u = unchanged, x = unknown, — = unimplemented bit, reads as ‘0’.

Note:
  1. When the wake-up is due to an interrupt and the Global Interrupt Enable (GIE) bit is set, the return address is pushed on the stack and the PC is loaded with the corresponding interrupt vector (depending on source, high or low priority) after execution of PC + 2.
  2. If a Status bit is not implemented, that bit will be read as ‘0’.
  3. Status bits Z, C, DC are reset by POR/BOR.