微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 字符数组在进入GSM模块时发生变更

字符数组在进入GSM模块时发生变更

时间:10-02 整理:3721RD 点击:
代码:
#include <REG51.H>
#include <string.H>
#define uchar unsigned char
#define uint unsigned int

sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
#define FOSC_110592M
//#define FOSC 12000000L

uchar rec_data[50];
uchar rec_num;
static uchar phonenum[50]="454646564";
//uchar sendsms[25];
uchar flag;
void SerialInti()
{
        TMOD=0x20;
#ifdef FOSC_12M                  
        TH1=0xf3;
        TL1=0xf3;       
#else        
        TH1=0xfd;
        TL1=0xfd;
#endif
       
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        EA=1;
        ES=1;
       
       
       
}
void DelaySec(int sec)
{
        uint i , j= 0;
        for(i=0; i<sec; i++)
        {
                for(j=0; j<65535; j++)
                {       
                }
        }
}
void Serial_interrupt() interrupt 4
{
        uchar temp;
        temp=SBUF;
        rec_data[rec_num++]=temp;
        if(rec_num>=50)
                rec_num=0;
        else
                ;
        RI=0;
//¢P16=0;
        //DelaySec(1);
        //P16=1;
       
}
void Uart1Sends(uchar *str)
{
        while(*str!='\0')
        {
                SBUF=*str;
                while(!TI);
                TI=0;
                str++;
        }
}
void Uart1BYTE(uchar temp)
{
                SBUF=temp;
                while(!TI);
                TI=0;
}
uchar hand(uchar *ptr)
{
        if(strstr(rec_data,ptr)!=NULL)
                return 1;
        else
                return 0;
}
void clear_rec_data()
{
        uchar i;
        for(i=0;i<strlen(rec_data);i++)
        {
                rec_data[i]='0';
       
        }
        rec_num=0;

}

void main()
{
        uchar i = 0;
        SerialInti();
        P10=0;
        P11=0;
        P12=0;
        P13=0;
        P14=1;
        P15=1;
        P16=1;
        flag =1;
        //Uart1Sends(num);
        //?GSM?,? AT ?,?
        Uart1Sends("ATI\r\n"); //?
        while(!hand("OK"))
        {
                clear_rec_data();
                i++;
                Uart1Sends("ATI\r\n");//
                DelaySec(1);//?
                if(i>=5)
                {
                        P10=1;
                        break;
                        //return;
                }
                else
                        ;
        }
       
        clear_rec_data();//?GSM?,?
        DelaySec(1);//?
        Uart1Sends("AT+CSQ\r\n");//?
        DelaySec(1);//?
        i=0;
        while(!hand("OK")) //?GSM?OK
        {
                clear_rec_data();
                i++;
                Uart1Sends("AT+CSQ\r\n");//
                DelaySec(1);//?
                if(i>=5)
                {
                        P11=1;// ?eμ???óDμ?μ?êy?Y
                        break;
                        //return;
                }
                else
                        ;
        }
//        P11=0;
        clear_rec_data();
        DelaySec(1);//?
        Uart1Sends("AT+CPIN?\r\n");//?
        DelaySec(1);//?
        i=0;
        while(!hand("READY")) //?SIM?SIM?READY
        {
                clear_rec_data();
                i++;
                Uart1Sends("AT+CPIN?\r\n");//?
                DelaySec(1);//?
                if(i>=5)
                {
                        P12=1;
                        break;
                        //return;
                }
                else
                        ;               
        }
        //P12=0;
        Uart1Sends("AT+COPS?\r\n");//?
        DelaySec(1);//?
        i=0;
        while(!hand("CHINA")) //?CHINA
        {
                clear_rec_data();
                i++;
                Uart1Sends("AT+COPS?\r\n");//?
                DelaySec(1);//?
                if(i>=5)
                {
                        P13=1;
                       
                        break;
                        //return;
                }
                else
                        ;               
        }
//        P13=0;
        clear_rec_data();
        //DelaySec(1);//?
//?
        //Uart1Sends("AT+CMMI=2,1\r\n"); //?
        //DelaySec(1);//?
        //Uart1Sends("AT+CMGF=1\r\n");  //?1
        //DelaySec(1);//?
        /*Uart1Sends("AT+CMGS=\"1252015002940813\"\r\n");  //?
        DelaySec(1);//?
        Uart1Sends("ye");  
        DelaySec(1);//?
        Uart1BYTE(0X1A);
        DelaySec(1);*/
        //DelaySec(1);//?
        //DelaySec(1);//?
//        DelaySec(1);//?
       
//?
        Uart1Sends("AT+CMGD=1\r\n");//?SIM?
        DelaySec(1);//?
        DelaySec(1);
        P14=0;
       
       
               
               
                                //phonenum[11]='\0';
                                clear_rec_data();
                                Uart1Sends("AT+CSCS=\"GSM\"\r\n"); //?
                                DelaySec(1);//?
                                Uart1Sends("AT+CMGF=1\r\n");  //?1
                                DelaySec(1);//?
                               
                                Uart1Sends("AT+CMGS=\"1252015002940813\"\r\n");  //?
                                DelaySec(1);//?
                                Uart1Sends(phonenum);  
                                DelaySec(1);//?
                                Uart1BYTE(0X1A);
                               
                       
                       
                       
                       
               
        }//deng dai zhu ce duanxin
        图片中 454646564 是STC89C51在与GSM模块连接之前,串口接收的数据。而接上GSM模块之后变成了00000000  这是为啥啊?
GSM模块是SIM900A v3.8.2


没人遇到过这个问题吗?  自顶一下

再顶一下。

再顶!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top