Hola, necesito que alguien me guie para realizar una comunicación entre dos PIC\'s 16f877, lo que pasa es lo siguiente: tengo dos pics uno como transmisor con un HM-T 915 Mhz y otro pic como receptor con un HM-R915 Mhz. Por el momento ya tengo la conexión de cada microcontrolador y su respectivo dispositivo y funciona correctamente, el transmisor mostrando con un lcd los datos del 0 al 100, pero el receptor como lo estoy reflejando con un lcd me muestran datos que no son yo me imagino que eso es a lo que se refieren como datos basura, pero el receptor al menos esta captando; todo esto ya lo conecte a un osciloscopio y lo que me muestra son dos señales con mucho ruido. Los componentes tienen una antena de de conejo que nos encontramos. En el programa estoy ocupando es en C y es el siguiente:
Transmisor
Receptor
Al principio pensé que involucraba la distancia que tenían ambos para enviar datos pero ya los aleje y fue como el receptor comenzó a captar pero datos que no tenían nada que ver. Ojala y alguien me pueda aportar algo por favor se lo agradeceré de corazón ya que es para mi tesis y estoy super atorada en esto. En este proyecto no utilice los codificadores y decodificadores ya que me dijeron que esto lo hace el pic. GRACIAS ...
Transmisor
Código:
#include <16F877a.h>
#fuses XT, NOWDT
#use delay(clock=4000000)
#use rs232(baud=4800, xmit=pin_c6, rcv=pin_c7, bits=8, stop=1)
#define use_portb_lcd TRUE
#include <lcd.c>
int valor;
void main () {
port_b_pullups(TRUE);
lcd_init();//Inicialización del display
while(1){
for (valor=0; valor<=100; valor++){
putc(valor); //...se envía contenido de valor
printf(lcd_putc,"\fEnviado %u", valor); //Se muestra en pantalla información enviada
delay_ms(1000);
}
}
}
Receptor
Código:
//#include \\\\VBOXSVR\\compartida\\MedirDistanciaUltrasonico\\SensorUltrasonicoI2C.h
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock= 4000000)
//#use i2c(master,sda=PIN_C4,scl=PIN_C3,force_hw,fast)
#use RS232(BAUD=4800,XMIT=PIN_C6,RCV=PIN_C7,BITS=8, stop=1)
#include <lcd.c>
#BYTE TRISA=0X85
#BYTE PORTA=0X05
#BYTE TRISB=0X86
#BYTE PORTB=0X06
int valor;
#int_RDA
void RDA_isr(){
valor=GETC();
delay_ms(500);
bit_clear(PORTB,3);
}
void main() {
//int16 valor;
//int i;
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(True){
lcd_gotoxy(5,1);
delay_ms(500);
bit_set(PORTB,3);
printf(lcd_putc,"recibiendo = %u ",valor);
}
}
Última edición por un moderador: