Qingqingxu 发表于 2012-4-8 13:58:43

msp430f149控制sim300 gprs模块发短信问题

       最近在调试msp430f149控制sim300 gprs模块发短信,调了很长时间了,总是有问题。发送了几次,手机能接收到,但是接收到的是□@123,后来就再没发送成功过,不知道什么问题,请各位高手帮忙看看,很着急,谢谢了!!程序如下:
#include<msp430x14x.h>
#include"cry1602.h"

#define uchar unsigned char
#define uintunsigned int


uchar AT_F[]={"AT&F\r\n"};      //模块初始化
uchar AT_AT[]={"AT\r\n"};                     
uchar AT_ATE[]={"ATE0\r\n"};   
uchar AT_Save[]={"AT&W\r\n"};   
uchar AT_CMGF[]={"AT+CMGF=1\r\n"};   //指定信息的输入输出格式为文本格式
uchar AT_CSCS[]={"AT+CSCS=\"GSM\"\r\n"};   
uchar AT_CSCA[]={"AT+CSCA=\"+8613800290500\"\r\n"};
uchar AT_CSMP[]={"AT+CSMP=17,167,0,241\r\n"};   
uchar AT_CMGS[]={"AT+CMGS=\"133*****360\"\r\n"};   
uchar AT_DQML[]={"AT+CMGR=1\r\n"};                   
uchar AT_SCML[]={"AT+CMGD=1\r\n"};                   
uchar AT_ATF[]={"AT&F\r\n"};                      

uchar send_text[] = {"123\r\n"};            

uchar rec;
uchar m=0;
uchar n=0;   

void delay1(uint a);
void SEND_GPRS_CMD(uchar a,uchar b[]);
int REC_CMD0(void);
int REC_CMD1(void);
void CONNECT_GPRS(void);
void Arry_Init(uchar *str);

void delay1(uint a)
{
   uchar j;
   while(a--)
   {
   for(j=250;j>0;j--){}
   }
}

void SEND_GPRS_CMD(uchar a,uchar b[])          //发送命令子程序
{
   uchar co;
   co=0;
   do
   {
   Send1Char(b);
   co++;
   if(co==a) break;
   }while(1);
}

int REC_CMD0(void)                        //接受"OK"子程序
{
uint j,k;
j=0;
         for(k=0;k<120;k++)
      {
          if((rec!='O')&&(rec=='K'))
         {
             j=1;
             Arry_Init(rec);
             m=0;
             break;
         }
      }
return(j);
}

int REC_CMD1(void)                        //接受">"子程序
{
uint j,k;
j=0;

       for(k=0;k<120;k++)
      {
          if((rec=='>'))
         {
             j=1;
             m=0;
             Arry_Init(rec);
             break;
         }
      }
return(j);
}


void CONNECT_GPRS(void)         //*************GPRS连接*****************8
{
SEND_GPRS_CMD(sizeof(AT_F),AT_F);          //发送AT&F
do
{
    if(REC_CMD0()) break;
}while(1);
SEND_GPRS_CMD(sizeof(AT_AT),AT_AT);          //发送AT
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'2');
SEND_GPRS_CMD(sizeof(AT_ATE),AT_ATE);   //发送AT+ATE0
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'3');
SEND_GPRS_CMD(sizeof(AT_CMGF),AT_CMGF);//发送AT+CMGF
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'4');
SEND_GPRS_CMD(sizeof(AT_CSCS),AT_CSCS);      //发送AT+CSCS
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'5');
SEND_GPRS_CMD(sizeof(AT_CSCA),AT_CSCA);//发送AT+CSCA
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'6');
SEND_GPRS_CMD(sizeof(AT_CSMP),AT_CSMP);//发送AT+CSMP
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'7');
SEND_GPRS_CMD(sizeof(AT_Save),AT_Save);//发送AT&W
do
{
    if(REC_CMD0()) break;
}while(1);
//Disp1Char(1,0,'8');
SEND_GPRS_CMD(sizeof(AT_CMGS),AT_CMGS);//发送AT+CMGS
do
{
    if(REC_CMD1()) break;
}while(1);
//Disp1Char(1,0,'9');
SEND_GPRS_CMD(sizeof(send_text),send_text);
/*Disp1Char(1,0,'1');
Disp1Char(2,0,'0');*/

while((IFG1 & UTXIFG0)==0)
    TXBUF0=0x1A;
Disp1Char(1,0,'1');
Disp1Char(2,0,'1');
}

//初始化数组
void Arry_Init(uchar *str)
{

    uint i;
    for(i=0;i<120;i++)
    {
      str='0';
    }

}

void main(void)
{
WDTCTL=WDTPW+WDTHOLD;

LcdReset();
LcdWriteCommand(0x01, 1);
InitUART();            //初始化串口
Arry_Init(rec);
_EINT();

    CONNECT_GPRS();
    /*_NOP();
    _NOP();*/
}

#pragma vector=UART0RX_VECTOR                        //串口接收中断子函数
__interrupt void usart0_rx(void)
{
    rec=Get1Char();
    if(m==120)
      m=0;
}

Qingqingxu 发表于 2012-4-8 15:42:41

在线等啊在线等~~~请各位高手帮帮忙吧~~~

joeleowang 发表于 2012-5-28 00:36:58

本帖最后由 joeleowang 于 2012-5-28 00:39 编辑

MARK^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
问题解决了没,我最近也在搞MC55GPRS通信,我也是用的149,请问一下,您MCU和通信模块硬件是如何连接的啊?
页: [1]
查看完整版本: msp430f149控制sim300 gprs模块发短信问题