LIST P = 16F877A
RADIX HEX
#include "p16F877A.inc"
;CONFIGURACION INICIAL DE PIC
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
;DECLARACION DE ALGUNAS VARIABLES
DELAY1 EQU 0X00
DELAY2 EQU 0X01
AUX1 EQU 0X02
ORG 0
START
MOVLW B'00000000' ;TASA DE BAUDIO DE 8 BITS
MOVLW BAUDCON
MOVLW B'00000001' ;FIJAR RA0 COMO ENTRADA
MOVWF TRISA
MOVLW B'00000000' ;PORTB COMO SALIDA
MOVWF TRISB
MOVLW B'10000000' ;RC6(TX) COMO SALIDA Y RC7(RX) COMO ENTRADA
MOVWF TRISC
MOVLW 0X0F ;LOS PUERTOS ANALOGICOS SE CAMBIAN A DIGITAL
MOVWF ADCON1
;CONFIGURAR LA TASA BAUDIO A 3600 POR SEGUNDO
MOVLW D'12'
MOVWF SPBRG
MOVLW B'00100000' ;TXEN = 1 HABILITAR TRANSMISOR, BRGH = 0
MOVWF TXSTA ;SYNC = 0, MODO ASINCRONO
MOVLW B'10010000' ;SPEN = 1, HABILITAR EL PRIMER PUERTO SERIAL
MOVWF RCSTA ;CREN - 1, HABILITAR EL RECEPTOR
;-----FIJANDO TIEMPO------
CLRF AUX1
CLRF DELAY2
SETTLE
DECFSZ DELAY2
GOTO SETTLE
RXLOOP
BTFSS PIR1,RCIF ;BANDERA DE INTERRUPCION DEL RECEPTOR
GOTO RXLOOP ;PIR1,RCIF=0, CUANDO LA RECEPCION HA TERMINADO
MOVF RCREG,W ;YA QUE SE INDICA QUE LA RECEPCION HA TERMINADO
MOVWF PORTB ;SE MUEVE EL CONTENIDO DEL RECEPTOR AL PUERTO B
CALL RETARDO ;DONDE SE EXHIBE EL CONTADOR
GOTO RXLOOP ;REGRESA A LA RECEPCION DE DATOS PARA IR MOSTRANDO EL
;SIGUIENTE VALOR DE LA CUENTA
;------SUBRUTINA DE RETARDO-------
RETARDO
DECFSZ DELAY1,1
GOTO RETARDO
DECFSZ DELAY2,1
GOTO RETARDO
RETURN
END