;USE ESTA PLANTILLA PARA PROGRAMAR EN LENGUAJE ENSAMBLADOR
;EL SISTEMA EVOLUPIC CON EL MICROCONTROLADOR 16F88 BOOTLOADER TINY
;LA PALABRA DE CONFIGURACION YA EXISTE EN EL FIRMWARE PRECARGADO
;EN EL 16F88 Y NO HAY QUE CONFIGURARLA DENTRO DE ESTE PROGRAMA.
;LA PALABRA DE CONFIGURACION ES LA SIGUIENTE:
;ORG 0X2007
;DATA 0X3F69	 PALABRA DE CONFIGURACION 4 MHZ CRISTAL EXTERNO
;SE USAN MACROS PARA ELEGIR LOS BANCOS DE REGISTROS 0,1,2,3
;SI USA LOS MICROSWITCHES Y EL RELEVADOR: TRISA=0X1E,RA0=0
;SI USA EL LCD, TRISA=0, TRISB=0
;LOS REGISTROS CMCON Y CVRCON, ANSEL SE INICIALIZAN PARA PERMITIR EL
;USO DE LOS BITS DEL PUERTO B, YA QUE COMPARTEN LAS SEÑALES, CON LAS
;FUNCIONES DEL VOLTAJE DE REFERENCIA Y LOS COMPARADORES ANALOGICOS
;SE INCLUYE UNA SUBRUTINA DE RETRASO DE APROX 200 MILISEGUNDOS.
;INICIALIZA EL REGISTRO DE CONFIGURACION EN LA DIRECCION 2007H

	processor 16f88
	include	  <p16f88.inc>
	

;RESERVA LOCALIDADES PARA SUBRUTINA DE RETRASO

J	equ	H'20'	 ; localidad 20 es J
K	equ	H'21'	 ; localidad 21 es K

;DEFINE NOMBRE DE LOS BITS EN LOS PUERTOS A Y B

#DEFINE	RA0	PORTA,0
#DEFINE RA1	PORTA,1
#DEFINE RA2	PORTA,2
#DEFINE RA3	PORTA,3
#DEFINE RA4	PORTA,4
#DEFINE RB0	PORTB,0
#DEFINE RB1	PORTB,1
#DEFINE RB2	PORTB,2
#DEFINE RB3	PORTB,3
#DEFINE RB4	PORTB,4
#DEFINE RB5	PORTB,5
#DEFINE RB6	PORTB,6
#DEFINE RB7	PORTB,7

;MACROS PARA LA SELECCION DE LOS BANCOS DE REGISTROS

BANCO0	MACRO
	BCF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM
BANCO1	MACRO
	BSF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM
BANCO2	MACRO
	BCF	STATUS,RP0
	BSF	STATUS,RP1
	ENDM
BANCO3	MACRO
	BSF	STATUS,RP0
	BSF	STATUS,RP1
	ENDM

;MACRO PARA INICIALIZACION DE PUERTOS PARA 16F88

PUERTOS MACRO
	BANCO0
	BCF	RCSTA,SPEN	;DESHABILITA UART
	BANCO1
	movlw	7
	movwf	CMCON		;DESHABILITA COMPARADORES ANALOGICOS
	CLRF	CVRCON		;DESHABILITA VOLTAJE DE REFERENCIA
	CLRF	ANSEL		;DESHABILITA CONVERTIDORES
	MOVLW	H'1E'				
	MOVWF	TRISA		;RA0=SALIDA,RA1...RA4=ENTRADAS
	CLRF	TRISB		;RB0...RB7=SALIDAS
	BANCO0			 			
	CLRF	PORTB		;LEDS APAGADOS
	BCF	RA0		;DESHABILITA RELEVADOR
	ENDM
	
	ORG 	0
	CLRF 	PCLATH		;REQUERIDO POR EL BOOTLOADER TINY
	GOTO	INICIO		;AQUI DEBE HABER UN GOTO AL INICIO DEL PROGRAMA
				;***********************************************
				;SI USA INTERRUPCIONES, VEA EL PROGRAMA DE
				;EJEMPLO DE USO DE INTERRUPCIONES PARA TINY:
				;EJ1INTF88TINY.asm 
				;***********************************************
	ORG 3			;REQUERIDO POR EL BOOTLOADER TINY. EL PROGRAMA DEBE
				;INICIAR EN LA DIRECCION 3 ó MAYOR.
INICIO	PUERTOS			;MACRO PARA INICIALIZAR LOS PUERTOS DE 16F88
	
;aquí empieza el programa del usuario

;rutina de retraso de 200 milisegundos 
         
retro:	movlw	D'250'		; w = 250 decimal
	movwf	J		; J = w
jloop:	movwf	K		; K = w
kloop:	decfsz	K,f		; K = K-1, omite si es cero
	goto 	kloop
	decfsz	J,f		; J = J-1, omite si es cero
	goto	jloop
	return
	
	END