En mi caso (bueno, y supongo que en el de zarain puesto que esta utilizando la lcd2.c también) estoy utilizando el puerto B para enviar los datos a la LCD y las líneas 0,1 y 2 del puerto A para el control.
Adjunto la librería lcd2.c que uso, por si sirve de algo o alguien puede ayudarme a modificarla adecuadamente.
Hola maunix, no conosco muy bien el C, pero no creo que el problema sea ese, a mi me a pasado lo mismo pero en .asm y el problema era la configuracion del puerto A, por lo tanto a estos colega le recomendaria que confuguren bien el puerto A (ya sea en la libreria o el inicion del programa) o que cambien los pines usados en el puerto a a otro puerto, como el puerto C.
Hemos probado a modificar la librería declarando el puerto A como digital con la instrucción de CCS "setup_adc_ports (no_analogs). Hemos puesto esta instrucción cada vez que aparecía un set_tris_a pero aún así sigue sin funcionar.
En cuanto a que la memoria empiece en la dirección 20 en lugar de la 00 como en el 84 no sé cómo podría modificarse ni si será ese el problema que tenemos.
Creo que probaremos si no a cambiar los pines de control de la LCD al puerto C, aunque el problema es que tenemos una placa de pruebas para comprobar el funcionamiento y está conectada al puerto A sin posibilidad de modificación.
Muchas gracias por todo