Autor Tema: Comunicación rs-485 con el pic16f873  (Leído 3068 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MELECTROM

  • PIC10
  • *
  • Mensajes: 9
Comunicación rs-485 con el pic16f873
« en: 27 de Mayo de 2012, 14:02:17 »
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!
« Última modificación: 29 de Mayo de 2012, 17:16:27 por MELECTROM »


 

anything