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;
}
在线等啊在线等~~~请各位高手帮帮忙吧~~~ 本帖最后由 joeleowang 于 2012-5-28 00:39 编辑
MARK^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
问题解决了没,我最近也在搞MC55GPRS通信,我也是用的149,请问一下,您MCU和通信模块硬件是如何连接的啊?
页:
[1]