By this setting I get the interrupt by TMR0 every 32.768ms <===
{(256*prescaler)/Frequency/4)}=(256*128)/(4MHz/4)

but there were some conflict because I also need to add WDT for any
unexpected crash... WDT should be bigger than my Interrupt service time so
that It can't reset PIC during the interrupt service routine.
but from my setting, I will get WDT time-out every 256us which is not what I
want. How can I get bigger WDT time-out period value (like 1min or bigger)?

I saw a sample assembly code at the Microchip website( DS33023: Mid-range
MCU Family Reference Manual) about changing prescaler between TMR0 and WDT.
but not sure this is what I need and if it is how can I apply this to my
code.

I need this TMR0 as a time critical interrupt handling. my interrupt routine
needs to get values from 4 channel(RA5,RE0,RE1,RE2) through ADC and send
those values to SPI bus less than every 40ms.( isn't this quite heavy to be
exercuted in 32.768ms?)

While you are waiting for the TMR0 to time-out your code is doing something
else. Usually there is a repeating loop of some sort. In this loop you should
place a CLRWDT. This instruction resets the WDT so it never times out.

Well, that is really what I want. just making WDT disable...but what if my
PIC has a unepected crash?
all that I need from Watch dog is just preventing unexpected crash.
I just thought every micro has to have something like WDT for the case of
crash...

>Well, that is really what I want. just making WDT disable...but what if my
>PIC has a unepected crash?
>all that I need from Watch dog is just preventing unexpected crash.
>I just thought every micro has to have something like WDT for the case of
>crash...

You could have a CMOS 555 timer that you periodically reset from a pin. This
could then pull the reset line when it timed out.