Hi i have written a ISR for external intr 0 and from this routine i am calling other functions. On compiling above routines i am getting following warning Warning:Multiple call to segment Caller1:?PR?ex0_ISR?main Caller2:?C_C51STARTUP (where ex0 is the name of isr given in file) there was same warning for each function which i had called from isr Can anybody give me the reason for this ? and solution ?
Erik is right: unlike "normal" 'C', C51 functions are not inherently reentrant. The linker is warning you that there is a possibility that the function might be called again from the interrupt while it is already executing in the non-interrupt code. Only you can tell whether this could actually ever happen in practice and, if it could, whether it would be safe...