Eso sucede porque puede ocurrir una reentrada a la misma función. por ejemplo si tu estas en la función Lcd_Putc desde el main, y ocurre una interrupción, y dentro de la rutina de interrupción, llamas la función Lcd_Putc, ocurriría una reentrada a la misma función y se corromperían los datos. El CCS lo que hace es desactivar las interrupciones antes de entrar a dicha función. pero hay otras soluciones. Una es hacer que la función sea #Inline, osea que cuando se llame la funcion, no tenga necesidad de usar una instrucción de llamada, lo que implicaría un consumo mayor de memoria ROM y RAM. Pero puede ocurrir que en el caso de un Lcd que cuando ocurra una interrupción se este escribiendo en este y que la rutina de interrupción escriba en el lcd, lo que provocaría que se envíen datos corruptos a este. la solución a esto seria usar un semáforo que se gestione desde el main. El que una función se demore mucho dentro de la rutina de interrupción, no tiene nada que ver y no provocarían reentrada siempre y cuando la interrupción se haya borrado a si misma y sea una función que solo sea llamada desde esa misma rutina de interrupción.