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

📄 gsm-

📁 GSM室温监控系统
💻
字号:
C51 COMPILER V7.06   TC35                                                                  06/13/2010 15:40:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TC35
OBJECT MODULE PLACED IN TC35.OBJ
COMPILER INVOKED BY: E:\WorkSpace\Keil\C51\BIN\C51.EXE TC35.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "common.h"
   2          
   3          char RxBuf[RxBuf_N]={0};                                        //定义串口接收数据缓冲区
   4          uchar RxPoint;                                                          //Rx缓冲区指针
   5          bit flag=0;                                                                     //用来等待发送信息结束后,接收TC35响应的标志
   6          uchar PhoneNum[15]="+8613760602242";            //手机号码
   7          const uchar *MsContent="I Love You !";          //短信内容
   8          
   9          
  10          //查找字符串,在s中查找t
  11          //返 回 值: s_temp(t在s中的位置)成功 0失败
  12          char *LookFor_Str(uchar *s, uchar *t)
  13          {
  14   1              uchar    *s_temp;       
  15   1              uchar    *m_temp;       
  16   1              uchar    *t_temp;     
  17   1              if (s == 0 ||t == 0) return 0;
  18   1              for (s_temp = s; *s_temp != '\0'; s_temp++)
  19   1              {
  20   2                      m_temp = s_temp;
  21   2                      for (t_temp = t; *t_temp == *m_temp; t_temp++, m_temp++);
  22   2                      if (*t_temp == '\0') return s_temp;
  23   2              }
  24   1              return 0;
  25   1      }
  26          
  27          
  28          //发送"AT"联机指令,测试是否连接正确
  29          void Send_AT(void)
  30          {
  31   1              uchar *p;
  32   1              uchar i=10;
  33   1              while(i--)                                                              //测试10次,在某一次成功就退出
  34   1              {
  35   2                      RxPoint=0;                                                      //buffer指针清0
  36   2                      SendString("AT\r");                                     //发送AT回车
  37   2              ES=1;                                                           //必须中断 串口中断应许 等待应答"OK"
  38   2              //delay_ms(100);                                                //等待接受数据完成
  39   2                      while(flag==0);
  40   2                      flag=0;
  41   2                      delay_ms(300);
  42   2              p=LookFor_Str(RxBuf,"OK");              //接收到的数据存在RsBuf
  43   2              if(p!=0)                                                        //接收到"OK"
  44   2                      {
  45   3                              PutStr(0,0,"GSM 模块正常  ");
  46   3                              delay_ms(1000);
  47   3                              break;
  48   3                      }
  49   2                      PutStr(0,0,"没检测到GSM 模块");
  50   2                      delay_ms(500);
  51   2              }
  52   1      }
  53          
  54          //设置短信模式 1:text模式 0:PDU模式
  55          //串口发送数组命令到TC35,AT+CMGF=1
C51 COMPILER V7.06   TC35                                                                  06/13/2010 15:40:37 PAGE 2   

  56          void Set_Mode(uchar mode)
  57          {
  58   1              uchar *p,i=10;
  59   1              while(i--)                                                              //测试10次,在某一次成功就退出
  60   1              {
  61   2                      RxPoint=0;                                                      //buffer指针清0
  62   2                      if(mode) SendString("AT+CMGF=1\r");     //设置短消息模式  1 TEXT
  63   2                      else     SendString("AT+CMGF=0\r");     //设置短消息模式  PDU模式               
  64   2              ES=1;                                                           //必须中断 串口中断应许 等待应答"OK" 
  65   2              //delay_ms(300);                                                //等待接受数据完成
  66   2                      while(flag==0);
  67   2                      flag=0;
  68   2                      delay_ms(300);
  69   2              p=LookFor_Str(RxBuf,"OK");              //接收到的数据存在RsBuf
  70   2              if(p!=0)                                                        //接收到"OK"
  71   2                      {
  72   3                              PutStr(1,0,"短信模式:text");
  73   3                              delay_ms(1000);
  74   3                              break;
  75   3                      }
  76   2                      PutStr(1,0,"短信模式设置失败");
  77   2                      delay_ms(500);
  78   2              }
  79   1      }
  80          
  81          //发送号码
  82          void Send_PhoneNum(uchar *str)  
  83          {
  84   1              uchar i=0;
  85   1              while(*str)                                                             
  86   1              {
  87   2                      SendASC(*str) ;
  88   2                      str++;
  89   2                      i++;
  90   2                      if(i==14) break;                                        //只发送14个
  91   2              }
  92   1      }
  93          
  94          //发送TEXT短信 AT+CMGS="+8613760602242"
  95          //*dialnum 目的号码    *text短信内容
  96          //返回:1 发送成功  0 发送失败                
  97          uchar TransmitText(uchar *dialnum,uchar *text)  
  98          {
  99   1              uchar i=10,j=10;
 100   1              uchar *p;
 101   1              while(i--)
 102   1              {
 103   2                      RxPoint=0;                                                              //buffer指针清0
 104   2                      SendString("AT+CMGS=");                                 //信息发送指令 AT+CMGS="+8613760602242"
 105   2                      SendASC('"');
 106   2                      Send_PhoneNum(dialnum);                                 //号码
 107   2                      SendASC('"');
 108   2                      SendASC('\r');                                                  //回车
 109   2                      while(flag==0);
 110   2                      flag=0;
 111   2                      delay_ms(300);
 112   2                      p=LookFor_Str(RxBuf,">");                               //">"
 113   2                      if(p!=0)                                                                        //如果接受到 >  发送text
 114   2                      {       
 115   3                              RxPoint=0;                                                              //清空接收缓冲区
 116   3                              SendString(text);                                               //发送短信内容
 117   3                              SendString("\x1a\r");                                   //'\x1a'结束符(相当CTRL+Z) '\r'回车符                                   
C51 COMPILER V7.06   TC35                                                                  06/13/2010 15:40:37 PAGE 3   

 118   3                              while(flag==0);
 119   3                              flag=0;
 120   3                              delay_ms(5000);                                         //这里要延时足够长时间,否则会读取错误
 121   3                              p=LookFor_Str(RxBuf,"OK");                      //查找OK
 122   3                              if(p!=0)                                                        //发送成功
 123   3                              {
 124   4                                      PutStr(2,0,"To: ");
 125   4                                      PutStr(2,2,dialnum+3);
 126   4                                      PutStr(3,0,"发送成功 ^_^");
 127   4                                      return 1;
 128   4                              }
 129   3                              else 
 130   3                              {
 131   4                                      PutStr(2,0,"发送失败");
 132   4                                      delay_ms(1000);
 133   4                                      PutStr(2,0,"正在重发");
 134   4                              }
 135   3                      }
 136   2              }
 137   1              PutStr(2,0,"多次重发失败");
 138   1              return 0;
 139   1      }
 140          
 141          //完整的短信发送函数    
 142          //dialnum:手机号码 text:短信内容
 143          void Send_Message(uchar *dialnum,uchar *text)
 144          {
 145   1              Send_AT();                                                      //发送AT
 146   1              Set_Mode(1);                                            //设置短信模式:text
 147   1              TransmitText(dialnum,text);     //设置
 148   1      }
 149          
 150          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    651    ----
   CONSTANT SIZE    =    168    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44      39
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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