
				CBLOCK	
				gbl_16_LSR
				Wdt_msDela_00045_1_i 
				Wdt_Delay__00047_arg_delay  
				Wdt_Delay__00047_1_i              
				CompTempVar2178                  
				FCD_LCDDis_00048_arg_in          
				FCD_LCDDis_00048_arg_mask        
				FCD_LCDDis_00048_1_pt            
				FCD_LCDDis_0004B_arg_Character    
				FCD_LCDDis_0004D_arg_x           
				FCD_LCDDis_0004D_arg_y           
				delay_us_00000_arg_del            
				delay_10us_00000_arg_del  
				LCD_Dato
				ENDC

LCD_CaracteresPorLinea	EQU	.16	; Número de caracteres por línea de la pantalla.
                 

LCD_Inicio				; Iniciacion del lcd
;	MOVLW 	0x07
	BSF 	STATUS, RP0
	BCF 	STATUS, RP1
;	MOVWF 	ADCON1
;	movlw	0x0C
;	movwf	OPTION_REG
	BCF 	TRISB,4
	BCF 	TRISB,5
	BCF 	TRISB,6
	BCF 	TRISB,7
	BCF 	TRISB,1
	BCF 	TRISB,2
	MOVLW 	0x0C
	BCF 	STATUS, RP0
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x33
	MOVWF	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x33
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x32
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x2C
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x06
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW 	0x0C
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW	0x01
	MOVWF	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	MOVLW	0x02
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	MOVLW 	0x02
	MOVWF 	Wdt_Delay__00047_arg_delay
	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
	CALL 	Wdt_Delay__00047
	RETURN

; POCISIONAMIENTO DEL CURSOR POR MEDIO DE UN VALOR ESPECIFICO A "X" y "Y" 
; EL VALOR DE X VA DESDE 0 HASTA 15 Y EL DE Y ES 0 PRIMERA FILA Y 1 SEGUNDA FILA.
; Se debe mandar primero el valor de X y luego e de Y como en este ejemplo:
;	movlw	0x00	; Pocision 0 para x de la memoria visible del lcd 
;	call	Cursor_x
;	movlw	0x00	; Pocision 0 para x de la memoria visible del lcd 
;	call	LCD_Cursor
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Cursor_x
	MOVWF 	FCD_LCDDis_0004D_arg_x
	RETURN
LCD_Cursor
	movwf	FCD_LCDDis_0004D_arg_y
	MOVF 	FCD_LCDDis_0004D_arg_y, F
	BTFSS 	STATUS,Z
	GOTO	label7
	MOVLW 	0x80
	MOVWF 	FCD_LCDDis_0004D_arg_y
	GOTO	label8
label7
	MOVLW 	0xC0
	MOVWF 	FCD_LCDDis_0004D_arg_y
label8
	MOVF 	FCD_LCDDis_0004D_arg_x, W
	ADDWF 	FCD_LCDDis_0004D_arg_y, W
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL	FCD_LCDDis_00048
	call	Retardo_50micros
;	MOVLW 	0x02
;	MOVWF 	Wdt_Delay__00047_arg_delay
;	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
;	CALL 	Wdt_Delay__00047
	RETURN

LCD_Caracter
; { FCD_LCDDisplay0_PrintASCII ; function begin
	movwf	LCD_Dato			; Guarda el valor del carácter y comprueba si es
LCD_EnheMinuscula				; un carácter especial.
	sublw	'ñ' 				; ¿Es la "ñ"?
	btfss	STATUS,Z
	goto	LCD_EnheMayuscula	; No es "ñ".
	movlw	b'11101110'			; Código CGROM de la "ñ".
	movwf	LCD_Dato
	goto	LCD_FinCGROM
LCD_EnheMayuscula
	movf	LCD_Dato,W			; Recupera el código ASCII de entrada.
	sublw	'Ñ' 				; ¿Es la "Ñ"?
	btfss	STATUS,Z
	goto	LCD_Grado			; No es "Ñ".
	movlw	b'11101110'			; Código CGROM de la "ñ". (No hay símbolo para
	movwf	LCD_Dato			; la "Ñ" mayúscula en la CGROM).
	goto	LCD_FinCGROM	
LCD_Grado
	movf	LCD_Dato,W			; Recupera el código ASCII de entrada.
	sublw	'º' 				; ¿Es el símbolo "º"?
	btfss	STATUS,Z
	goto	LCD_FinCGROM		; No es "º".
	movlw	b'11011111'			; Código CGROM del símbolo "º".
	movwf	LCD_Dato
LCD_FinCGROM
	movf	LCD_Dato,W			; En (W) el código buscado.
	MOVWF	FCD_LCDDis_0004B_arg_Character
	MOVWF 	FCD_LCDDis_00048_arg_in
	MOVLW 	0x10
	MOVWF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	RETURN

LCD_Borra
	MOVLW 	0x01
	BCF 	STATUS, RP0
	BCF 	STATUS, RP1
	MOVWF 	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
;	MOVLW 	0x02
;	MOVWF	Wdt_Delay__00047_arg_delay
;	CLRF	Wdt_Delay__00047_arg_delay+D'1'
;	CALL 	Wdt_Delay__00047
	call	Retardo_50micros
	MOVLW 	0x02
	MOVWF	FCD_LCDDis_00048_arg_in
	CLRF 	FCD_LCDDis_00048_arg_mask
	CALL 	FCD_LCDDis_00048
	call	Retardo_50micros
;	MOVLW	0x02
;	MOVWF 	Wdt_Delay__00047_arg_delay
;	CLRF 	Wdt_Delay__00047_arg_delay+D'1'
;	CALL 	Wdt_Delay__00047
	RETURN
; } FCD_LCDDisplay0_Clear function end

FCD_LCDDis_00048
; { FCD_LCDDisplay0_RawSend ; function begin
	BCF 	PORTB,4
	BCF 	PORTB,5
	BCF 	PORTB,6
	BCF 	PORTB,7
	BCF 	PORTB,1
	BCF 	PORTB,2
	SWAPF 	FCD_LCDDis_00048_arg_in, W
	ANDLW 	0x0F
	MOVWF 	FCD_LCDDis_00048_1_pt
	MOVLW 	0x0F
	ANDWF 	FCD_LCDDis_00048_1_pt, F
	BTFSC 	FCD_LCDDis_00048_1_pt,0
	BSF 	PORTB,4
	BTFSC 	FCD_LCDDis_00048_1_pt,1
	BSF 	PORTB,5
	BTFSC 	FCD_LCDDis_00048_1_pt,2
	BSF 	PORTB,6
	BTFSC 	FCD_LCDDis_00048_1_pt,3
	BSF 	PORTB,7
	MOVF 	FCD_LCDDis_00048_arg_mask, F
	BTFSS 	STATUS,Z
	BSF 	PORTB,1
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	BSF 	PORTB,2
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	BCF 	PORTB,2
	MOVLW 	0x0F
	ANDWF 	FCD_LCDDis_00048_arg_in, W
	MOVWF 	FCD_LCDDis_00048_1_pt
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	BCF		PORTB,4
	BCF 	PORTB,5
	BCF 	PORTB,6
	BCF 	PORTB,7
	BCF 	PORTB,1
	BCF 	PORTB,2
	BTFSC 	FCD_LCDDis_00048_1_pt,0
	BSF 	PORTB,4
	BTFSC 	FCD_LCDDis_00048_1_pt,1
	BSF 	PORTB,5
	BTFSC 	FCD_LCDDis_00048_1_pt,2
	BSF 	PORTB,6
	BTFSC 	FCD_LCDDis_00048_1_pt,3
	BSF 	PORTB,7
	MOVF 	FCD_LCDDis_00048_arg_mask, F
	BTFSS 	STATUS,Z
	BSF 	PORTB,1
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	BSF 	PORTB,2
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	BCF 	PORTB,2
	MOVLW 	0x0A
	MOVWF 	delay_10us_00000_arg_del
	CALL 	delay_10us_00000
	RETURN

delay_us_00000
; { delay_us ; function begin
label1
	NOP
	NOP
	DECFSZ 	delay_us_00000_arg_del, F
	GOTO	label1
	RETURN
; } delay_us function end

delay_10us_00000
; { delay_10us ; function begin
	MOVF 	delay_10us_00000_arg_del, F
	BTFSS 	STATUS,Z
	GOTO	label2
	RETURN
label2
	MOVLW 	0x09
label3
	NOP
	ADDLW 	0xFF
	BTFSS 	STATUS,Z
	GOTO	label3
	NOP
	NOP
	DECFSZ 	delay_10us_00000_arg_del, F
	GOTO	label2
	RETURN
; } delay_10us function end

Wdt_msDela_00045
; { Wdt_msDelay ; function begin
	BCF 	STATUS, RP0
	BCF 	STATUS, RP1
	CLRF 	Wdt_msDela_00045_1_i
label4
	MOVLW 0x4B
	SUBWF 	Wdt_msDela_00045_1_i, W
	BTFSC 	STATUS,C
	RETURN
	CLRWDT
	MOVLW 0x0A
	MOVWF 	delay_us_00000_arg_del
	CALL	delay_us_00000
	INCF 	Wdt_msDela_00045_1_i, F
	GOTO	label4
; } Wdt_msDelay function end

Wdt_Delay__00047
; { Wdt_Delay_Ms ; function begin
	CLRF 	Wdt_Delay__00047_1_i
	CLRF 	Wdt_Delay__00047_1_i+D'1'
label5
	MOVF 	Wdt_Delay__00047_1_i+D'1', W
	XORLW 	0x80
	MOVWF 	CompTempVar2178
	MOVF 	Wdt_Delay__00047_arg_delay+D'1', W
	XORLW 	0x80
	SUBWF	CompTempVar2178, W
	BTFSS	STATUS,Z
	GOTO	label6
	MOVF 	Wdt_Delay__00047_arg_delay, W
	SUBWF 	Wdt_Delay__00047_1_i, W
label6
	BTFSC 	STATUS,C
	RETURN
	CALL 	Wdt_msDela_00045
	INCF 	Wdt_Delay__00047_1_i, F
	BTFSC 	STATUS,Z
	INCF 	Wdt_Delay__00047_1_i+D'1', F
	GOTO	label5
; } Wdt_Delay_Ms function end


