LIST p=16F87 ;indica el modelo del pic
#include "P16F87.INC" ;se incluye la definicion de los registros internos
AUXI EQU 0x68;variable auxiliar
ORG 0
goto INITVAR
ORG 5
;--------------------------------------------------------------------------------------
;Esta rutina inicializa las variables a utilizar
;---------------------------------------------------------------------------------------
INITVAR
clrf PORTA;Limpia la salida
bsf RCSTA,SPEN;configura la USART para recepcion continua
bsf STATUS,RP0;cambia al banco 1
clrf TRISA;Puerta A como salida
movlw b'11011111'
movwf TRISB
movlw b'00100100'
movwf TXSTA
movlw .25 ;Baud Rate = Fosc/(16(X+1))= 9600 baudios, X=(Fosc/((Baud rate)x16))-1
movwf SPBRG; X=(4MHz/(9600x16))-1 = 25
bcf STATUS,RP0;cambia al banco 0
bsf RCSTA,SPEN;configura la USART para recepcion continua
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
bsf STATUS,RP0;cambia al banco 1
bcf STATUS,RP1;cambia al banco 1
bsf TXSTA,TXEN
bcf STATUS,RP0;cambia al banco 0
movlw 0x42 ;UNA B
movwf AUXI
call ENVIAR
ESPERA clrwdt
goto ESPERA
ENVIAR
movf AUXI,W
movwf TXREG
bsf STATUS,RP0;cambia al banco 1
COMPTX btfss TXSTA,TRMT;comprueba si acabo de transmitir
goto COMPTX
bcf STATUS,RP0;cambia al banco 0
movlw 0x02
movwf PORTA
return
END