Únete gratis a la revolución de los 32 bits.

Gana un microcontrolador de 32 bits mandando un video donde muestres como te deshaces de un microcontrolador de 8 bits.

La fuente de poder.

Acondiciona la fuente de poder de tu vieja pc para usarla con tus proyectos.

Gamepads de SNES en Windows y Linux.

Adapta tu viejo gamepad de SNES para conectarlo al puerto paralelo (DB25) de la computadora, probado en WinXP y PupppyLinux.

Mostrando entradas con la etiqueta pic. Mostrar todas las entradas
Mostrando entradas con la etiqueta pic. Mostrar todas las entradas

martes, 1 de enero de 2013

Comunicación serial PIC a PIC

La comunicación RS232 se ha vuelto obsoleta en cuanto a computadoras se refiere, pero en el mundo de la electrónica sigue siendo un protocolo muy popular.

Es por eso que dedicamos este post a un ejemplo de comunicación serial entre 2 PIC16F877a (un emisor y un receptor), para ello los programas se han escrito en C con el compilador CCS y simulado en ISIS de PROTEUS.

Al puerto B del microcontrolador emisor se le han conectado entradas lógicas, los cuales se muestran en el puerto B del receptor. Ambos microcontroladores tienen un cristal de 20MHz y usan su módulo serial por hardware.


Esquemático y simulación.

Código emisor:
#include "16f877a.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int main( void ){
int dato;
while(1){
   dato=input_b(); //Recibimos un entero de 8 bits (Puerto B).
   putc(dato); //Mandamos el dato por el puerto serial.
   delay_ms(1000); //Hacemos un retardo
}
return 0;
}


Código receptor:
#include "16f877a.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)

int main( void ){
int dato;
while(1){
   if(kbhit()){ //Revisamo si hemos recibido algo por el puerto serial.
      dato=getc(); //Recibimos un dato de 8 bits
      output_b(dato);//Mostramos el dato en el puerto B
   }
}
return 0;
}


Esta es la configuración típica utilizada, estos mismos programas se pueden usar si en lugar de un cable se utiliza un módulo Bluetooth serial,ya que el protocolo es transparente para el micro.

Durante la simulación es muy conveniente que el micro nos mande mensajes, así como en un programa de PC normal con la ayuda de la función printf(), para este caso se puede conectar la terminal virtual de ISIS a la línea TX del micro que nos va a mandar la información y, con un simple printf() el programa va a mandar esa cadena por el puerto serial.

Descargar códigos y simulación aquí.