i don't see why that will not work , assuming the pic config you have omitted showing is correct

can you blink a led ?


this works fine for a 648a , a 628a's rich brother
Code:
'****************************************************************'*  Name    : LCD_TEST.BAS                                      *
'*  Author  : RICHARD                                           *
'*  Date    : 4/8/2017                                          *
'*  Version : 1.0                                               *
'*  Notes   : pic16f648a    ep7                                 *
'*          :  2016 LCD                                         *
'****************************************************************
#CONFIG
  __config  _INTOSC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_OFF & _MCLRE_ON & _BODEN_ON & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
#ENDCONFIG
    
DEFINE OSC 4 


'LCD defines begin here   
    DEFINE LCD_BITS 4 	'defines the number of data interface lines (4 or 8) 
    DEFINE LCD_DREG PORTB	'defines the port where data lines are connected to
    DEFINE LCD_DBIT 0 	'defines the position of data lines for 4-bit interface (0 or 4)
    DEFINE LCD_RSREG PORTB	'defines the port where RS line is connected to
    DEFINE LCD_RSBIT 4 	'defines the pin where RS line is connected to 
    DEFINE LCD_EREG PORTB 	'defines the port where E line is connected to 
    DEFINE LCD_EBIT 5 	'defines the pin where E line is connected 
    DEFINE LCD_COMMANDUS 1500 	'defines the delay after LCDOUT statement 
    DEFINE LCD_DATAUS 50 		'delay in micro seconds
'END of LCD DEFINES       
    
    Pause 500       ' LCD initialize time
    lcdout $FE,1 
    LCDOUT $fe,$83,"HELLO"
    LCDOUT $fe,$c8,"World"
    stop
end

ps  rb4 must be pulled low if using ep7 on board programmer or else pgm load will never verify