;lcd_ej_2.asm Programa de ejemplo que envia la palabra HOLA a la pantalla LCD utilizando 
;una tabla. ---www.pictronic.com --- info@pictronic.com

	list	p=16F84		;modelo de PIC
	include	"P16F84.inc"	;libreria de definiciones para el 16F84
	__config	_CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ;palabra de configuración

;declaramos los tres registros que utilizan las subrutinas de "lcd_db4.inc"

CONT0		equ	0x0C	
CONT1		equ	0x0D
LCD_TEMP	equ	0x0E

CONTADOR	equ	0x0F	;registro que utilizamos en el programa principal

	org	0x00
	goto	INICIO
	org	0x05

	include	"lcd_db4.inc"	;incluye las subrutinas de control LCD

MENSAJE	movf	CONTADOR,W
	addwf	PCL,F
	retlw	'H'
	retlw	'O'
	retlw	'L'
	retlw	'A'
		
INICIO	call	LCD_UP		;configura TRISB para el LCD
	call	LCD_INI		;inicia el LCD
	movlw	0x85		;sexta posición, primera línea
	call	LCD_REG

	clrf	CONTADOR	;inicia contador de carácteres a 0
SIGUE	call	MENSAJE		;llama a la tabla del mensaje 
	call	LCD_DATO	;visualiza el caracter recogido de la tabla
	movf	CONTADOR,W	;pasa CONTADOR a W
	sublw	0x03		;resta 0x03 - W
	btfsc	STATUS,Z	;...y comprueba si son iguales
	goto	BUCLE		;si son iguales (Z=1), salta a bucle fin	
	incf	CONTADOR,F	;inc contador pra ir a buscar siguiente caracter
	goto	SIGUE

BUCLE	goto	BUCLE		;bucle infinito

	end
