Saludos a todos, tengo un problema con un programa aver si me pueden ayudar.
El programa es bien simple consta de 2 micos 16f877 los cuales uno hace de emisor y otro de receptor mediante la usart. A la entrada del emisor hay un pulsador, cuando se pulsa el emisor emite el numero 23 y el receptor recibe el dato mediante una interrupcion, chequea una varialbe donde se guarda lo que ha recibido y si es 23 pone el puerto d a 1.
los programas serian estos
Emisor:
#include <16F877.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 4000000)
#use rs232(uart1, baud=2400)//usart1 -->ajuste de XMIT y RCV para la USART 1
#byte porta = 0x05
void main()
{
char c;
set_tris_a(0xff);
c = 23;
while(1)
{
while(porta == 0x01)
{
putc(c);//Envía el caracter vía serie por la USART del PIC
}
}
}
Receptor
#include <16F877.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 4000000)
#byte puerto_d = 0x08
#use rs232(uart1, baud=2400)
char dato;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
dato = getc();
if (dato==23)
puerto_d = 0xff;
}
void main()
{
enable_interrupts(global);//Habilito interrupción USART
enable_interrupts(int_rda);
set_tris_d( 0x00 ); // Puerto D como salida.
puerto_d = 0x00;
while(true){
}
}
he simulado y probado el circuito en la practica real y el emisor va bien transmite el dato , sin embargo nose porque no consigo por mas que modifico el programa que el receptor reciba el dato.
¿podeis ayudarme?
muchas gracias a todos