;------------------------------------------------------------
; Código assembler 
; Proyecto: Rutinas para Nextion
; Autor: Esteban Mariano Folcher Cividini
; Colaboración; KILLERJC de todopic
;		Pinonillo 16 de todopic
;	
; Fecha: 27/08/2018
; PIC: 16F877A
; Velocidad de reloj: 4 Mhz
;------------------------------------------------------------
	list		p=16f877A,f=inhx32
	#include	<p16f877A.inc>	 
	#define	Fosc 4000000
	__CONFIG _HS_OSC & _WDTE_OFF & _PWRTE_ON & _BOREN_ON & _LVP_ON & _CPD_OFF & _WRT_OFF & _CP_OFF
    
STAR		    ORG		0x00	    ;DIRECCION DE VECTOR RESET
		    GOTO	COMIENZO
		    ORG	0x05
		    CBLOCK 0x20
		    VARIABLE_HHH
		    VARIABLE_HH
		    VARIABLE_H
		    VARIABLE_L
		    ENDC
    INCLUDE	<Delay.inc>
    INCLUDE	<MACROS_NEX.inc>
Mensajes_Nextion    MOVWF   PCL
MENSAJE_NEX_1	    DT	"HOLA",0x00
MENSAJE_NEX_2	    DT	"HOLA",0x00
MENSAJE_NEX_3	    DT	"HOLA",0x00
MENSAJE_NEX_4	    DT	"HOLA",0x00
MENSAJE_NEX_5	    DT	"MUNDO",0x00
MENSAJE_NEX_6	    DT	"MUNDO",0x00
MENSAJE_NEX_7	    DT	"MUNDO",0x00
MENSAJE_NEX_8	    DT	"MUNDO",0x00 

COMIENZO	CALL	Configura_USART
		Inicia_NEXTION
PRINCIPAL
;--------------------TEXTO------------------------------------------------------
;SINTAXIS: NUMERO DE OBJETO
		;Nex_Borra_Texto			d'0'
		;Delay   1000 Milis
		;Nex_Borra_Texto			d'1'
		;Delay   1000 Milis
		;Nex_Borra_Texto			d'2'
		;Delay   1000 Milis
		;Nex_Borra_Texto			d'3'
		;Delay   1000 Milis	    
	
;SINTAXIS: NUMERO DE OBJETO, MESAJE USUARIO
		;Nex_Envia_Texto			d'0',MENSAJE_NEX_1
		;Delay   1000 Milis
		;Nex_Envia_Texto			d'1',MENSAJE_NEX_2
		;Delay   1000 Milis
		;Nex_Envia_Texto			d'2',MENSAJE_NEX_3
		;Delay   1000 Milis
		;Nex_Envia_Texto			d'3',MENSAJE_NEX_4
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, CARACTER		
		;Nex_Añade_Caracter_Texto	d'0',' '
		;Delay   1000 Milis
		;Nex_Añade_Caracter_Texto	d'1','-'
		;Delay   1000 Milis
		;Nex_Añade_Caracter_Texto	d'2','+'
		;Delay   1000 Milis
		;Nex_Añade_Caracter_Texto	d'3','/'
		;Delay   1000 Milis

		
;SINTAXIS: NUMERO OBJETO, MENSAJE USUARIO
		;Nex_Añade_Texto			d'0',MENSAJE_NEX_5
		;Delay   1000 Milis
		;Nex_Añade_Texto			d'1',MENSAJE_NEX_6
		;Delay   1000 Milis
		;Nex_Añade_Texto			d'2',MENSAJE_NEX_7
		;Delay   1000 Milis
		;Nex_Añade_Texto			d'3',MENSAJE_NEX_8
		;Delay   1000 Milis
		
;SINTAXIS:  NUMERO OBJETO, CARACTER
		;Nex_Caracter_Texto		d'0','1'
		;Delay   1000 Milis
		;Nex_Caracter_Texto		d'1','2'
		;Delay   1000 Milis
		;Nex_Caracter_Texto		d'2','3'
		;Delay   1000 Milis
		;Nex_Caracter_Texto		d'3','4'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (EN ESTE CASO EL COLOR)
		;Nex_Color_Fondo_Texto		d'0',d'60000'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (EN ESTE CASO EL COLOR)
		;Nex_Color_Fuente_Texto		d'1',d'50000'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=DERECHA,1=CENTRO,2=IZQUIERDA)
		;Nex_Centrado_X_Texto		d'2',d'0' 
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=ARIBA,1=CENTRO,2=ABAJO)
		;Nex_Centrado_Y_Texto		d'2',d'2'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=OFF,1=ON)
		;Nex_Password_Texto		d'3',d'1'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=OFF,1=ON)
; este macro no sé cuál sería el nombre más apropiado.
; su función es, cuando el mensaje es más largo que el ancho del
; recuadro, si está a cero el mensaje sigue viéndose en una línea
; si está a uno el mensa se escribe hasta el límite derecho y continua 
; en la línea de abajo
; se acepta sugerencias

		;Nex_Linea_Texto			d'3',d'1'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE FUENTE. DEPENDERA DE LAS FUENTES CARGADAS EN NEXTION)
		;Nex_Fuente_Texto		d'2',d'1'
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE IMAGEN DEPENDE LA LAS QUE TENGAMOS CARGADAS EN NEXTION)
		;Nex_Imagen_Texto		d'2',d'0' ;PARA UTILISAR ESTA FUNCION TENEMOS QUE TENER ATIVADO 
							  ;sta imagen (por defecto aparese sta solid color
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE IMAGEN DEPENDE LA LAS QUE TENGAMOS CARGADAS EN NEXTION)
		;Nex_Crop_Imagen_Texto		d'2',d'0' ;PARA UTILISAR ESTA FUNCION TENEMOS QUE TENER ATIVADO 
							  ;sta Crop imagen (por defecto aparese sta solid color							  
							  
		
;-------------------------TEXTO SCROLLING---------------------------------------
;SINTAXIS: NUMERO DE OBJETO
		;Nex_Borra_S_Texto		d'0'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, MESAJE USUARIO
		;Nex_Envia_S_Texto		d'0',MENSAJE_NEX_1
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO OBJETO, MENSAJE USUARIO
		;Nex_Añade_S_Texto		d'0',MENSAJE_NEX_5
		;Delay   1000 Milis
		
;SINTAXIS:  NUMERO OBJETO, CARACTER
		;Nex_Caracter_S_Texto		d'0','1'
		;Delay   1000 Milis		
		
;SINTAXIS: NUMERO DE OBJETO, CARACTER		
		;Nex_Añade_Caracter_S_Texto	d'0','2'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE FUENTE. DEPENDERA DE LAS FUENTES CARGADAS EN NEXTION)	
		;Nex_Fuente_S_Texto		d'0',d'1'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (EN ESTE CASO EL COLOR)
		;Nex_Color_Fondo_S_Texto	d'0',d'60000'
		;Delay   1000 Milis  
	
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (EN ESTE CASO EL COLOR)
		;Nex_Color_Fuente_S_Texto	d'0',d'50000'	
		;Delay   1000 Milis

;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=DERECHA,1=CENTRO,2=IZQUIERDA)
		;Nex_Centrado_X_S_Texto		d'0',d'0' 
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=ARIBA,1=CENTRO,2=ABAJO)
		;Nex_Centrado_Y_S_Texto		d'0',d'2'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=OFF,1=ON)	
		;Nex_Linea_S_Texto		d'0',d'1'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (0=A LA IZQ. 1=A LA DER. 2=ABJO 3=ARIBA	
		;Nex_Direccion_S_Texto		d'1',d'0'
		;Delay   1000 Milis
		
;SINTAXIS; NUMERO DE OBJETO, VARIABLE DECIMAL (MIN=80 MAX=65534)
		;Nex_Tiempo_S_Texto		d'0',d'80'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (MIN=2 MAX=50)	
		;Nex_Distancia_S_Texto		d'0',d'50'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (SCROLLING OFF=0 	SCROLLING ON=1)
		;Nex_ScrolLing_S_Texto		d'0',d'0'
		;Delay   1000 Milis
		
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE IMAGEN DEPENDE LA LAS QUE TENGAMOS CARGADAS EN NEXTION)
		;Nex_Imagen_S_Texto		d'0',d'0' ;PARA UTILISAR ESTA FUNCION TENEMOS QUE TENER ATIVADO 
							  ;sta imagen (POR DEFECTO ESTA (sta solid color)
;SINTAXIS: NUMERO DE OBJETO, VARIABLE DECIMAL (NUMERO DE IMAGEN DEPENDE LA LAS QUE TENGAMOS CARGADAS EN NEXTION)
		;Nex_Crop_Imagen_S_Texto	d'0',d'0' ;PARA UTILISAR ESTA FUNCION TENEMOS QUE TENER ATIVADO 
							  ;sta imagen (POR DEFECTO ESTA (sta solid color)
		
;---------------------------NUMEROS---------------------------------------------
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
							  ;127/255/255/255     = 2147483647
							  ;0x7F/0xFF/0xFF/0xFF = 2147483647
		
		;Nex_Envia_Numerico		d'0',d'1',d'127',d'255',d'255',d'255'
							  
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
							  
		;CLRF	VARIABLE_HHH					  
		;CLRF	VARIABLE_HH					  
		;CLRF	VARIABLE_H
		;CLRF	VARIABLE_L
		;Nex_Variable_Numerico		d'0',d'0',VARIABLE_HHH,VARIABLE_HH,VARIABLE_H,VARIABLE_L
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
						; sumo 1000 de ejemplo suma 1000 en cada repeticion 
		;Nex_Suma_Numerico		d'0',d'0',0x00,0x00,0x03,0xE8
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
							  
		;CLRF	VARIABLE_HHH					  
		;CLRF	VARIABLE_HH
		;MOVLW	0x03
		;MOVWF	VARIABLE_H
		;MOVLW	0xE8
		;MOVWF	VARIABLE_L
		;Nex_Suma_Variable_Numerico	d'1',d'0',VARIABLE_HHH,VARIABLE_HH,VARIABLE_H,VARIABLE_L
							  			
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
						
		;Nex_Resta_Numerico		d'2',d'0',0x00,0x01,0x86,0xA0
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
		
		;CLRF	VARIABLE_HHH
		;MOVLW	0x0F
		;MOVWF	VARIABLE_HH
		;MOVLW	0x42
		;MOVWF	VARIABLE_H
		;MOVLW	0x40
		;MOVWF	VARIABLE_L
		;Nex_Resta_Variable_Numerico	d'3',d'0',VARIABLE_HHH,VARIABLE_HH,VARIABLE_H,VARIABLE_L		
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
						
		Nex_Envia_Numerico		d'0',d'0',0x00,0x00,0x00,0x02
		Nex_Envia_Numerico		d'1',d'0',0x00,0x00,0x00,0x02
		Nex_Envia_Numerico		d'2',d'0',0x00,0x00,0x00,0x02
		Nex_Envia_Numerico		d'3',d'0',0x00,0x00,0x00,0x02
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
						
L1		Nex_Muti_Numerico		d'0',d'0',0x00,0x00,0x00,0x02
		
;SINTAXIS: NUMERO DE OBJETO, SIGNO (+=0) (-=1),DATO DECIMAL MINIMO=0 MAXIMO=2147483647
		
		CLRF	VARIABLE_HHH
		CLRF	VARIABLE_HH
		CLRF	VARIABLE_H
		MOVLW	0x02
		MOVWF	VARIABLE_L
		Nex_Multi_Variable_Numerico	d'1',d'0',VARIABLE_HHH,VARIABLE_HH,VARIABLE_H,VARIABLE_L		
		Delay	500 Milis
		GOTO	L1
		
		
		
		
		
		
		
		GOTO	PRINCIPAL
		INCLUDE	NEXTION_SUB_5.INC
		END




			





		    
		    
		    
		    
		    
		