;RINFRAF88TINY
;PROGRAMA PARA EVOLUPIC Bootloader 16F88
;PROGRAMA USADO EN EL MODULO RECEPTOR INFRARROJO
;REQUIERE MODIFICACIONES EN EL MODULO. VER DOCUMENTO PDF.
;CONECTAR EL MODULO RECEPTOR AL CONECTOR PARA LCD EN EVOLUPIC
;recibe un mensaje remoto desde el módulo trasmisor infrarrojo
;modo asincrono a 300 bauds. EL MENSAJE CONSISTE DE UN SOLO
;BYTE QUE CONTIENE EL CODIGO DE LOS MICROSWITCHES
;enciende los LEDS RB4...RB7 DURANTE UN SEGUNDO
;según la posición de los microswitches en el
;módulo trasmisor.Si se trasmite el código 1001(OFF,ON,ON,OFF) 
;enciende (durante un segundo)y apaga el relevador.
;CVRCON,CMCON,ANSEL EN BANCO 1
;JUMPERS DE EVOLUPIC Bootloader 16F88 OPUESTOS A LA 
;FLECHA QUE APUNTA A LA POSICION RS232.

processor 16F88
include <p16f88.inc>


BANCO0	MACRO
	BCF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM

BANCO1	MACRO
	BSF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM

CARA1	EQU	0X20
L	EQU	21H
M	EQU	22H
PE	EQU	23H
ACUM	EQU	24H
STAT	EQU	25H
CUEN	EQU	26H
CARA2	EQU	27H

	ORG	00H
	CLRF PCLATH
	GOTO WEB
			
	

	ORG	04H
CORTE	bcf	INTCON,2
	movwf	ACUM
	movfw	STATUS
	BANCO0
	movwf	STAT
	decfsz	CUEN
	goto	HECHO
	btfsc	PORTB,3
	goto	ESUNO
	bsf	PORTB,3
	movlw	0xa
	movwf	CUEN
	goto	HECHO
ESUNO	bcf	PORTB,3
	movlw	0xa
	movwf	CUEN
HECHO	movfw	STAT
	movwf	STATUS
	swapf	ACUM,F
	swapf	ACUM,W
	retfie
WEB
	movlw	0xa
	movwf	CUEN
	goto	INICIO

INICIO	BANCO1
	clrf	ANSEL
	movlw	b'00000000'
	movwf	TRISA	;puerto A salidas
	MOVLW	04H	;B2/RX entrada, B5/TX salida
	MOVWF	TRISB
	movlw	b'11010111'
	movwf	OPTION_REG	
	MOVLW	0xcf	;x=207(10)=cf(16) en formula de baud rate
	MOVWF	SPBRG	;para 300 bauds, modo sincrono
	MOVLW	00H	;BRG=0, SYNC=0, TXEN=0, TX9=0
	MOVWF	TXSTA	;baja Vel., Asin, no Hab. Tx, 8 bits de datos
	movlw	0x4
	movwf	CVRCON	;deshabilita referencia
	MOVLW	0X7
	MOVWF	CMCON
	BANCO0			;deshabilita comparador
	bsf	INTCON,7
	bsf	INTCON,5
	MOVLW	0X00
	MOVWF	RCREG
	MOVLW	0X90	;habilita puerto serie	
	MOVWF	RCSTA	;bits 7 SPEN y 4 CREN a uno
RECIBO	BTFSS	PIR1,5
	GOTO	RECIBO
	movfw	RCREG
	movwf	CARA1
	movwf	CARA2
	swapf	CARA2
	andlw	0XF0
	movwf	CARA1
	movfw	CARA2
	andlw	0XF0
	bcf	STATUS,Z
	subwf	CARA1,w
	btfss	STATUS,Z
	goto	RECIBO
	BANCO1
	movlw	0x0
	movwf	TRISB
	BANCO0
	movlw 	0x0	;deshabilita puerto serie
	movwf	RCSTA	;bits 7 SPEN y 4 CREN a cero
	bcf	STATUS,Z
	movfw	CARA1
	sublw	0x90
	btfsc	STATUS,Z
	goto	RELE
	goto	SIGUE
RELE	movfw	CARA1
	movwf	PORTB
	BSF	PORTA,0	;activa relevador
	CALL	PAUSA1
	BCF	PORTA,0	;desactiva relevador
	goto	FIN	
SIGUE	movfw	CARA1
	movwf	PORTB
	CALL	PAUSA1
FIN	GOTO	INICIO
PAUSA1	movlw	0x6	;1.005878 s
	movwf	L
PAL1	movlw	0xDA
	movwf	M
PAM1	MOVLW	0XFF
	MOVWF	PE
PAN1	DECFSZ	PE,F
	GOTO	PAN1
	decfsz	M,F
	goto	PAM1
	decfsz	L,f
	goto	PAL1
	return
	END
	
