;TINFRA88TINY
;PROGRAMA USADO EN EL MODULO TRASMISOR INFRARROJO
;DEBEN HACERSE CAMBIOS EN EL ALAMBRADO DEL MODULO
;TRASMISOR. VER DOCUMENTO PDF. 
;CONECTAR EL MODULO TRASMISOR AL EVOLUPIC 16F88, EN CONECTOR PARA LCD
;PARA ENVIAR EL MENSAJE, DEBE OPRIMIRSE EL BOTON DE RESET. EL MENSAJE 
;ENVIA 1 BYTE CON EL CODIGO DE LOS 4 MICROSWITCHES. SI EL CODIGO
;ES 1001, ENTONCES EN EL MODULO RECEPTOR, SE ENCIENDE Y APAGA EL
;RELEVADOR. LA SEÑAL SE EMITE HASTA UNA DISTANCIA DE 3 A 4 METROS
;LOS MODULOS TRASMISOR Y RECEPTOR DEBEN DE ESTAR UNO FRENTE AL OTRO
;CON LA SEÑAL EMITIDA EN LINEA RECTA.
;PARA EVOLUPIC Bootloader 16F88
;ANSEL, CVRCON Y CMCON EN BANCO 1

processor 16F88
include <p16f88.inc>


BANCO0	MACRO
	BCF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM

BANCO1	MACRO
	BSF	STATUS,RP0
	BCF	STATUS,RP1
	ENDM

CONT1	EQU 	20H
L	EQU	21H
M	EQU	22H
PE	EQU	23H
CONT2	EQU	24H
BAND	EQU	25H
SIGNO	EQU	26H
CARA1	EQU	27H
CARA2	EQU	28H

	ORG 00H

	CLRF PCLATH
	GOTO INICIO
			
	ORG 3

INICIO	clrf	PORTA
	clrf	PORTB
	clrf	BAND
	BANCO1
	clrf	ANSEL	;dehabilita convertidores
	movlw	b'00011110'  ;RA1..RA4 entradas	
	movwf	TRISA	;salida RA0,1 ; entrada RA2
	movlw	0x4 	
	MOVWF	CVRCON	;deshabilita referencia
	movlw	b'00000100' ;B2/RX entrada, B5/TX salida, 
	movwf	TRISB	;B0/CCP1 salida
	movlw	D'25'
	movwf	PR2	;T de PWM
	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	0X7
	MOVWF	CMCON
	BANCO0			;deshabilita comparador
	movlw	D'13'
	movwf	CCPR1L	;?
	movlw	B'00001100'
	movwf	CCP1CON	;modo PWM
	movlw	B'00000100' 
	movwf	T2CON	;prescala 1:1, Timer2 ON
	MOVLW	0X00
	MOVWF	RCREG
	MOVWF	TXREG
	MOVLW	0X80	
	MOVWF	RCSTA	;bit 7 SPEN a uno, no necesita recibir
	movfw	PORTA	;envia estado de SW en puerto A
	movwf	CARA1
	rrf	CARA1
	swapf	CARA1,W
	movwf	CARA2
	movfw	CARA1	
	andlw	B'00001111'
	movwf	CARA1
	movfw	CARA2
	andlw	B'11110000'
	iorwf	CARA1,W
	MOVWF	TXREG	;valor a enviar de aqui pasa a TSR
	call	ENVIAR
	goto	FIN
ENVIAR	BANCO1
	bsf	TXSTA,5
ENVIO	BTFSS	TXSTA,1
	GOTO	ENVIO
	BANCO0
	return
FIN	GOTO	FIN
	end
			

