Yes, Timer1 is the only timer that can operate in Sleep mode. From datasheet:
Entering Sleep mode from any other mode does not require a clock switch. This is because no clocks are needed once the controller has entered Sleep. If the WDT is selected, the INTRC source will continue to operate. If the Timer1 oscillator is enabled, it will also continue to run.
To run a timer with minimal power consumption, use Sleep mode and Timer1.
If you wish to use other peripherals, like Timer0, while in power-managed mode, there's an alternative to Sleep mode called the Idle mode:
If the IDLEN bit is set to
‘1’
when aSLEEP
instruction is executed, the peripherals will be clocked from the clock source selected using the SCS<1:0> bits; however, the CPU will not be clocked. The clock source status bits are not affected. Setting IDLEN and executing aSLEEP
instruction provides a quick method of switching from a given Run mode to its corresponding Idle mode.
To set the IDLEN bit to 1, add OSCCON |= 0b10000000;
somewhere before issuing Sleep();
.
Obviously Idle mode will consume a bit more power than Sleep mode, since peripherals are left operating.