13.1.2 Interrupts During Doze
System behavior for interrupts that may occur during Doze mode are
            configured using the ROI and DOE bits. Refer to the example below for details about system behavior in
            all cases for a transition from Main to ISR back to Main.
        Doze Software Example
// Mainline operation bool somethingToDo = FALSE; void main() { initializeSystem(); // DOZE = 64:1 (for example) // ROI = 1; GIE = 1; // enable interrupts while (1) { // If ADC completed, process data if (somethingToDo) { doSomething(); DOZEN = 1; // resume low-power } } } // Data interrupt handler void interrupt() { // DOZEN = 0 because ROI = 1 if (ADIF) { somethingToDo = TRUE; DOE = 0; // make main() go fast ADIF = 0; } // else check other interrupts... if (TMR0IF) { timerTick++; DOE = 1; // make main() go slow TMR0IF = 0; } }
Note: User software can change the DOE
                bit in the ISR.
        