Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GETCH() y GETCHAR()
PUTCHAR( )
https://controlautomaticoeducacion.com/wp-content/uploads
/Serial-con-PIC.zip
EJEMPLO 2: comunicación serial entre dos PIC:
Realizar una comunicación serial con pic sencilla entre dos
microcontroladores, y mostrar en un LCD lo que cada uno esta
transmitiendo y/o recibiendo.
El microcontrolador que recibe el dato, debe hacerlo por medio de
una interrupcion por recepción serial. A continuación se describen
los pasos para activar la configuración de la interrupción serial.
Como primer paso se definen las interrupciones en el programa
principal void main(); donde se configura el programa para recibir
interrupciones por recepción serial y adicionalmente se activan las
interrupciones.
#include <16f887.h>
#fuses xt,nowdt
#use delay(crystal=4000000)
#use rs232(baud=57600,xmit=pin_c6,rcv=pin_c7)//esta instrucción dice que empleara la UART
física
#include <lcd.c>
void main()
{
int valor,i;
lcd_init();
while(1)
{
for(valor=0;valor<=10;valor++)
{
putc(valor);
printf(lcd_putc,"\fEnviando= %1D",valor);
delay_ms(1000);
}
}
Codigo segundo microcontrolador.
#include <16f887.h>
#fuses xt,nowdt
#use delay(crystal=4000000)
#use rs232(baud=57600,xmit=pin_c6,rcv=pin_c7,bits=8)
#include <lcd.c>
int valor;
#int_RDA
RDA_isr()
{
valor=getc();
}
void main()
{
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
for(;;)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Recibido= %1D",valor);
}
}
Ejemplo 3 de comunicación serial con pic:
En este último ejemplo vamos a ver como podremos ampliar los
puertos de comunicación serial programando UARTS VIRTUALES.
Para eso basta simplemente seleccionar otros dos pines
CUALQUIERAS donde queremos realizar una comunicación serial,
uno de estos pines lo configuraremos como el PIN RX y el otro como
el PIN TX. Para efectuar esta configuración declaramos en el
encabezado del programa lo siguiente:
#use rs232(baud=57600,
xmit=PIN_c6,rcv=PIN_c7,stream=PIC,parity=N, bits=8)
#use rs232(baud=9600,xmit=PIN_D0,rcv=PIN_D1,stream=PC,
parity=N, bits=8
Mirando detalladamente esta directiva, nos vamos a dar cuenta que
estamos configurando en este caso 2 UARTS, La primera linea está
configurando el UART fisico del PIC, que ya sabemos que correspone
al RC6 y RC7 para el caso del PIC16f887. La segunda linea está
configurando un UART por software, en este caso yo seleccione que el
PIN D0 fuera el de transmisión (TX) y el PIN D1 fuera el de Recepción
(RX).
Note además que ahora cada UART está identificado con
un NOMBRE, este NOMBRE puede ser cualquiera. Para el caso de
la primera línea yo lo llame como PIC («stream=com1») y la
segunda línea lo llame como PC («stream=PC»).
Asi, si por ejemplo yo quisiera leer un dato del UART que se llama
PIC tendría que leerlo así:
char c,k;
c=fgetc(com1);//físico UART
k=fgetc(com2);//Por software
Por otro lado, si yo quisiera escribir por ejemplo en el
UART que se llama PC, tendria que hacerlo asi:
char c=1;
int d=10;
fprintf(com1,"Caracter= %c, Entero= %d",c,d);
//Muestra el Caracter 1 en el PC
//y el entero 10 en el PC
El siguiente ejemplo es similar al Ejemplo 2. Acá vamos a conectar dos
PIC por el puerto UART FÍSICO, pero en el PIC 1 vamos a crear un
UART por Software.
Entonces el PIC 1 va a recibir caracteres por medio de un computador
a través del UART virtual (9600 baudios) y los va a mandar al PIC
2 por el UART fisico (57600 baudios). El segundo PIC debe recibir los
datos que el PIC 1 le está mandando y mostrarlos en una pantalla LCD.
https://controlautomaticoeducacion.com/wp-content/uploads/2016/06/
UartVirtual.rar
http://robotypic.blogspot.com/2012/08/transmision-variable-tipo-
float-por.html
Clase procesadores martes 16 de nov 2021
Formas para enviar datos desde un procesador PIC
Onoff3.c
UART Física (aporta interrupción)
Se configuran desde el wizard