I have project that includes a '.lib' file. The library contains separate modules like adc.c, i2c.c, tmr.c...
The interrupt routines are placed in their corresponding modules. The interrupt vectors are created for the adc and i2c modules just fine, but the timer isr vector's are not there when looking at the disassembly. The interrupt functions are present in the code just not the 'LJMP' at 0x0B and 0x1B. I've tried moving around the order of the functions, and removing all but the interrupt code but the interrupt vectors are still not added.
Has any one seen this before or having any suggestions to fix this?
Example:
///adc.c
#pragma nomodp2 void adc_isr() interrupt 14 { ADCON1 = (ADCON1 & 0xF7); ADCON0 = (ADCON0 & 0xF7); } #pragma modp2
///tmr.c
#pragma nomodp2 void timer_zero_isr () interrupt 1 using 2 { MISO = ~MISO; puts ("tmr zero intrpt"); TF0 = 0; } void timer_one_isr () interrupt 3 using 2 { if (TF1) puts ("tmr one intrpt"); } #pragma modp2
C_STARTUP: C:0x0000 0213A0 LJMP C:13A0 C:0x0003 00 NOP C:0x0004 00 NOP C:0x0005 00 NOP C:0x0006 00 NOP C:0x0007 00 NOP C:0x0008 00 NOP C:0x0009 00 NOP C:0x000A 00 NOP C:0x000B 00 NOP C:0x000C 00 NOP C:0x000D 00 NOP C:0x000E 00 NOP C:0x000F 00 NOP C:0x0010 00 NOP C:0x0011 00 NOP C:0x0012 00 NOP C:0x0013 00 NOP C:0x001B 00 NOP C:0x001C 00 NOP C:0x001D 00 NOP ...
C:0x0022 00 NOP C:0x0023 020C73 LJMP uart_isr(C:0C73) C:0x0026 00 NOP C:0x0027 00 NOP ...
C:0x0031 00 NOP C:0x0032 00 NOP C:0x0033 0209E9 LJMP i2c_isr(C:09E9)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ P89LPC935 IDE-Version: µVision3 V3.30a Tool Version Numbers: Toolchain Path: C:\Keil\C51\BIN\ C Compiler: C51.Exe V8.02 Assembler: AX51.Exe V3.01 Linker/Locator: LX51.Exe V4.05 Librarian: LIBX51.Exe V4.24