#include <16F877A.h>
#FUSES HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=20M)
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)
#USE standard_io(b)
char dato_recibido[20]; // Buffer de recepción
int con_recepcion=0;
int bandera=0;
void decodificar()
{
if(dato_recibido[1] == 'a' && dato_recibido[2] == 't')
{
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
bandera=1; //Aqui el problema
}
}
#int_rda //Vector de interrupcion de la recepcion de datos
void interrupcion_rx() //por el usart
{
output_high(pin_a1);
char respaldo;
respaldo = getc();
if(respaldo == 'D')
{con_recepcion = 0;
}
dato_recibido[con_recepcion] = respaldo;
if(respaldo == 'o')
{decodificar();}
con_recepcion++;
if(con_recepcion == 19)
{con_recepcion = 0;}
}
///////////////////////////////////////////////////////////////////////////////
void main()
{
enable_interrupts(global);
enable_interrupts(int_rda);
set_tris_a (0x00) ;
delay_ms(10000);
printf("AT+CMGF=1\r\n"); //Habita el modo texto de los sms
delay_ms(1500);
printf("AT+CNMI=2,2,0,0,0\r\n");//los sms se envían directamente al puerto serie
delay_ms(1500);
printf("AT+CMGDA=DEL ALL\r\n"); //BORRAMOS SMS
delay_ms(1500);
output_low(pin_a1);
while(true)
{
if (bandera==1){
printf("AT+CMGF=1\r");
delay_ms(500);
printf("AT+CMGS=\"Numero de telefono\"\r\n");
printf("Dato recibido");
delay_ms(500);
putchar(0x1a);
}
else{
output_high(pin_a2); //Indicador que esta esperando SMS
delay_ms(1000);
output_low(pin_a2);
delay_ms(1000);
output_low(pin_a3);
output_low(pin_a1);
bandera=0;
}
}
}
Nuestro problema es que al enviar el mensaje con la palabra Dato se me prende un led del pin a3 pero queremos que el modulo me responda diciendo que es correcto el mensaje recibido pero cuando le declaro una variable como bandera justo despues de escribir que se prenda el a3 para que luego en while(true) me mande el mensaje evaluado en una condicion if no c por que no me funciona no c si si el problema es mandar mensajes como respuesta mientras estoy usando interrupciones por puerto serial si puede usar el puerto para mandar el mensaje mientras esta la interrupción o cual seria !!
estoy usando CCS COMPILER
y programo en C muchas gracias