by the way: if you are using a Metrowerks compiler you have to declare your routine as interrupt-routine with the #pragma directive #pragma TRAP_PROC (or #pragma TRAP_PROC SAVE_REGS) void Timebase_1mS(void) ...... In addition: Parts of the vector table should be of the type void (*NAME)(void) . Wonder what the casting operator of the compiler does with a ''0'' in the vector table.... Another thing: Be careful with comments in a #define directive. Because e.g. #define RIM _asm('' rim'') //comment will substitute the string ''RIM;'' for _asm('' rim'') //comment;that means the '';'' will be ineffective after substitution. Better you use the comment with /* ... */ e.g. #define RIM _asm('' rim'') /* comment */or strictly abstain from using comments in #define directives. Regards WoRo