微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于控制sim300模块打电话的程序

关于控制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);       
       
}
这程序已经写的很清楚了,各路高手看看有没什么问题?没问题的话我再去检查硬件的问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top