Autor Tema: comunicacion serial de pic a pi  (Leído 2255 veces)

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

Desconectado hegod

  • PIC10
  • *
  • Mensajes: 8
comunicacion serial de pic a pi
« en: 02 de Octubre de 2004, 22:05:00 »
nesesito entrar 8bit y sacar 8bit con el 16f84 pero no me alcanzan los pines, e penzado en la comunica comunicacion serial entre dos pic, pero no tengo idea de como es el mecanismo, ¿es mas leta?
¿como funciona ? ¿vetajas desventas?

muchas grasias
suerte.....................

Desconectado IngLAOFX

  • PIC10
  • *
  • Mensajes: 43
RE: comunicacion serial de pic a pi
« Respuesta #1 en: 04 de Mayo de 2005, 05:00:00 »
Bueno, la comunicacion serial tiene un formato, el estandar es el siguiente:

Bit de inicio, transmitir el Bit0, bit1, bit2...bit8, bit de paridad, bit de stop, fin..

Bi | b0 |b1| b2 | b3 | b4 | b5 | b6 | b7 | Bp | Bs

al principio es tedioso pero una vez que le agarras la movida, se te hara sencillo, peor hay otras considerciones que debes hacer..

El bit de inicio siempre es un 0 logico, y el bit de paro es un 1 logico.
Si no hay ningun dato en el bus, es decir, no se esta transmitiendo nada, debe estar presente un 1 logico en el bus, es por eso que el bit de inicio es un 0 logico, y el bit de stop un 1 logico.

El bit de paridad solo se usa para el control de errores, puedes eliminarlo en la transmision, segun lo desees. En algunos instrumentos, es posible configurar el bit de  paro o stop para que dure 2 tiempos de bit o 1.5 tiempos de bit, es decir, si utilizas una velocidad de transmision de 9600 bits por segundo (bps), el tiempo de bit es de aproximadamente 104 uS, entonces, solo haz las cuenats y listo. Aunque por lo general utilizar un solo bit de stop es suficiente.

otro detalle a considerar es lo que vas a unir serialmente, si vas a utilizar niveles rs232 o niveles ttl, lo digo por lo de 1"s y 0" logicos, ya que varian segun la norma que utilizes....

Mira, aqui te va una pequeñra rutina que hice para transmision y recepcion serial a 9600 bps, utiliza 1 bit de inidio, 8 bits de datos y 1 bit de stop...


;----------------------------------------------------------------
; RXserial y TXserial
;----------------------------------------------------------------
; Registros Asociados: NumBits, TxReg, RxReg, TEMPB1
; Constantes: SerTX = PORTC , TX = 6
;             SerRX = PORTB , RX = 0
; Si se deseara modificar la velocidad de la transmision
; es necesario determinar el valor de la constante TEMPB1
; del Delay, en el caso de 9600 bps TEMPB1=.30 (decimal)
;----------------------------------------------------------------
TXserial                ;  (9600 bps)
   bsf    STATUS,C     ;  Config Bit de Stop
   movlw   .10
   movwf   NumBits
   bcf    SerTX,TX   ;  Transmitir 0   
   goto   $+2
   bsf    SerTX,TX   ;  Transmitir 1
   call   SBit_Time
   decf   NumBits,F
   btfsc   STATUS,Z
   return
   rrf    TxReg,F     ; LSB en C   
   btfss   STATUS,C
   goto   $-9
   goto   $-8
;----------------------------------------------------------------
RXserial               ; (9600 bps)
   clrf            RxReg
   movlw      .9
   movwf      NumBits
   bsf        STATUS,C   ;  Bit de Stop
   call       SBit_Time      
   decf       NumBits,F    
   btfsc      STATUS,Z   
   goto       Fin_RX     
   btfss      SerRX,RX    
   goto       $+.4        
   bsf        STATUS,C   
   rrf        RxReg,F     
   goto       $-.8        
   bcf        STATUS,C   
   rrf    RxReg,F    
   goto   $-.11       
Fin_RX
   call   SBit_Time
   return
;----------------------------------------------------------------
SBit_Time   ;  ~104 uS por bit (9600bps)
   movlw   .30
   movwf   TEMPB1
   decfsz   TEMPB1,F
   goto   $-1
   return
;----------------------------------------------------------------

Gana Mas Una Bruja Rentando Su Palo De Escoba A 10Euros por Vuelta Que Uno Prediciendole Un Esplendoroso Futuro A La Clase Obrera En Una Semana


 

anything