#include <18F4550.h>
#fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,PROTECT,NOSTVREN,NOCPB,NOWRT
#use delay(clock=48000000,RESTART_WDT)
#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7, parity=N, bits=8,restart_wdt)
#byte porta = 0xF80 #byte portb = 0xF81 #byte portc = 0xf82 #byte portd = 0xf83 #byte porte = 0xf84
#priority rda
#include <string.h>
#define BUFFER_SIZE 60 // Buffer size you can adjust this size
char buffer[BUFFER_SIZE]; // buffer
char b=0x00; // Last characters recived
int xbuff=0x00;
short sms_mode=false; // It's a flag when is true read sms( lee_sms())
void lee_sms();
void inicbuff(void); // Limpia buffer
void inicmodulo(void);
#int_RDA
RDA_isr()
{if(kbhit()){b=getc(); buffer[xbuff++]=b; } return 0; clear_interrupt(int_rda); }
void main(void)
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
inicbuff();
inicmodulo();
for(;;)
{{ lee_sms(); }}}
void inicmodulo(void)
{
printf("AT\n\r"); delay_ms(500); inicbuff();
printf("ATE0\n\r"); delay_ms(500); inicbuff();
printf("AT+CLIP=1\n\r"); delay_ms(500); inicbuff();
}
void lee_sms(void)
{
char *ptr;
char llamada[]="RING";
//char conf_sms[]="+CLIP: \"1234567891\",129"; // Esto es lo que quiero capturar
ptr=strstr(buffer,llamada);
if(strncmp(ptr,llamada,4)==0) { printf("AT+CHUP"); delay_ms(100); output_high(PIN_A0); delay_ms(6000); inicbuff(); output_low(PIN_A0); }
return;
}
void inicbuff(void)
{ int i; for(i=0;i<buffer_size;i++){ buffer[i]=0x00; restart_wdt(); } xbuff=0x00; return; }