Can anyone tell me why my interrupt is not firing? The T0IR flag is set upon rollover of the TIMER0 32 bit timer, but my code is not vectored to the interrupt code. My variable 'system_timer' never gets decremented. unsigned long system_timer, j; void decrement_timers() __irq { // occurs 896 times per second system_timer--; T0IR |= 1; } int main() { VPBDIV = 1; // set up delay timer (TIMER 0) VICIntSelect = 0; // all interrupts classified as IRQs VICVectCntl0 = 0x00000024; VICVectAddr0 = (unsigned int) decrement_timers; VICIntEnable = 0x00000010; // Disable Timer0 and Reset Interrupt Flag T0TCR = 0; T0IR |= 1; T0MR0 = 0; T0MCR = 1; T0CTCR = 0; T0PR = 0; T0TCR = 1; // just an infinite loop to check Timer0 system_timer = 4000; j = 0; for(;;) { j = j + 2; } }