Hola amigos, tengo un problema, quisiera comunicar un pic16f873a con una pc imprimiendo lo que capture en el portb luego lo paso al txreg para enviarlo seguido de un par de letras,pero solo se mandan las letras más no lo del portb. Aqui les dejo mi código talvez ustedes puedan ver cual es el error:
LIST P=PIC16F873A
INCLUDE <P16F873A.INC>
__CONFIG 3F3A
RADIX HEX
;------------------------------------------------------------
; Declaración de Registros
;------------------------------------------------------------
#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
PDel0 EQU 22
PDel1 EQU 23
VAR EQU 24
;------------------------------------------------------------
; Declaración de Bits
;------------------------------------------------------------
RESET ORG 0
GOTO INICIO
ORG 5
;--------------------------------------------------------------------------------------------------------------------
;--------------------------------------INICIO DE PROGRAMA-----------------------------------------------
;--------------------------------------------------------------------------------------------------------------------
INICIO
BANK1 ;BANCO 1
MOVLW b'11111111'
MOVWF TRISB
MOVLW b'10000000'
MOVWF TRISC
MOVLW 0x06
MOVWF ADCON1
MOVLW b'11111111'
MOVWF TRISA
;--------------------------------------------------------------------------------------------------------------------
;CONFIGURA RS232
;--------------------------------------------------------------------------------------------------------------------
MOVLW b'00100000' ;Configuracion USART (8 Bits de transmision)
MOVWF TXSTA
MOVLW .129 ;19600 baudios (.64) A 20MHz de frecuencia del pic
MOVWF SPBRG ;habilita la transmision y tbm el modo asincrono high speed (20MHz)
BANK0 ;BANCO 0
BSF RCSTA,SPEN ;Serial Activado
BANK1 ;BANCO 1
BSF TXSTA,TXEN ;Habilita la transmision
BANK0 ;BANCO 0
BSF RCSTA,SPEN ;Volvemos a activar la transmision
BSF RCSTA,CREN ;Configuramos la recepcion continua
movlw b'10010000' ;Configuracion de la usart
movwf RCSTA
CLRF PORTB ;Limpiamos puertoB
CLRF PORTC ;Limpiamos puertoC
CLRF PORTA ;Limpiamos puertoA
;-----------------------------------------------------------
; Inicio de programa
;-----------------------------------------------------------
PRO_PRINCIPAL
BSF RCSTA,SPEN ;Volvemos a activar la transmision
CALL COD_DIGITAL
MOVF PORTB,W
CALL ENVIA_TX
CALL COD_ANALOGIC
CALL COD_ANALOGIC1
CLRW
; MOVWF PORTC
; MOVF PORTC,W
GOTO PRO_PRINCIPAL
COD_DIGITAL
MOVLW 'N'
CALL ENVIA_TX
MOVLW 'D'
CALL ENVIA_TX
NOP
RETURN
COD_ANALOGIC
MOVLW 'N'
CALL ENVIA_TX
MOVLW 'A'
CALL ENVIA_TX
NOP
RETURN
COD_ANALOGIC1
MOVLW 'N'
CALL ENVIA_TX
MOVLW 'a'
CALL ENVIA_TX
NOP
RETURN
ENVIA_TX
BCF PIR1,TXIF
MOVWF TXREG ;Cargamos a TXREG con el valor de W
BANK1 ;Cambiamos al banco1
COMP_ENVIA
BTFSS TXSTA,TRMT ;Preguntamos si termino la transmision
GOTO COMP_ENVIA ;Volvemos a preguntar
BANK0 ;Regresamos al banco0
RETURN ;Retornamos
END