Aca esta el codigo para detectar el ring de una llamada entrante:
#include <16F88.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC //Internal RC Osc
#FUSES PUT //Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#byte PORTA=0X05
#use delay(int=4000000,RESTART_WDT)
#use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
int i=0,j=0;
char Mensaje[60]="",Respuesta[60]="";
char ch;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
set_tris_b(0x04);
set_tris_a(0x20);
output_Low(PIN_B1);
output_Low(PIN_B0);
while(1){
printf("AT+CMGF=1\n");
gets(Respuesta);
if((respuesta[0]=='O')&&(respuesta[1]=='K'))printf("AT+CNMI=2,2,0,0,0\n");
if((respuesta[0]=='O')&&(respuesta[1]=='K'))gets(Respuesta);
if (Respuesta[0]=='R')output_high(PIN_B1);///detecta llamada entrante
//if((respuesta[0]=='+' && respuesta[1]=='C')&&(respuesta[2]=='M')&&(respuesta[3]=='T'))gets(Mensaje);
//if(mensaje[0]=='P')output_high(PIN_B1);
}
}
como vos me lo diste
conecte el pic al adaptador usart y probe y se queda estancado en el OK que no reconoce nunca hace at+cnmi=2,0,0,0