
HOLA Q TAL!!!
Haber yo utilizo interrupción para RX y sin int para TX también a 9600 8n1
Cuando llega una int guardo el caracter en RAM y salgo asi de facil, cuando tengo un string terminado con [0d]
lebanto un flag y en el main leo el comando.
Mi configuración:
;------------------------------------
; CONFIGURACION INTERRUP
BSF INTCON,GIE ;ACTIVA INTERRUPCIONS GLOBALS
BSF INTCON,PEIE ;ACTIVA INTERRUPCIONS DELS PERIFERICS
BCF INTCON,INTE ;DESACTIVA INTERRUPCIO RB0
BCF INTCON,RBIE ;DESACTIVA INTERRUPCIO PORT B
;-------CONFIGURACIO INTERRUPCIONS UART---
BSF STATUS,RP0 ;BANK 1
BCF PIE1,TXIE ;DESACTIVA INT TRANSMISIO DE UART
BSF PIE1,RCIE ;ACTIVA INT RECEPCIO DE UART
BCF STATUS,RP0 ;BANK 0
;_______CONFIGURACIO TRANSMISIO____________
BSF STATUS,RP0 ;BANK 1
;SELECCIONA 8 BITS
;HABILITA TRANSMISIO
;SELECCIONA ASYNCRONO MODO
;LOW SPEED
MOVLW B"00100000"
MOVWF TXSTA
BCF STATUS,RP0 ;BANK 0
;-------CONFIGURACIO RECEPCIO------
;HABILITA PORT SERIE
;REBEM 8 BITS
;RECEPCIO CONTINUA
;SENSE DETECCIO DE DIRECCIO
MOVLW B"10010000"
MOVWF RCSTA
;----------------------------------------------
;----------------------------------------------
; CARREGUEM CONSTANT PER GENERAR ELS BAUDS
BSF STATUS,RP0 ;BANK 1
MOVLW D"18" ;AL FUNCIONAR A 12MHZ 18 SERA 9600 BUADS
MOVWF SPBRG
BCF STATUS,RP0 ;BANK 0
;----------------------------------------------
Espero haberte ayudado
