关于控制sim300模块打电话的程序
时间:10-02
整理:3721RD
点击:
#include <msp430x14x.h>
//===============================串口初始化=====================================
void init_uart0(void)
{
//====================串口工作模式设置========================================
U0CTL=0x00; // U0CTL包含串口0通信协议、通信模式、校验位等设置,允许UART0
U0CTL +=CHAR; //(CHAR=0x10)当CHAR=0时位7位数据,当 CHAR=1时为8位数据
//不需要校验,数据位为8位,无反馈,异步UART通信,UART被允许
//====================串口发送操作设置========================================
U0TCTL=0x00; //U0TCTL包含串口0发送功能操作
U0TCTL +=SSEL0; //波特率发生器选择ACLK
//#define SSEL1 (0x20) #define SSEL0 (0x10)
//====================串口拨特率设置9600====================================
//===================拨特率计算公式:拨特率=BRCLK/(UBR+(M7+M6+。+M0)/8)
UBR0_0=0x03; //UBR0_0为串口0波特率整数部分低地址
UBR1_0=0x00; //UBR1_0为串口0波特率整数部分高地址
UMCTL_0=0x4A; //UBR1_0为串口0波特率小数部分高地址
//===================串口收发使能控制=========================================
ME1 |= UTXE0; //串口0发送功能使能
ME1 |= URXE0; //串口0接收功能使能
//===================串口中断使能控制=========================================
// IE1 |= URXIE0; //串口0接收中断使能
// IE1 |= UTXIE0; //串口0发送中断使能
//===================端口第二功能使能=========================================
P3SEL |=BIT4; //设置P3。4为UART0 的TXD
P3SEL |=BIT5; //设置P3。5为UART0 的RXD
P3DIR |=BIT4; //设置P3。4为输出
}
//系统初始化
//******************************************************************************
void InitSys()
{
unsigned int iq0;
_DINT();
BCSCTL1 &=~XT2OFF;
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振
BCSCTL2 =SELM1+SELS; // MCLK,SMCLK时钟为XT2
}
//==============================================================================
//========================延时约5ms=============================================
void ms_delay(void)
{
unsigned int i=4000;
while (i != 0)
{
i--;
}
}
void main()
{
_EINT();//打开中断
init_uart0();//串口初始化
void InitSys();//系统初始化
int i;
char Data[5]="ati\r";
for(i=0;i<5;i++)
{
TXBUF0=Data[i]; //向缓冲器送入待发送数据
while ((IFG1 & UTXIFG0) == 0); // 判断:发送是否完成
IFG1 &= ~(UTXIFG0);
}
ms_delay();
char Data1[17]="ATD10086;\r";
for (i=0;i<11;i++)
{
TXBUF0=Data[i]; //向缓冲器送入待发送数据
while ((IFG1 & UTXIFG0) == 0); // 判断:发送是否完成
IFG1 &= ~(UTXIFG0);
}
ms_delay();//等待60秒
while(1);
}
这程序已经写的很清楚了,各路高手看看有没什么问题?没问题的话我再去检查硬件的问题
//===============================串口初始化=====================================
void init_uart0(void)
{
//====================串口工作模式设置========================================
U0CTL=0x00; // U0CTL包含串口0通信协议、通信模式、校验位等设置,允许UART0
U0CTL +=CHAR; //(CHAR=0x10)当CHAR=0时位7位数据,当 CHAR=1时为8位数据
//不需要校验,数据位为8位,无反馈,异步UART通信,UART被允许
//====================串口发送操作设置========================================
U0TCTL=0x00; //U0TCTL包含串口0发送功能操作
U0TCTL +=SSEL0; //波特率发生器选择ACLK
//#define SSEL1 (0x20) #define SSEL0 (0x10)
//====================串口拨特率设置9600====================================
//===================拨特率计算公式:拨特率=BRCLK/(UBR+(M7+M6+。+M0)/8)
UBR0_0=0x03; //UBR0_0为串口0波特率整数部分低地址
UBR1_0=0x00; //UBR1_0为串口0波特率整数部分高地址
UMCTL_0=0x4A; //UBR1_0为串口0波特率小数部分高地址
//===================串口收发使能控制=========================================
ME1 |= UTXE0; //串口0发送功能使能
ME1 |= URXE0; //串口0接收功能使能
//===================串口中断使能控制=========================================
// IE1 |= URXIE0; //串口0接收中断使能
// IE1 |= UTXIE0; //串口0发送中断使能
//===================端口第二功能使能=========================================
P3SEL |=BIT4; //设置P3。4为UART0 的TXD
P3SEL |=BIT5; //设置P3。5为UART0 的RXD
P3DIR |=BIT4; //设置P3。4为输出
}
//系统初始化
//******************************************************************************
void InitSys()
{
unsigned int iq0;
_DINT();
BCSCTL1 &=~XT2OFF;
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振
BCSCTL2 =SELM1+SELS; // MCLK,SMCLK时钟为XT2
}
//==============================================================================
//========================延时约5ms=============================================
void ms_delay(void)
{
unsigned int i=4000;
while (i != 0)
{
i--;
}
}
void main()
{
_EINT();//打开中断
init_uart0();//串口初始化
void InitSys();//系统初始化
int i;
char Data[5]="ati\r";
for(i=0;i<5;i++)
{
TXBUF0=Data[i]; //向缓冲器送入待发送数据
while ((IFG1 & UTXIFG0) == 0); // 判断:发送是否完成
IFG1 &= ~(UTXIFG0);
}
ms_delay();
char Data1[17]="ATD10086;\r";
for (i=0;i<11;i++)
{
TXBUF0=Data[i]; //向缓冲器送入待发送数据
while ((IFG1 & UTXIFG0) == 0); // 判断:发送是否完成
IFG1 &= ~(UTXIFG0);
}
ms_delay();//等待60秒
while(1);
}
这程序已经写的很清楚了,各路高手看看有没什么问题?没问题的话我再去检查硬件的问题