Buenas tardes,
Estoy realizando un proyecto de comunicaciones con RS-485 con PIC16F873 donde la comunicación son 2 displays, uno de ellos es el que estoy programando con assembler, donde mi display tiene que recibir los datos del otro display, y visualizarlos. El tipo de protocolo utilizado es RTU, 5 bytes de la trama y sin bit de paridad. Mi problema es al momento de emular el sistema, cuando entro en la interrupción por recepción, no detecta el registro PIR1,RCIF, por lo que, por lo visto según el emulador, nunca llega a entrar en la interrupción para poder visualizar los datos. Este registro se activa ó desactiva a nivel de hardware..
Cuál puede ser mi fallo? como recibiría los datos mediante el protocolo RTU? como compruebo la dirección? más abajo dejaré una parte del código. Espero que por favor me puedan ayudar. Gracias, un saludo,
RECEP
BTFSS PIE1,RCIE
GOTO Exit
BCF STATUS,RP0
BTFSS PIR1,RCIF
GOTO Fin_RECEP ;finalizar comprobación de interrupción por recepción
BTFSC RCSTA,OERR ;Testea el bit de RCSTA, OERR
;OERR: bit de error por desbordamiento
GOTO SAL_Overrun ;Sale de la interrupción
BTFSS RCSTA,FERR ;Testea el bit FERR de RCSTA
;FERR: Bit de error enmarcado
GOTO RECEP_Overrun ;Subrutina chequeo de desbordamiento por software.
;Recepción de datos
MOVF RCREG,W
GOTO Exit ;Recuperar el estado inicial del PIC (Subrutina)y sale de la
;interrupción
RECEP_Overrun ;Recepción de datos
.
.
.
SAL_Overrun ;Sale de la interrupción
.
.
.
EXIT
retfie
;Comienza el programa
;Configuración de registros
BSF STATUS,RP0
MOVLW K_ADCON1 ;ent digitales
MOVWF ADCON1
MOVLW K_OPTION_REG ;PRescaler asig (1/64)
;RB0/INT, pull-up desactivado
MOVWF OPTION_REG ;Pull-up desactivado, TMR0 con PRE 2
BCF STATUS,RP0
MOVLW RECARGA_TMR0 ;D'100'
MOVWF TMR0
MOVLW Baud_Rate_Constant ;(D'25')
MOVWF SPBRG ;Vel de comunic
BSF TXSTA,BRGH ;Altas velocidades
BCF TXSTA,SYNC
BSF TXSTA,TX9
BSF TXSTA,TXEN
BCF STATUS,RP0
BCF RCSTA,ADDEN
BCF RCSTA,RX9
BCF RCSTA,CREN
BSF RCSTA,SPEN
CLRF PIR1
CLRF PIR2
BSF STATUS,RP0
CLRF PIE1
CLRF PIE2
BCF STATUS,RP0
CLRF INTCON
BSF INTCON,T0IE
BSF INTCON,PEIE
BSF INTCON,GIE
MOVF RCREG,W
MOVF RCREG,W
BSF STATUS,RP0
BSF PIE1,RCIE
.
.
.
CODIGO
.
.
.
FIN
Espero me puedan corregir. Un saludo!