Yes, you can have a one common Interrupt Service Routine (ISR) for all interrupt vectors on the device. ‘_DefaultInterrupt’ is the common ISR name and can be declared as:
If there is no user defined _DefaultInterrupt, the compiler will define one
consisting of a break and a reset which will cause the debugger to halt, or
if no debugger is present will cause the device to reset.
Consider that you have configured 4 timer interrupts, but only 2 ISR’s with interrupt vector names for 2 timer interrupts are defined:
Interrupt Vector Table (IVT) location for Timer1 and Timer2 will have instruction to jump to ISR _T1Interrupt and _T2Interrupt respectively. Interrupt Service routines for _T3Interrupt and _T4Interrupt are not defined. So IVT locations for Timer 3 and 4 will be empty. The compiler assigns the undefined IVT locations with jump instruction to jump to Default Interrupt service routine defined as _DefaultInterrupt.
So IVT locations of Timer 3 and 4 will have a jump to ISR _DefaultInterrupt(). When interrupt through either Timer 3 or 4 occurs, the execution will jump to ISR _DefaultInterrupt().
Microchip Technology acquires Atmel