;TINFRA628
;PROGRAMA USADO EN EL MODULO TRASMISOR INFRARROJO 
;CONECTAR EL MODULO TRASMISOR AL EVOLUPIC 16F628, 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.
;EL PROGRAMA TAMBIEN FUNCIONA CON UN EDUPIC, SIEMPRE Y CUANDO
;SE UTILICE UN MICROCONTROLADOR 16F628 EN LUGAR DEL 16F84

processor 16F628
include <p16f628.inc>
__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF

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
P	EQU	23H
CONT2	EQU	24H
BAND	EQU	25H
SIGNO	EQU	26H
CARA1	EQU	27H
CARA2	EQU	28H

	ORG 00H
INICIO	clrf	PORTA
	clrf	PORTB
	clrf	BAND
	BANCO1
	movlw	b'00011110'  ;RA1..RA4 entradas	
	movwf	TRISA	;salida RA0,1 ; entrada RA2
	movlw	0x4 	
	MOVWF	VRCON	;deshabilita referencia
	movlw	b'00000010' ;B1/RX entrada, B2/TX salida, 
	movwf	TRISB	;B3/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
	BANCO0
	MOVLW	0X7
	MOVWF	CMCON	;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
			

