![]() |
microC®
Líder
en la programación de microcontroladores PIC
©2009-2012 |
|
Síguenos en
|
| Inicio | La empresa. Contáctanos
| Cómo comprar
nuestros productos | Ofertas | Recursos | Mapa del sitio | |
| Comunicación PIC a PIC - Ejemplo | |
| Comunicación entre dos PICs: Comunicación entre dos microcontroladores PIC16F628A usando el módulo UART-Software del compilador mikroC. 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 lenguaje C
(mikroC).- 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. //Comunicación PIC a PIC usando la biblioteca UART por Software (Software UART). //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). //Comunicación PIC a PIC usando la biblioteca UART por Software (Software UART). //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); } } |
Si esta información te ha sido útil entonces considera la posibilidad de hacer una contribución para microC. Tu apoyo es muy
importante para seguir adelante.
Muchas gracias. |
Esquema eléctrico:![]() |
|