Yo siempre use la que estas usando micro_pepe, lo que me llama la atencion es esto:
me da problemas escribiendo caracteres erróneos en otras posiciones del LCD que no debería
El codigo C que pasaste que "tiene problemas", funciona correctamente, simulado y todo.
void LCDprint(const char * buff) {
while (*buff) {
LCD_PUTC(*buff++);
}
}
Usandolo:
Asi que
pienso estoy seguro que el problema no sea esa parte del codigo que pasaste, y sea algo de LCD_PUTC, porque la diferencia entre este codigo y el pasado con el for es algun que otro ciclo mas, y podria llegar a ser problemas de tiempo.