⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.c

📁 基于MSP430单片机的
💻 C
📖 第 1 页 / 共 2 页
字号:
      UBR00 = 0x60;               //波特率为38400
      UBR10 = 0X00;
      UMCTL0 = 0X00;
      Count = 0;
    }
  }

  while(Check_Flag[1] == 1)
  {
    Send_Cmd(Anydata_Cdma_Cmd1);          //修改通信模块波特率为38400
    Delay(5000);
    while(flag == 0);
    Check_Return_OK(2);
    Clear_Rcv();
  }

    UBR00 = 0X60;                  //波特率为38400
    UBR10 = 0X00;
    UMCTL0 = 0X00;

}

//启动SIMEMS GPRS模块
void GPRS_SIMEMS_IGT(void)
{

  P1DIR |= VDD;
  P1OUT |= VDD;

  P1DIR |= IGT;
  P1OUT |= IGT;

  P1DIR |= PD;
  P1OUT |= PD;

  P3DIR |= TX;
  P3OUT |= TX;

  P1OUT &=~ PD;
  Delay(32768);
  while(flag == 0);

  P1OUT &=~ IGT;

  Delay(3300);
  while(flag == 0);

  P1OUT |= IGT;

  Delay(6300);
  while(flag == 0);

  P1OUT &=~ IGT;

  Delay(32768);
  while(flag == 0);

  while(Check_Flag[0] == 1)
  {
    Send_Cmd(Cmd0);
    Delay(5000);
    while(flag == 0);
    Check_Return_OK(1);
    Clear_Rcv();
  }

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

 //以下部分用来点亮GPRS的网络灯,若不返回OK,U2将显示红灯
  Check_Flag[0] = 1;
    while(Check_Flag[0] == 1)
  {
    Send_Cmd(Simems_Gprs_Cmd_Netlignt);
    Delay(5000);
    while(flag == 0);
    Check_Return_OK(1);
    Clear_Rcv();
  }

}

//启动ZTE模块
void ZTE_Module_IGT(void)
{

  P1DIR |= VDD;
  P1OUT |= VDD;

  P1DIR |= ON_OFF;
  P1OUT &=~ ON_OFF;

  Delay(32768);
  while(flag == 0);

  Delay(32768);
  while(flag == 0);

  P1OUT |= ON_OFF;

  Delay(32768);
  while(flag == 0);

  UBR00 = 0X60;                  //波特率为38400
  UBR10 = 0X00;
  UMCTL0 = 0X00;

 while(Check_Flag[0] == 1)
  {
    Send_Cmd(Cmd0);
    Delay(8192);
    while(flag == 0);
    Check_Return_OK(1);
    Clear_Rcv();
  }
}

//判断模块的种类
void Init_Module(void)
{

  P1DIR &=~ (BIT0+BIT1+BIT2+BIT3);
  Module_Address = (P1IN&0x0f);

  switch(Module_Address)
  {
    case simems_gprs: GPRS_SIMEMS_IGT();break;

    case simems_gprs_900: GPRS_SIMEMS_IGT();break;

    case anydata_cdma:CDMA_ANYDATA_IGT();break;

    case ZTE_module:ZTE_Module_IGT();break;

    default:break;
  }

}

//发送SIMEMS指令
void Send_Simems_Gprs_Cmd(void)
{

   while(Check_Flag[1] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd1);
     Delay(5000);
     while(flag == 0);
     Check_Return_CSQ(2);
     Clear_Rcv();
   }

   while(Check_Flag[2] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd2);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(3);
     Clear_Rcv();
   }

   while(Check_Flag[3] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd3);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(4);
     Clear_Rcv();
   }

   while(Check_Flag[4] == 2)
   {
     Send_Cmd(Simems_Gprs_Cmd4);
     Delay(32768);
     while(flag == 0);

     Check_Return_OK(5);
     Clear_Rcv();


     if(Check_Flag[4] == 1)
     {
       Send_Cmd(Simems_Gprs_Cmd5);
       Delay(16384);
       while(flag == 0);
       Check_Return_1(5);
       Clear_Rcv();
     }
   }

   while(flag == 0);
   Delay(32768);

    while(Check_Flag[5] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd6);
     Delay(32768);
     while(flag == 0);
     Check_Return_OK(6);
     Clear_Rcv();
   }

   while(Check_Flag[6] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd7);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(7);
     Clear_Rcv();
   }

   while(Check_Flag[7] == 1)
   {
     Send_Cmd(Simems_Gprs_Cmd8);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(8);
     Clear_Rcv();
   }

   Delay(32768);
   while(flag == 0);

   if(Check_Flag[7] == 0)
   {
     P1OUT &=~ VDD;
     Delay(32768);
     while(flag == 0);
     GPRS_SIMEMS_IGT();
   }

}

//发送ANYDATA指令
void Send_Anydata_Cdma_Cmd(void)
{

   while(Check_Flag[2] == 1)
   {
     Send_Cmd(Anydata_Cdma_Cmd2);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(3);
     Clear_Rcv();
   }

   while(Check_Flag[3] == 1)
   {
     Send_Cmd(Anydata_Cdma_Cmd3);
     Delay(2000);
     while(flag == 0);
     Check_Return_CSQ(4);
     Clear_Rcv();
   }

   while(Check_Flag[4] == 2)
   {
     Send_Cmd(Anydata_Cdma_Cmd4);
     Delay(2000);
     while(flag == 0);
     Check_Return_OK(5);
     Clear_Rcv();
   }

   while(Check_Flag[5] == 1)
   {
     Send_Cmd(Anydata_Cdma_Cmd5);
     Delay(32768);
     while(flag == 0);
     Check_Return_OK(6);
     Clear_Rcv();
   }

   while(Check_Flag[6] == 1)
   {
     Send_Cmd(Anydata_Cdma_Cmd6);
     Delay(16384);
     while(flag == 0);
     Check_Return_GMR(7);
     Clear_Rcv();
   }

   Delay(32768);
   while(flag == 0);

   if(Check_Flag[6] == 0)
   {
     P1OUT &=~ VDD;
     Delay(32768);
     while(flag == 0);
     CDMA_ANYDATA_IGT();
   }

}

//发送ZTE指令
void Send_ZTE_module_Cmd(void)
{

  while(Check_Flag[1] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd1);
     Delay(5000);
     while(flag == 0);
     Check_Return_CSQ(2);
     Clear_Rcv();
   }

   while(Check_Flag[2] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd2);
     Delay(16384);
     while(flag == 0);
     Check_Return_ZVERS(3);
     Clear_Rcv();
   }

   while(Check_Flag[3] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd3);
     Delay(32768);
     while(flag == 0);
     Check_Return_OK(4);
     Clear_Rcv();
   }

   while(Check_Flag[4] == 2)
   {
     Send_Cmd(ZTE_Module_Cmd4);
     Delay(32768);
     while(flag == 0);

     Check_Return_OK(5);
     Clear_Rcv();

     if(Check_Flag[4] == 1)
     {
       Send_Cmd(ZTE_Module_Cmd5);
       Delay(16384);
       while(flag == 0);
       Check_Return_1(5);
       Clear_Rcv();
     }
   }

   while(flag == 0);
   Delay(32768);

   while(Check_Flag[5] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd6);
     Delay(32768);
     while(flag == 0);
     Delay(32768);
     while(flag == 0);
     Check_Return_OK(6);
     Clear_Rcv();
   }

   while(Check_Flag[6] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd7);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(7);
     Clear_Rcv();
   }

   while(Check_Flag[7] == 1)
   {
     Send_Cmd(ZTE_Module_Cmd8);
     Delay(5000);
     while(flag == 0);
     Check_Return_OK(8);
     Clear_Rcv();
   }

   Delay(32768);
   while(flag == 0);

   if(Check_Flag[7] == 0)
   {
     P1OUT &=~ VDD;
     Delay(32768);
     while(flag == 0);
     ZTE_Module_IGT();
   }

}

//主程序
void main(void)
{

  WDTCTL = WDTPW + WDTHOLD;
  XT_Init();
  TimerA_Init();
  P4DIR = 0Xff;
  P5DIR = 0Xff;
  P4OUT = 0X00;
  P5OUT = 0X00;
  _EINT();
  Uart0_Init();
  Init_Module();

  while(1)
  {
    Module_Address = (P1IN&0x0f);
    switch(Module_Address)
    {
      case simems_gprs:Send_Simems_Gprs_Cmd();break;
      case simems_gprs_900:Send_Simems_Gprs_Cmd();break;
      case anydata_cdma:Send_Anydata_Cdma_Cmd();break;
      case ZTE_module:Send_ZTE_module_Cmd();break;
      default:break;
    }
  }

}

//精确延时TIMERA中断延时服务程序
#pragma vector = TIMERA0_VECTOR
__interrupt void timera (void)
{

  flag = 1;
  CCTL0 &=~ CCIE;

}

//COM0口接收数据中断服务程序
#pragma vector = USART0RX_VECTOR
__interrupt void uart_rx (void)
{

  RCV_Byte[j] = RXBUF0;
  j++;

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -