No he tenido problemas con el LCD con ninguna versión del Basic PSI. Esta me funciona bien en un Pic16F877A.
'Include "_ProcInitEBasic.bas"
Proc _initebasic()
'Puerto del LCD---------------------------------------------
Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 0
Define LCD_EREG = PORTC
Define LCD_EBIT = 4
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 1
Define LCD_COMMANDUS = 2000 'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
Define LCD_DATAUS = 50 'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 50 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg.
'Configuración Placa EBasic ----------------------------------------
AllDigital 'los pin I/O digitales
CMCON = 0x07 'comparador a off
TRISA = 0x00 'Puerto A como salidas
TRISB = 0x00 'puerto B como salidas
TRISC = 0x00
TRISD = 0x00
TRISE = 0x00
TRISA.0 = 1
TRISA.1 = 1 'como entrada (RA1, adc)
TRISC.7 = 1
'TRISA.6 = 1 'como entrada (RA6, tecla S1)
'TRISA.5 = 1 'como entrada (RA5, tecla S2)
'TRISB.5 = 0 'RB5(Tx, RS232)
'TRISB.2 = 1 'RB2 (Rx, RS232)
'PORTB.3 = 1 'luz lcd a on (RB3)
'PORTA.7 = 1 'led amarillo a off
'PORTB.0 = 1 'led verde a off
'******************************************************************
'Inicio Programa---------------------------------------------------
Lcdinit 'inicializa el LCD sin cursor
End Proc
Trabajando de esta manera:
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 20