|
最近在调试msp430f149控制sim300 gprs模块发短信,调了很长时间了,总是有问题。发送了几次,手机能接收到,但是接收到的是□@123,后来就再没发送成功过,不知道什么问题,请各位高手帮忙看看,很着急,谢谢了!!程序如下:
#include <msp430x14x.h>
#include "cry1602.h"
#define uchar unsigned char
#define uint unsigned 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[120];
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]);
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[k]!='O')&&(rec[i]=='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[k]=='>'))
{
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[i]='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[m++]=Get1Char();
if(m==120)
m=0;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|