/* As is, all interrupts except reset jumps to 0xffff, which is most * likely not going to useful. To replace an entry, declare your function, * and then change the corresponding entry in the table. For example, * if you have a SCI handler (which must be defined with * #pragma interrupt_handler ...) then in this file: * add * extern void SCIHandler(); * before th table. * In the SCI entry, change: * DUMMY_ENTRY, * to * SCIHandler, */ extern void _start(void); /* entry point in crt??.s */ #define DUMMY_ENTRY (void (*)(void))0xFFFF #ifdef _HC12 #pragma abs_address:0xffd0 #else /* HC11 */ #pragma abs_address:0xffd6 #endif /* change the above address if your vector starts elsewhere */ void (*interrupt_vectors[])(void) = { /* to cast a constant, say 0xb600, use (void (*)())0xb600 */ #ifdef _HC12 /* 812A4 vectors starts at 0xff80, but most entries are not used if you use Key Wakeup H, change the start address to 0xffCE and add one entry to the beginning */ DUMMY_ENTRY, /* BDLC */ /* Key Wakeup J */ DUMMY_ENTRY, /* ATD */ /* ATD */ DUMMY_ENTRY, /* RESERVED */ /* SCI 1 */ #endif DUMMY_ENTRY, /* SCI */ DUMMY_ENTRY, /* SPI */ DUMMY_ENTRY, /* PAIE */ DUMMY_ENTRY, /* PAO */ DUMMY_ENTRY, /* TOF */ DUMMY_ENTRY, /* TOC5 */ /* HC12 TC7 */ DUMMY_ENTRY, /* TOC4 */ /* TC6 */ DUMMY_ENTRY, /* TOC3 */ /* TC5 */ DUMMY_ENTRY, /* TOC2 */ /* TC4 */ DUMMY_ENTRY, /* TOC1 */ /* TC3 */ DUMMY_ENTRY, /* TIC3 */ /* TC2 */ DUMMY_ENTRY, /* TIC2 */ /* TC1 */ DUMMY_ENTRY, /* TIC1 */ /* TC0 */ DUMMY_ENTRY, /* RTI */ DUMMY_ENTRY, /* IRQ */ DUMMY_ENTRY, /* XIRQ */ DUMMY_ENTRY, /* SWI */ DUMMY_ENTRY, /* ILLOP */ DUMMY_ENTRY, /* COP */ DUMMY_ENTRY, /* CLM */ _start /* RESET */ }; #pragma end_abs_address