Les cuento que me paso: estoy jugando con un lcd grafico 128*64, arme un prototipo para hacerlo andar con un 18f452, como programa de prueba puse el ejemplo que trae el CCS (ex_glcd) modificado para configurar el 18f452.
El resultado era erratico, luego de varias pruebas sin resultados le meti un 16f877 y anduvo de maravilla, pero qué estaba pasando?
Despues de quemar neuronas encontre que en el driver glcd.c existe un pequeño error que solo afecta al compilador para los 18f.
En la funcion "glcd_readByte" al final del archivo esta esta linea:
input_d(); // Set port d to input
No solo inecesaria, sino que revisando el codigo ASM generado se ve claramante la gran diferencia entre 16f y 18f.
Borrando esta linea el driver queda perfecto para funcionar tanto para los pic16fxxx como los 18fxxx.
Espero que esta información pueda servirles.