Hola que tal, estoy trabajando en un proyecto personal donde comunico dos pic mediante modulos RF usando rs232 el cual usa el TX y RX, y como es la primera vez que lo uso decidi hacer un programa sencillo, donde desde un pic presiono un push boton y este envia la señal al otro pic el cual al recibirla enciende un led, bastante sencillo para despues hacer algo mas complicado, el problema es que apenas alimento el pic receptor y no pasa mas de 5 segundos cuando este enciende el led sin que yo presione el boton de transmisor, y en la simulacion realizada con proteus me corre perfectamente, al igual que si colo solo un cable entre TX del transmisor y el RX de recptor en el circuito montado va de 10 este se enciende hasta que yo presiona el boton.
Entonces espero y me puedan ayudar he leido algunos temas ya posteados pero no he encontrado uno donde den una solucion clara. Por cierto estoy usando los modulos WRL-10534 y WRL-10532. Ademas anexo el codigo que estoy usando.
Transmisor
Receptor
Entonces espero y me puedan ayudar he leido algunos temas ya posteados pero no he encontrado uno donde den una solucion clara. Por cierto estoy usando los modulos WRL-10534 y WRL-10532. Ademas anexo el codigo que estoy usando.
Transmisor
Código:
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#use fast_io(B)
#bit BT1 = 0x06.0
void main()
{
int valor;
set_tris_b(0b11111111);
for(;;)
{
if(BT1==1)
{
valor=0xA;
PUTC(valor);
}
}
}
Receptor
Código:
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use fast_io(B)
int valor;
#int_RDA
void RDA_isr(void)
{
valor=0x00;
valor=GETC();
}
void main()
{
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
set_tris_b(0b00000000);
output_B(0b00000000);
for (;;)
{
if(valor==1)
{
output_B(0x1);
}
}
}