Chào mọi người. Mình đang làm về đề tài sim900. Khi có SMS đến thì sim900 trả về chuỗi +CMTI. Mình đã kiểm tra nó trong ngắt nhận. Song khi test trên mạch Pic, thì chỉ gửi được SMS đầu là nó báo có sms. Sau đó, gửi tin thì nó ko báo gì nữa. Dù mình đã reset tất cả rồi nhưng vẫn không được. Mọi người xem tại sao giúp mình với.
Code của mình đây. Thanks mọi người nhé.
Code của mình đây. Thanks mọi người nhé.
Code:
#include <16f877a.h> #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include <lcd_lib_4bit.c> char sms[80]; char c=0x00,c1=0x00,c2=0x00,c3=0x00,c4=0x00,c5=0x00; int8 new_sms=0,i=0,j=0; #INT_RDA void ngat() { c=getc(); if(c=='+') c1=c; if(c=='C') c2=c; if(c=='M') c3=c; if(c=='T') c4=c; if(c=='I') c5=c; if(c1=='+' && c2=='C' && c3=='M' && c4=='T' && c5=='I') new_sms=1; sms[i]=c; i++; } void delete_sms() { printf("AT+CMGD=1,4");//delete all message putc(13);delay_ms(500); } void reset() { i=0; new_sms=0; c=0x00,c1=0x00,c2=0x00,c3=0x00,c4=0x00,c5=0x00; for(j=0;j<90;j++) //Xoa sms[] {sms[j]=0;} } void main() { enable_interrupts(global); enable_interrupts(int_rda); lcd_init();printf(lcd_putchar,"Seting....");delay_ms(2000);lcd_putcmd(0x01); reset(); delete_sms(); reset(); printf(lcd_putchar,"Start");delay_ms(3000);lcd_putcmd(0x01); while(true) { if(new_sms==1) { reset(); printf(lcd_putchar,"New message");delay_ms(3000);lcd_putcmd(0x01); // printf("at+cmgs=\"0922609003\"\r\n"); // delay_ms(500);printf("Da nhan duoc sms");delay_ms(500);putc(26);delay_ms(500); reset(); } } }
Comment