Autor Tema: comunicar 2 pics  (Leído 1762 veces)

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

Desconectado cereal2

  • PIC10
  • *
  • Mensajes: 26
comunicar 2 pics
« en: 11 de Mayo de 2005, 07:11:00 »
Hola, me gustaria que me resolvieran una duda, que es la siguiente ¿Como sería el codigo en ensamblador para comunicar 2 pics conectados a traves del puerto B de los mismos?, lo necesito para enviar simplemente un caracter por uno y el otro que lo reciba

Un saludo y gracias de antemano........

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: comunicar 2 pics
« Respuesta #1 en: 11 de Mayo de 2005, 14:33:00 »
Buenas.

Para enviar un byte de un PIC a otro conectas los dos puertos entre sí y te aconsejo que habilites un bit, del puerto A por ejemplo, para habilitar la escritura.

El código del PIC que envía el dato sería asi:

Codigo:
envia   movwf   portb
   bsf   porta,0
   call   delay
   bcf   porta,0
   return


el código ascii a enviar viene en "w".

La subrrutina de retardo se usa para dar tiempo al PIC receptor a capturar el dato. Su duración dependerá de lo que esté haciendo y cuanto tarde en hacerlo. Aquí te paso un retardo de 255 us

Codigo:
delay   clrf   contador
dly0   decfsz   contador,f
   goto   dly0
   return


En cuanto al PIC que recibe el dato, ejecutará la subrrutina:

Codigo:
recibe  btfss   porta,0
   goto   recibe   
   movf   portb,w
   movwf   dato
   call   delay
   return


Éste espera indefinidamente hasta que se recibe el pulso de escritura por el puerto A (bit 0), Cuando lo recibe, almacena el código en el registro "dato" y espera el mismo tiempo que el emisor para evitar la recepción de un mismo dato varias veces.

Con esto y poco más tienes comunicados los dos PICs. Al habilitar la señal de escritura de deja libre el puerto B de los PICs para hacer cualquier otra cosa con el.

Desconectado cereal2

  • PIC10
  • *
  • Mensajes: 26
RE: comunicar 2 pics
« Respuesta #2 en: 12 de Mayo de 2005, 12:55:00 »
Muchas gracias por resolver mi problema. Sabia que se conectaba los pines de un puerto a otro, pero no me di cuenta que hacia falta un bit de señal para confirmar que los datos están preparados para ser recibidos.

Pasa lo mismo en una de las rutinas de LCD, que es el bit E (enable) para enviar carácteres al LCD.

RebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotado

Gracias de nuevo y participad en el foro, entre todos, ganaremos!

RebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotado

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: comunicar 2 pics
« Respuesta #3 en: 17 de Mayo de 2005, 13:43:00 »
Hola. Mira pues ahi estas utilizando un total de 9 pins de cada PIC, ya que estas usando una comunicacion en paralelo, puedes hacer exactamente lo mismo pero utilizando solo 2 bits de cada PIC(comunicacion serial sincronica), o solo 1 pin(comunicacion serial asincrona, no la recomiendo ya que tiende a fallar, hay que calcular muy bien los tiempos...Sonrisa))).
una comunicacion serial con comprobacion de escritura necesita 3 bits, pero tambien es posible hacerlo con 2 bits. Inclusive es posible hacer una conexion bidireccional serial con comprobacion de escritura utilizando solo 2 bits de cada PIC(jeje, yo la hice y funciona...)
La diferencia entre las seriales es que llevan mas tiempo en realizarse y el codigo
suele ser mas dificil(pero no tanto! Giño) Bueno, era simplemente para que sepas que hay otras formas de comunicarlos. saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.