10.11 Determining the Cause of a Reset
Upon any Reset, multiple bits in the STATUS, PCON0 and PCON1 registers are updated to indicate the cause of the Reset. The following tables show the Reset conditions of these registers.
| STKOVF | STKUNF | RWDT | RMCLR | RI | POR | BOR | TO | PD | MEMV | Condition | 
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 | x | 1 | 1 | 1 | Power-on Reset | 
| 0 | 0 | 1 | 1 | 1 | 0 | x | 0 | x | u | Illegal, TO is set on POR | 
| 0 | 0 | 1 | 1 | 1 | 0 | x | x | 0 | u | Illegal, PD is set on POR | 
| 0 | 0 | u | 1 | 1 | u | 0 | 1 | 1 | u | Brown-out Reset | 
| u | u | 0 | u | u | u | u | 0 | u | u | WDT Reset | 
| u | u | u | u | u | u | u | 0 | 0 | u | WDT Wake-up from Sleep | 
| u | u | u | u | u | u | u | 1 | 0 | u | Interrupt Wake-up from Sleep | 
| u | u | u | 0 | u | u | u | u | u | 1 | MCLR Reset during normal operation | 
| u | u | u | 0 | u | u | u | 1 | 0 | u | MCLR Reset during Sleep | 
| u | u | u | u | 0 | u | u | u | u | u | RESETInstruction Executed | 
| 1 | u | u | u | u | u | u | u | u | u | Stack Overflow Reset (STVREN = 1) | 
| u | 1 | u | u | u | u | u | u | u | u | Stack Underflow Reset (STVREN = 1) | 
| u | u | u | u | u | u | u | u | u | 0 | Memory Violation Reset | 
| Condition | Program Counter | STATUS Register | PCON0 Register | PCON1 Register | 
|---|---|---|---|---|
| Power-on Reset | 0 | ---1
                        1000 | 0011
                        110x | ----
                        --1- | 
| Brown-out Reset | 0 | ---1
                        1000 | 0011
                        11u0 | ----
                        --u- | 
| MCLR Reset during normal operation | 0 | -uuu
                        uuuu | uuuu
                        0uuu | ----
                        --1- | 
| MCLR Reset during Sleep | 0 | ---1
                        0uuu | uuuu
                        0uuu | ----
                        --u- | 
| WDT Time-out Reset | 0 | ---0
                        uuuu | uuu0
                        uuuu | ----
                        --u- | 
| WDT Wake-up from Sleep | PC + 1 | ---0
                        0uuu | uuuu
                        uuuu | ----
                        --u- | 
| Interrupt Wake-up from Sleep | PC + 1(1) | ---1
                        0uuu | uuuu
                        uuuu | ----
                        --u- | 
| RESETInstruction Executed | 0 | ---u
                        uuuu | uuuu
                        u0uu | ----
                        --u- | 
| Stack Overflow Reset (STVREN = 1) | 0 | ---u
                        uuuu | 1uuu
                        uuuu | ----
                        --u- | 
| Stack Underflow Reset (STVREN = 1) | 0 | ---u
                        uuuu | u1uu
                        uuuu | ----
                        --u- | 
| Memory Violation Reset | 0 | -uuu
                        uuuu | uuuu
                        uuuu | ----
                        --0- | 
Legend:
         u = unchanged, x = unknown, — = unimplemented bit, reads
         as ‘0’.
Note: 
         
- When the wake-up is due to an interrupt and Global Interrupt Enable (GIE) bit is set, the return address is pushed on the stack and PC is loaded with the interrupt vector (0004h) after execution of PC + 1.
