Conecté el PIC16F877A con un módulo Bluetooth HC-05 usando comunicación en serie y puedo transmitir datos del PIC a mi PC. Conecté el Bluetooth de mi PC al módulo Bluetooth HC-05 y en Tera Term o termite 2.9 veo la salida. Sin embargo, cuando envío datos desde el terminal no recibo nada en el PIC. De acuerdo con mi código, los datos recibidos por PIC se reflejaron y se transmitieron por el mismo.
Mi código PIC
#include <htc.h>
__CONFIG(0x2F0A);
#define _XTAL_FREQ 16000000
#define BAUDRATE 9600
void InitUART(void)
{
BRGH = 1;
SPBRG = ((_XTAL_FREQ/16)/BAUDRATE) - 1;
TRISC6 = 0; // TX Pin
TRISC7 = 1; // RX Pin
TXSTA = 0x24;
RCSTA = 0x90;
//SPBRG = 129;
}
void SendByteSerially(unsigned char Byte) // Writes a character to the serial port
{
while(!TXIF) ; // wait for previous transmission to finish
TXREG = Byte;
}
unsigned char ReceiveByteSerially(void) // Reads a character from the serial port
{
while(!RCIF)
continue; // Wait for transmission to receive
return RCREG;
}
void SendStringSerially(const unsigned char* st)
{
while(*st)
SendByteSerially(*st++);
}
void main (void)
{
unsigned char SerialData;
unsigned int i;
TRISB=0x00;
PORTB=0xff;
InitUART(); // Intialize UART
SendStringSerially("Hello World");
while(1)
{
PORTB=0x00;
for(i=0; i<100; i++)
__delay_ms(10);
PORTB=0x01;
for(i=0; i<100; i++)
__delay_ms(10);
SerialData = ReceiveByteSerially();
SendByteSerially(SerialData);
}
}
En el bucle while
parpadeo un LED durante 1 segundo si se recibe algún dato.