#include "string.h"
#FUSES NOMCLR
#use rs232(baud=38400, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)
#define restablecer input(pin_d0)
#define maestro input(pin_d1)
#define esclavo input(pin_d2)
#define led pin_d3
char recibido[20];
void recibe()
{
memset(recibido, 0, sizeof(recibido)); //limpia los registros de la varible
while(true)
{
if (kbhit())//espera el primer caracter
{
int8 i=0;
while(true)
{
recibido[i]=getc();//RECIBE EL CARACTER
if(recibido[i]=='\n')//busca el salto de linea \r\n
{
return;
}
i++;
}
}
}
}
void modo_restablecer()
{
signed int8 result=1;
int8 OK[10] = "OK\r\n";
printf("AT+ORGL\r\n");//restablece de fabrica
recibe();
result = strcmp(recibido, OK);//compara, si son iguales (0), no (+-1)
if (!result==0)
{
output_bit(led, 1);
return;
}
return;
}
void modo_maestro()
{
signed int8 result=1;
int8 OK[10] = "OK\r\n";
printf("AT+NAME=PICMAESTRO\r\n");//Nombre del bluetooth
recibe();
result = strcmp(recibido, OK);//compara, si son iguales (0), no (+-1)
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+PSWD=\"1234\"\r\n");//Pin del bluetooth
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+UART=38400,0,0\r\n");//Configura la velocidad
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+CMODE=0\r\n");//Configura el tipo de conexión
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+BIND=1234,56,abcdef\r\n");//Recibe la direccion del esclavo
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+ROLE=1\r\n");//Configura como maestro
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+RESET\r\n");//Resetea al modo establecido (esclavo/maestro)
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
return;
}
void modo_esclavo()
{
signed int8 result=1;
int8 OK[10] = "OK\r\n";
printf("AT+NAME=PICESCLAVO\r\n");//Nombre del bluetooth
recibe();
result = strcmp(recibido, OK);//compara, si son iguales (0), no (+-1)
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+PSWD=\"1234\"\r\n");//Pin del bluetooth
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+UART=38400,0,0\r\n");//Configura la velocidad
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+BIND=1234,56,ABCDEF\r\n");//Configura la direccion
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+ROLE=0\r\n");//Configura como esclavo
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
printf("AT+RESET\r\n");//Resetea al modo establecido (esclavo/maestro)
recibe();
result = strcmp(recibido, OK);
if (!result==0)
{
output_bit(led, 1);
return;
}
return;
}
void main()
{
while(TRUE)
{
while (restablecer)
{
delay_ms(10);
if (!restablecer)
{
modo_restablecer();
}
}
while (maestro)
{
delay_ms(10);
if (!maestro)
{
modo_maestro();
}
}
while (esclavo)
{
delay_ms(10);
if (!esclavo)
{
modo_esclavo();
}
}
}
}