Saludos con la comunidad, vengo a pedir su ayuda con esto de la comunicación en serie entre 2 pics. La teoría del envio y recepción ya la comprendí, en gran parte gracias a este foro y a las preguntas que ya hicieron sobre el tema. Mi problema es el siguiente, escribi un programa para enviar una variable int16 a través del puerto serie y que el otro pic la recibiera y la volviese s convertir a int16 hasta ahi todo bien, lo que me esta rompiendo la cabeza es intentar mandar 2 variables. les adjunto los codigos:
EMISOR#include <16f876.h>
#device adc=10
#fuses hs,nowdt
#use delay(clock=20M)
#use rs232(baud=2400, xmit=pin_c6,rcv=pin_c7)
#include <lcd.c>
#INCLUDE <stdlib.h>
void main()
{
int16 A,B;
char x="x",y="y",A1[5],B1[5];
lcd_init();
setup_adc(adc_clock_internal);
setup_adc_ports(all_analog);
while(1)
{
set_adc_channel(0);
delay_us(20);
A=read_adc();
sprintf(A1,"%04.0Lu",A);
set_adc_channel(1);
delay_us(20);
B=read_adc();
sprintf(B1,"%04.0Lu",B);
lcd_gotoxy(1,1);
printf(lcd_putc,"x= %4.0Lu",A);
lcd_gotoxy(1,2);
printf(lcd_putc,"y= %4.0Lu",B);
putc(x);
delay_ms(50);
printf("%04s",A1);
delay_ms(50);
putc(y);
delay_ms(50);
printf("%04s",B1);
delay_ms(50);
}
}
RECEPTOR#include <16f876.h>
#fuses hs,nowdt
#use delay(clock=20M)
#use rs232(baud=2400, xmit=pin_c6,rcv=pin_c7)
#include <lcd.c>
#INCLUDE <stdlib.h>
int i=0,c=0,x1=0,y1=0,e=0;
int16 A,B;
char x="x",y="y",A1[5],B1[5],valor;
#int_RDA
void RDA_isr()
{
if(e==0)
{
valor=getc();
if(strcmp(valor,x)==0)
{
x1=1;
}
else if(strcmp(valor,y)==0)
{
y1=1;
}
e=1;
}
if(x1==1)
{
A1[i]=getc();
i++;
if(i==4)
{
i=0;
A=atol(A1);
x1=0;
e=0;
}
}
if(y1==1)
{
B1[i]=getc();
i++;
if(i==4)
{
i=0;
B=atol(B1);
y1=0;
e=0;
c=1;
}
}
}
void main()
{
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(1)
{
if(c==1)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"x= %4Lu",A);
lcd_gotoxy(1,2);
printf(lcd_putc,"y= %4Lu",B);
c=0;
}
}
}
He intentado de 1000 formas distintas que el receptor me interprete bien lo que le llega pero no consigo hacerlo, aveces con simulación de proteus el receptor me muestra los dígitos combinados entra las 2 variables o aveces simplemente no me muestra nada.
Ojala me puedan ayudar, tal vez es un problema tonto mio de interpretación de la teoría o que se yo
Gracias de ante mano.