tecmikro logo
Programación de microcontroladores PIC en mikroC PRO
Email: tecmikro@gmail.com   Cel. 098 743 8877   Telf. 243 0352 Quito-Ecuador


Comunicación PIC a PIC

 

Comunicación PIC a PIC entre dos microcontroladores PIC16F628A usando el módulo USART-Software del compilador mikroC PRO.

Consta de dos proyectos, uno para cada PIC:

  1. El proyecto PIC a PIC LCD es utilizado para recibir datos y presentarlos en un LCD 2x16.
  2. El proyecto PIC a PIC se utiliza para enviar datos.

Código en mikroC PRO (lenguaje C)

Primer código fuente:

//PIC_a_PIC_LCD.c
//Microcontrolador: PIC16F628A
//Oscilador: Interno-4MHz
//Este programa se almacena en uno de los dos microcontroladores (U2) y recibe continuamente un
//dato (la letra 'r') cada 300 ms por el pin de recepción RB6(12). El pin de transmisión es
//RB7(13). El dato recibido se va presentando en el LCD.
//La velocidad de transmisión de 600 Baudios fue seleccionada experimentalmente por un
//procedimiento de ensayo y error. El pin RB0(6) se enciende por 1 segundo en el caso de
//intentar establecer una velocidad de transmisión muy alta o muy baja.

//Declaración de las 12 variables necesarias para la conexión del módulo LCD.
sbit LCD_RS at RA4_bit;
sbit LCD_EN at RA6_bit;
sbit LCD_D4 at RA0_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D7 at RA3_bit;

sbit LCD_RS_Direction at TRISA4_bit;
sbit LCD_EN_Direction at TRISA6_bit;
sbit LCD_D4_Direction at TRISA0_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D7_Direction at TRISA3_bit;
// Fin de declaración de variables de conexión.

char error, byte_read;
void main(){
CMCON=0x07;                 //Pines RA<3:0> como E/S digital.
PORTB=0x00;
TRISB0_bit=0;
Lcd_Init();                 //Inicializa el LCD.
Lcd_Cmd(_LCD_CLEAR);        //Borra el display.
Lcd_Cmd(_LCD_CURSOR_OFF);   //Apaga el cursor.
error = Soft_UART_Init(&PORTB, 6, 7, 600, 0); //Inicializa el módulo UART-Software a 600 Baudios.
  if (error >0){
    RB0_bit=1;
    Delay_ms(1000);
    RB0_bit=0;
    while(1);              //Detiene el programa en caso de error.
  }
  Delay_ms(100);
  while(1) {
    byte_read = Soft_UART_Read(&error); //Recibe un dato y lo guarda en byte_read.
    if (!error)            //Si no hay error.
      Lcd_Chr_CP(byte_read); //Envía el dato recibido hacia el LCD.
      Delay_ms(200);
  }
}

 

Segundo código fuente:

//PIC_a_PIC.c
//Microcontrolador: PIC16F628A
//Oscilador: Interno-4MHz
//Este programa se almacena en uno de los dos microcontroladores (U1) y transmite continuamente un
//dato (la letra 'r') cada 300 ms por el pin de transmisión RB6(12). El pin de recepción es
//RB7(13).
//La velocidad de transmisión de 600 Baudios fue seleccionada experimentalmente por un
//procedimiento de ensayo y error. El pin RB0(6) se enciende por 1 segundo en el caso de
//intentar establecer una velocidad de transmisión muy alta o muy baja.

char error;
void main(){
CMCON=0x07;                 //Pines RA<3:0> como E/S digital.
PORTB=0x00;
TRISB0_bit=0;
error = Soft_UART_Init(&PORTB, 7, 6, 600, 0); //Inicializa el módulo UART-Software a 600 Baudios.
  if (error >0){
    RB0_bit=1;
    Delay_ms(1000);
    RB0_bit=0;
    while(1);              //Detiene el programa en caso de error.
  }
  Delay_ms(100);
  while (1){
   Soft_UART_Write('r');  //Envía el carácter 'r' cada 300 ms.
   Delay_ms(300);
  }
}

Esquema eléctrico de la comunicación PIC a PIC:

comunicación pic a pic

 


eBook en formato PDF "Cómo programar microcontroladores PIC"

Guía básica para programar microcontroladores PIC en mikroC PRO. Disponible en formato PDF. A la venta por tan sólo US$12.00

¡Cómpralo ya!