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 \
   426   427   428   429   430   431   432   433   434   435   436