	CBLOCK
	LCD_Dato
	LCD_GuardaDato
	LCD_GuardaTRISB
	LCD_Auxiliar1
	ENDC

LCD_CaracteresPorLinea	EQU	.16

#DEFINE	LCD_PinRs	PORTB,2
#DEFINE	LCD_PinEnable	PORTB,3
#DEFINE	LCD_BusDatos	PORTB

LCD_Inicializa
	Banco1
	bcf	LCD_PinRs
	bcf	LCD_PinEnable
	Banco0
	bcf	LCD_PinEnable
	bcf	LCD_PinRs
	Ret_ms	.20
	movlw	b'00110000'
	call	LCD_EscribeLCD
	Ret_ms	5
	movlw	b'00110000'
	call	LCD_EscribeLCD
	Ret_us	.200
	movlw	b'00110000'
	call	LCD_EscribeLCD
	movlw	b'00100000'
	call	LCD_EscribeLCD
	LCD_Cmd	LCD_2Li4Bits5x7
	LCD_Cmd	LCD_Borra
	LCD_Cmd	LCD_CursorOFF
	LCD_Cmd	LCD_CursorIncr
	return

LCD_EscribeLCD
	andlw	b'11110000'
	movwf	LCD_Dato
	movf	LCD_BusDatos,W
	andlw	b'00001111'
	iorwf	LCD_Dato,F
	Banco1
	movf	TRISB,W
	movwf	LCD_GuardaTRISB
	movlw	0F
	andwf	PORTB,F
	Banco0
	movf	LCD_Dato,W
	movwf	LCD_BusDatos
	bsf	LCD_PinEnable
	btfss	LCD_PinRs
	goto	$+4
	Ret_us	.50
	goto	$+3
	Ret_ms	.2
	bcf	LCD_PinEnable
 	Banco1
	movf	LCD_GuardaTRISB,W
	movwf	PORTB
	Banco0
	return
	
LCD_EnviaComando
	bcf	LCD_PinRs
	goto	LCD_Envia
LCD_Caracter
	bsf	LCD_PinRs
LCD_Envia
	movwf	LCD_GuardaDato
	call	LCD_EscribeLCD
	swapf	LCD_GuardaDato,W
	call	LCD_EscribeLCD
	return