PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : برنامه برای دریافت دیتا از sim 908 و درک آن توسط میکرو AVR



hfhossein
24-05-2015, 23:25
سلام به دوستان
من کد زیر و نوشتم ولی جواب نمی ده !!
روال کار به این صورت است که با ارسال هر پیامی با هر محتویاتی به ماژول میکرو portb.3 رو روشن کنه .
هموان طور که می دونیم با ارسال پیام به میکرو پاسخ میکرو به شکل زیر است:
CMTI: "SM",1+
حالا من تو برنامه به میکرو گفتم هر دیتایی غیر از دیتای RECSMS بیاید PORTB.3 سه بار چشمگ بزند و کل اس ام اس ها رو پاک کنه .

با پروتوس تو قسمت ترمینال مجازی جواب گرفتم ولی تو عمل نه و هر بار که اس ام اس می فرستم وارد مد چشمک میشه .
همچنین مطمن هستم که بود ریتم درسته اخه دستوری رو که می کرو واسه پاک کردن اس ام اسا می فرسته ماژول اجرا می کنه .
بود ریتم هم 4800 هستش .
اینم کدی که نوشتم :


#include <mega32.h>
#include <stdio.h>
#include <delay.h>

char RECSMS[]={'+','C','M','T','I',':',' ','"','S','M','"',',','1',0X0D};
char data [5];
char ram,i,j;
bit flag;

void main()
{
DDRB.3=1;
PORTB.3=0;
DDRA=0xff;
PORTA=0x00;

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0X00;
UBRRL=12; //BAUDE RATE 4800
delay_ms(1000);
for(i=0;i<6;i++)
{
PORTB.3=~PORTB.3;
delay_ms(800);
}
PORTA.1=1; //ON MODULE
delay_ms(1500);
PORTA.1=0;
delay_ms(15000);

//printf("AT+CGPSPWR=1");
//putchar(0x0d);
//delay_ms(500);
//printf("AT+CGPSRST=1");
//putchar(0x0d);
//delay_ms(15000);

//#asm ("sei") ;

while(1)

{

while(1)
{
getdata:
ram=getchar();
if(((ram==0X0D)||(ram==0X0A))&&(i==0)) goto getdata; //declare 2 first byte
data[i]=ram;
if(ram==0x0D) break;
i++;

}

printf("i=%i",i);
i=0;
ram=0;
//delay_ms(500);
//printf("data recived !!!");
//putchar('\r');

while((data[i]!=0x0d))
{


if(RECSMS[i]!=data[i])
{
//putchar('\r');
// printf("wrong !!!");
flag=1;
i=0;
goto wrong ;
}
i++;

}






wrong:
if(flag==1)
{
printf("AT+CMGDA=");
putchar('"');
printf("DEL ALL");
putchar('"');
putchar(0X0D);
for(j=0;j<6;j++)
{
PORTB.3=~PORTB.3;
delay_ms(800);
}

}
if(i==13)PORTB.3=1;
i=0;
flag=0;
for(j=0;j<20;j++)
{
data[j]=0;

}