[]FET-430&SIM508 研究日志 11.3.31
3月31日
今天,430板终于可控制SIM508拨打电话了。原因是第一,将两头为公的串口线的2、3线交叉,第二,SIM508板得频率设为115200,(之前为自适应),第三,仿真器的驱动装好了。第四、仿真器的设置必须设置正确。
#include "msp430x16x.h"
//#include "const.h"
void Init_Clock()
{
unsigned char i;
BCSCTL1=0x00;//XT2--ON
do {
IFG1&=~OFIFG;
for(i=0;i<20;i++);
}while((IFG1&OFIFG)==OFIFG);
BCSCTL2=SELM1+SELS;//XT2--SMCLK,XT2--MCLK
}
void Init_Port() {
P5DIR=BIT5; //配置LED
P5OUT=BIT5;
P1DIR=BIT0+BIT1;
P1OUT=BIT0;
P1OUT&=~BIT1;
}
void Init_Urat1() {
U1BR0=0x22;//4M--SMCLK 波特率115200
U1BR1=0x00;
U1MCTL=0xed;
U1CTL=CHAR;//数据宽度8bit
U1TCTL=SSEL1;
ME2=URXE1+UTXE1;//使能接收与发送
P3SEL=BIT6+BIT7;//使能TXD与RXD引脚
P3DIR=BIT6;//TXD输出
}
void Delay_s(unsigned long nValue)//以妙为单位,4MHZ为主时钟,8*(1/4000000)
{
int nCount;
int i;
int j;
nCount=1500;
for(i=nValue;i>0;i--)
{
for(j=nCount;j>0;i--);
}
}
//发送一个字节。
void SendData(unsigned char val)
{
U1TXBUF=val;//数据进入发送缓冲。
//UTXIFG1发送中断标志位。
while(!(IFG2&UTXIFG1));//等到发送完毕
P1OUT^=0x03;//复位清楚发送完成标志位。
}
//发送一个字符串。
void SendString(unsigned char *Str)
{
while(*Str!=' ')
SendData(*(Str++));
}
char Get_Char() {
while(!(IFG2&URXIFG1));//等待数据接收
return U1RXBUF;
}
void Init_System() {
WDTCTL=WDTPW+WDTHOLD;//关闭WDT
Init_Clock();//初始化系统时钟
Init_Port();//初始化端口
Init_Urat1();//初始化串口
}
//建立GPRS链接。
void Conect()
{
int CONNECTOK;
while(1)
{
SendString("AT+CGDCONT=1,"IP","CMNET" ");
if(Get_Char()="OK")
break;
}
while(1)
{
SendString("AT+CGATT?");
if(Get_Char()="+CGATT: 1")
break;
}
while(1)
{
SendString("AT+CGACT=1,1");
if(Get_Char()="+CGATT: 1")
break;
}
while(1)
SendString("AT+CIPSTART="TCP","202.???.??.??","2020" ");
if(Get_Char()="CONNECT OK")
CONNECTOK=1
return CONNECTOK
break;
}
while(1)
SendString("AT+CIPSEND");
if(Get_Char()=">")
SendString(" success!!");
break;
}
}
void main()
{
Init_System();
while(1)
{
SendString("ATD15881077392;n");//将接收数据发送回去k
}
}