Page 431 - Programming Microcontrollers in C
P. 431
416 Chapter 8 MCORE, A RISC Machine
void handler(void);
void unused_vector(void);
static struct Table {
void (*vector[32]) (void);
};
struct Table table ={
unused_vector, /* 31 unused */
unused_vector, /* 30 unused */
unused_vector, /* 29 unused */
unused_vector, /* 28 INT7 */
unused_vector, /* 27 INT6 */
unused_vector, /* 26 INT5 */
unused_vector, /* 25 INT4 */
unused_vector, /* 24 INT3 */
unused_vector, /* 23 INT2 */
unused_vector, /* 22 INT1 */
unused_vector, /* 21 INT0 */
unused_vector, /* 20 ISPI */
unused_vector, /* 19 UART1 receive */
unused_vector, /* 18 UART0 receive */
unused_vector, /* 17 UART1 transmit */
unused_vector, /* 16 UART0 transmit */
unused_vector, /* 15 PWM5 */
unused_vector, /* 14 PWM4 */
unused_vector, /* 13 PWM3 */
unused_vector, /* 12 PWM2 */
unused_vector, /* 11 PWM1 */
unused_vector, /* 10 PWM0 */
unused_vector, /* 9 unused */
unsued_vector, /* 8 PIT */
unused_vector, /* 7 Time-of-day alarm */
unused_vector, /* 6 KPP control */
unused_vector, /* 5 UART0 RTS_DELTA */
unused_vector, /* 4 unused */
unused_vector, /* 3 unused */
unused_vector, /* 2 software3 */
unused_vector, /* 1 software2 */
unused_vector /* 0 software1 */
};
#define Do_Interrupt() asm(“ subi R0,32\n subi R0,28\n \
stm R1-R15,(R0)\n lrw R2,table\n \
lrw R3,fIpnd1\n ldw R3,(R3,0)\n \
ldw R3,(R3,0)\n FF1 R3\n lsli R3,2\n \