Autor Tema: AYUDA CON USART pic16f873A  (Leído 1826 veces)

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

Desconectado tino078

  • PIC10
  • *
  • Mensajes: 3
AYUDA CON USART pic16f873A
« en: 09 de Noviembre de 2011, 22:21:33 »
Estoy realizando la comunicacion  serial entre el pc y este pic(16f873A) , lo que pasa es que aveces  recibe el dato  y otra veces no  y no se a que se debe, si alguien me pudiese ayudar se lo agradeceria

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: AYUDA CON USART pic16f873A
« Respuesta #1 en: 10 de Noviembre de 2011, 06:22:41 »
Hola, si pudieses especificar un poco más que compilador utilizas, como es la comunicación...
Porque puede ser por bastantes razones, así a priori la velocidad puede ser excesiva, pero danos un poco más de información para que podamos ayudarte mejor.

Desconectado tino078

  • PIC10
  • *
  • Mensajes: 3
Re: AYUDA CON USART pic16f873A
« Respuesta #2 en: 10 de Noviembre de 2011, 08:18:12 »
GRACIAS POR QUE QUERER AYUDARME.Estoy utilizando un reloj de 4Mhz, por lo tanto le he  cargado  al registro SPBRG  un 25 para una velocidad de 9600, estoy programando en asm,en  paralelo un  compañero lo esta realizando en C y le  sucede el mismo  por ejemplo envió el numero 15, y lo recibe correctamente un 30% otras veces un 60% pero no mas.Estoy compilando con MPLAB y el programador ICP01-V1

 CUALQUIER INDICIO DE AYUDA LO AGRADECERÍA

Desconectado tino078

  • PIC10
  • *
  • Mensajes: 3
Re: AYUDA CON USART pic16f873A
« Respuesta #3 en: 10 de Noviembre de 2011, 08:29:34 »
aquí dejo el codigo, aunque no creo que sea problema porque si no nunca podria recibir  ningún dato nunca


  LIST           P=16F873A
 RADIX          HEX
 INCLUDE        P16F873A.INC

 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC&_LVP_OFF&_DEBUG_OFF

dato equ 0x20
contador equ 0x22

BANK0      MACRO
         BCF   STATUS,RP0
         BCF   STATUS,RP1
         ENDM

BANK1      MACRO
         BSF   STATUS,RP0
         BCF   STATUS,RP1
         ENDM

RESET org 0x00
 goto INICIO
 org 0x04
 goto ISR
 org 0x05
INICIO
 clrf PORTB
 clrf RCREG
BANK1
 movlw b'00000000'
 movwf TRISB
 movlw b'00000100'
 movwf TXSTA
 movlw d'25' ; 25
 movwf SPBRG
 bsf PIE1,RCIE
 BANK0
 movlw b'11000000'
 
 movwf INTCON ;habilita perifericos
 bsf RCSTA,SPEN ;permite tx,rx
 bcf RCSTA,RX9 ; 8 bits datos
 bsf RCSTA,CREN ; recepcion
 
bucle
 nop
 goto bucle

ISR
 BANK0
 btfsc RCSTA,OERR
 goto errrsoverr
 btfsc RCSTA,FERR
 goto errrframe
 btfss PIR1,RCIF
 retfie

 movf   RCREG,W
 movwf  dato
 sublw  d'15'
 btfss STATUS,Z
 goto opc_2
 bsf PORTB,7
 goto fin

opc_2
 movf dato,W
 sublw d'5'
 btfss STATUS,Z
 goto opc_3
 bsf PORTB,6
 goto fin

opc_3
 movf dato,W
 sublw d'1'
 btfss STATUS,Z
 goto fin
 bsf PORTB,5
 fin
 retfie
errrsoverr
 bcf RCSTA,CREN
 bsf RCSTA,CREN
 retfie
 errrframe
 movf RCREG,0
 retfie

 end

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: AYUDA CON USART pic16f873A
« Respuesta #4 en: 14 de Noviembre de 2011, 17:49:57 »
Buenas tino078, a mi me pasó la semana pasada algo muy parecido... échale un ojo a la tabla esta... el problema lo tienes en el oscilador de 4MHz que utilizas, que al querer transmitir a 9600bps, el pic no puede hacer los timmings exactos necesarios para poder tramsnitir de forma sincronizada. Yo te aconsejo utilizar un oscilador de 3.6864MHz, que a esa velocidad no vas e tener error

Saludos