.module interrupts.c .area text 0000 _ADC_handler:: 0000 ; // interrupts.c 0000 ; 0000 ; #include 0000 ; #include <912D60.h> 0000 ; #include "kernel.h" 0000 ; 0000 ; 0000 ; 0000 ; // FUNCTION PROTOTYPES 0000 ; void _start(void); 0000 ; 0000 ; 0000 ; 0000 ; /* Example code flow for all of these handlers: 0000 ; 0000 ; // IF interrupt isn't very time critical: 0000 ; figure out who cares, if anyone, then send a msg to the caring task 0000 ; 0000 ; 0000 ; if (resource[ADC].owner != 255) 0000 ; task[resource[ADC].owner].message |= ADC_MSG; 0000 ; 0000 ; 0000 ; 0000 ; // IF interrupt is time critical: (ie, there's data that needs to be serviced) 0000 ; get the data, put it in a buffer, then put the data in the message buffer 0000 ; 0000 ; task[resource[ADC].owner].message_data[ADC_MSG] = ADC; // ADC = correct port definition? 0000 ; */ 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; // GLOBALS 0000 ; extern unsigned int interrupt_flags_ADC; 0000 ; extern unsigned int interrupt_flags_TC; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; #pragma interrupt_handler ADC_handler() 0000 ; 0000 ; void ADC_handler(void) { 0000 ; 0000 ; // figure out which adc interrupted 0000 ; 0000 ; // set appropriate global interrupt adc flag 0000 ; 0000 ; 0000 ; } 0000 L3: 0000 .dbline 0 ; func end 0000 0B rti 0001 _SCI1_handler:: 0001 ; 0001 ; 0001 ; 0001 ; /* #pragma interrupt_handler SCI0_handler() 0001 ; 0001 ; void SCI0_handler(void) { 0001 ; 0001 ; 0001 ; 0001 ; } */ 0001 ; 0001 ; 0001 ; 0001 ; #pragma interrupt_handler SCI1_handler() 0001 ; 0001 ; void SCI1_handler(void) { 0001 ; 0001 ; 0001 ; 0001 ; } 0001 L4: 0001 .dbline 0 ; func end 0001 0B rti 0002 _SPI_handler:: 0002 ; 0002 ; 0002 ; 0002 ; #pragma interrupt_handler SPI_handler() 0002 ; 0002 ; void SPI_handler(void) { 0002 ; 0002 ; 0002 ; 0002 ; } 0002 L5: 0002 .dbline 0 ; func end 0002 0B rti 0003 _PAIE_handler:: 0003 ; 0003 ; 0003 ; 0003 ; #pragma interrupt_handler PAIE_handler() 0003 ; 0003 ; void PAIE_handler(void) { 0003 ; 0003 ; 0003 ; 0003 ; } 0003 L6: 0003 .dbline 0 ; func end 0003 0B rti 0004 _PAO_handler:: 0004 ; 0004 ; 0004 ; 0004 ; #pragma interrupt_handler PAO_handler() 0004 ; 0004 ; void PAO_handler(void) { 0004 ; 0004 ; 0004 ; 0004 ; } 0004 L7: 0004 .dbline 0 ; func end 0004 0B rti 0005 ; lreg1 -> -4,x 0005 ; lreg2 -> -8,x 0005 _TOF_handler:: 0005 34 pshx 0006 B775 tfr s,x 0008 1B98 leas -8,sp 000A ; 000A ; 000A ; 000A ; #pragma interrupt_handler TOF_handler() 000A ; 000A ; void TOF_handler(void) { 000A ; 000A ; // LOCAL VARIABLES 000A ; extern unsigned long int time_tick; 000A ; 000A ; // acknowledge the interrupt 000A ; TFLG2 = 0x80; 000A C680 ldab #128 000C 7B008F stab 0x8f 000F ; 000F ; time_tick++; 000F CD0000 ldy #_time_tick 0012 1802401C movw 0,y,-4,x 0016 1802421E movw 2,y,-2,x 001A CD0058 ldy #L9 001D 18024018 movw 0,y,-8,x 0021 1802421A movw 2,y,-6,x 0025 160000 jsr __ladd 0028 CD0000 ldy #_time_tick 002B 18021C40 movw -4,x,0,y 002F 18021E42 movw -2,x,2,y 0033 ; 0033 ; } 0033 L8: 0033 B757 tfr x,s 0035 30 pulx 0036 .dbline 0 ; func end 0036 0B rti 0037 _TC7_handler:: 0037 ; 0037 ; 0037 ; 0037 ; #pragma interrupt_handler TC7_handler() 0037 ; 0037 ; void TC7_handler(void) { 0037 ; 0037 ; 0037 ; 0037 ; } 0037 L10: 0037 .dbline 0 ; func end 0037 0B rti 0038 _TC6_handler:: 0038 ; 0038 ; 0038 ; 0038 ; #pragma interrupt_handler TC6_handler() 0038 ; 0038 ; void TC6_handler(void) { 0038 ; 0038 ; 0038 ; 0038 ; } 0038 L11: 0038 .dbline 0 ; func end 0038 0B rti 0039 _TC5_handler:: 0039 ; 0039 ; 0039 ; 0039 ; #pragma interrupt_handler TC5_handler() 0039 ; 0039 ; void TC5_handler(void) { 0039 ; 0039 ; 0039 ; 0039 ; } 0039 L12: 0039 .dbline 0 ; func end 0039 0B rti 003A _TC4_handler:: 003A ; 003A ; 003A ; 003A ; #pragma interrupt_handler TC4_handler() 003A ; 003A ; void TC4_handler(void) { 003A ; 003A ; 003A ; 003A ; } 003A L13: 003A .dbline 0 ; func end 003A 0B rti 003B _TC3_handler:: 003B ; 003B ; 003B ; 003B ; #pragma interrupt_handler TC3_handler() 003B ; 003B ; void TC3_handler(void) { 003B ; 003B ; 003B ; 003B ; } 003B L14: 003B .dbline 0 ; func end 003B 0B rti 003C _TC2_handler:: 003C ; 003C ; 003C ; 003C ; #pragma interrupt_handler TC2_handler() 003C ; 003C ; void TC2_handler(void) { 003C ; 003C ; 003C ; 003C ; } 003C L15: 003C .dbline 0 ; func end 003C 0B rti 003D _TC1_handler:: 003D ; 003D ; 003D ; 003D ; #pragma interrupt_handler TC1_handler() 003D ; 003D ; void TC1_handler(void) { 003D ; 003D ; 003D ; 003D ; } 003D L16: 003D .dbline 0 ; func end 003D 0B rti 003E _TC0_handler:: 003E ; 003E ; 003E ; 003E ; #pragma interrupt_handler TC0_handler() 003E ; 003E ; void TC0_handler(void) { 003E ; 003E ; 003E ; 003E ; } 003E L17: 003E .dbline 0 ; func end 003E 0B rti 003F _IRQ_handler:: 003F ; 003F ; 003F ; 003F ; #pragma interrupt_handler IRQ_handler() 003F ; 003F ; void IRQ_handler(void) { 003F ; 003F ; 003F ; 003F ; } 003F L18: 003F .dbline 0 ; func end 003F 0B rti 0040 _XIRQ_handler:: 0040 ; 0040 ; 0040 ; 0040 ; #pragma interrupt_handler XIRQ_handler() 0040 ; 0040 ; void XIRQ_handler(void) { 0040 ; 0040 ; 0040 ; 0040 ; } 0040 L19: 0040 .dbline 0 ; func end 0040 0B rti 0041 _SWI_handler:: 0041 ; 0041 ; 0041 ; 0041 ; #pragma interrupt_handler SWI_handler() 0041 ; 0041 ; void SWI_handler(void) { 0041 ; 0041 ; 0041 ; 0041 ; } 0041 L20: 0041 .dbline 0 ; func end 0041 0B rti 0042 _COP_handler:: 0042 ; 0042 ; 0042 ; 0042 ; #pragma interrupt_handler COP_handler() 0042 ; 0042 ; void COP_handler(void) { 0042 ; 0042 ; puts("COP RESET!"); 0042 CC004D ldd #L22 0045 160000 jsr _puts 0048 ; _start(); 0048 160000 jsr __start 004B ; 004B ; } 004B L21: 004B .dbline 0 ; func end 004B 0B rti 004C _CLM_handler:: 004C ; 004C ; 004C ; 004C ; #pragma interrupt_handler CLM_handler() 004C ; 004C ; void CLM_handler(void) { 004C ; 004C ; 004C ; 004C ; } 004C L23: 004C .dbline 0 ; func end 004C 0B rti 004D L22: 004D 434F502052455345542100 .byte 'C,'O,'P,32,'R,'E,'S,'E,'T,33,0 0058 L9: 0058 00000001 .word 0,1