;
;					EJEMPLO 3.6
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para MicroPIC Trainer y Trainer PLUS. Comunicación serie gestionada por software.
;
;Haciendo uso de las rutinas incluidas en el fichero RS232LOW.INC, se trata de utilizar el
;canal RS232 de la Trainer PLUS para comunicar vía serie con diferentes periféricos. En los
;ejemplos aquí propuestos se utilizará un PC para que, con el software TERMINAL.EXE, actue
;como un simple terminal de comunicaciones. El usuario deberá preparar los cables de comuni-
;cación entre la Trainer PLUS y el PC, teniendo en cuenta de cruzar la señal de Transmisión
;(TxD) con la de recepción (RxD) y viceversa.
;
;Este ejemplo propone esperar a recibir un carácter desde el terminal para, inmediatamente,
;retransmitirlo al mismo a modo de ECO.

		List	p=16F84		;Tipo de procesador
		include	"P16F84.INC"	;Definiciones de registros internos

CLKIN		equ	.4000000	;Frecuencia de trabajo
BAUDIOS		equ	.9600		;Velocidad de comunicación
T_MODO		equ	1		;Transmite primero bit LSB
R_MODO		equ	1		;Recibir primero bit LSB
T_Nbit		equ	8		;Transmite caracteres de 8 bits
R_Nbit		equ	8		;Recibe caracteres de 8 bits
Sbit		equ	2		;Transmite 2 bits de stop
                 
Rs232_var	equ	0x0c		;Inicio de las variables para rutinas RS232
					
		org	0x00		;Vector de reset
		goto	Inicio
		org	0x05		;Salvar el vector de interrupción	
					
		include	"RS232LOW.INC"	;Incluir rutinas de comunicación
							
;****************************************************************************************
;Programa Principal

Inicio:		bsf	STATUS,RP0	;Selecciona página 1 de datos
		movlw	b'10001111'	;Preescaler de 128 para el WDT. Pull_Up Off
		movwf	OPTION_REG	
		movlw	b'11101111'
		movwf	TRISB		;RB5 entrada y RB4 salida
		bcf	STATUS,RP0	;Selecciona página 0 de datos	
		
Loop		clrwdt
		bsf	Txd_pin		;Línea de transmisión a "1"
		bsf	Rxd_pin		;Línea de recepción a "1"

		call	RxD		;Espera a recibir un carácter
		movf	Rxdreg,W	;Lee el carácter recibido
		movwf	Txdreg
		call	TxD		;Retransmite carácter recibido (ECO)
		
		goto	Loop

		end			;Fin del programa fuente

