hola hice yo tmbien uno de transmision y de resivir datos, o que hice en este programa en
asambler, ahi te va pero la unica diferencia es que lo hice con un pic16f628a..
pero solamente cambiale..el pic en el programa y listo...al conectalo y debe de aparecer primero "ESCRIBA SU NUMERO FAVORITO" y depsues tienes que ingresar la "W" para que se encienda un led...
;----------------------------------
;AUTOR: JORGE ARTURO RDZ HDZ
;TITULO: TRANFERENCIA DE DATOS EN RX Y TX
;FECHA: DOMINGO,07/JUNIO/'09
;----------------------------------
;----------------------------------
; CONFIGURACION
;----------------------------------
LIST P=16F628A
#INCLUDE <P16F628A.INC>
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ON & _XT_OSC
;---------------------------------
; VARIABLES
;---------------------------------
CBLOCK 0X20
CONTADOR
NUMERO
ENDC
ORG 0
GOTO START
ORG 5
;----------------------------------
; CONFIGURACION DEL PIC
;----------------------------------
START BSF STATUS,RP0 ;BANCO 1-----------------------------
MOVLW B'00000010'
MOVWF TRISB ;RB1 COMO ENTRADA Y EL RESTO COMO SALIDA
MOVLW B'00100100' ;CONFIGURA LA TRANSMISION
MOVWF TXSTA ;EN TXSTA, TRANSMISION ACTIVADA
MOVLW D'103' ;ACTIVACION DEL LOS BAUDIOS
MOVWF SPBRG ;A 2400
MOVLW B'11000111'
MOVWF OPTION_REG
BCF STATUS,RP0 ;BANCO 0------------------------------
MOVLW B'10010000' ;RESIVE DATOS CONTINUIOS
MOVWF RCSTA ;Y ACTIVA RX,TX DEL PORTB
MOVLW D'7' ;DESACTIVAR LOS COMPARADORES
MOVWF CMCON
CLRF PORTB
;----------------------------------
; INCIO DEL PROGRAMA
;----------------------------------
MAIN MOVF NUMERO,W
CALL TABLA
CALL ENVIAR
INCF NUMERO,F
MOVF NUMERO,W
XORLW D'28'
BTFSS STATUS,Z
GOTO MAIN
CALL PAUSE_1
CLRW
CLRF NUMERO
AGAIN CALL RESIBO
XORLW 'W'
BTFSS STATUS,Z
GOTO OFF
BSF PORTB,7
GOTO AGAIN
OFF BCF PORTB,7
GOTO AGAIN
;---------------------------------
; ENVIO AL TX
;---------------------------------
ENVIAR MOVWF TXREG
BSF STATUS,RP0 ;BANCO 1---------------------------
END_TX BTFSS TXSTA,TRMT
GOTO END_TX
BCF STATUS,RP0 ;BANCO 0---------------------------
RETURN
;---------------------------------
; RESIBO DEL RX
;---------------------------------
RESIBO MOVF RCREG,W
RETURN
;--------------------------------
; RETARDO_1S
;--------------------------------
PAUSE_1 MOVLW 0X64 ;SE CARGA LA CONTADOR CON 100
MOVWF CONTADOR
DELAY BCF INTCON,T0IF ;LE LIMPIA EL BIT, DE DESBORDAMIENTO DE TMRO
MOVLW 09 ;SE CARGA 217
MOVWF TMR0 ;A TMRO
DELAY2 BTFSS INTCON,T0IF ;ESPERA EL DESBORAMIENTO DE TMRO
GOTO DELAY2 ;BUCLE
DECFSZ CONTADOR,F ;DECREMENTE A 1 EL CONTADOR
GOTO DELAY ;BUCLE
RETURN
;--------------------------------
; TABLA
;--------------------------------
TABLA ADDWF PCL,F
DT "ESCRIBA SU NUMERO FAVORITO: "
END