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

📄 sms.lst

📁 这是用W77E58编写的控制GSM模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   SMS                                                                   01/26/2007 17:53:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SMS
OBJECT MODULE PLACED IN sms.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sms.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include <w77e58.h>
   2          #include "global.h"
   3          #include "io.h"
   4          #include "timer.h"
*** WARNING C258 IN LINE 4 OF TIMER.H: 'd': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF TIMER.H: 'd': mspace on parameter ignored
   5          #include "serial.h"
*** WARNING C258 IN LINE 4 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 12 OF SERIAL.H: 'j': mspace on parameter ignored
*** WARNING C258 IN LINE 13 OF SERIAL.H: 'j': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'nNumRead': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'time_out': mspace on parameter ignored
   6          #include "gsm.h"
   7          
   8          
   9          
  10          //用户信息编码方式 
  11          #define GSM_7BIT        0 
  12          #define GSM_8BIT        4 
  13          #define GSM_UCS2        8      
  14          
  15          
  16          // 短消息参数结构,编码/解码共用 
  17          // 其中,字符串以0结尾 
  18          #if 1
  19          typedef struct 
  20          {     
  21                  char SCA[16];       // 短消息服务中心号码(SMSC地址)     
  22                  char TPA[16];       // 目标号码或回复号码(TP-DA或TP-RA) 
  23                  char TP_PID;        // 用户信息协议标识(TP-PID)     
  24                  char TP_DCS;        // 用户信息编码方式(TP-DCS)     
  25                  char TP_SCTS[16];   // 服务时间戳字符串(TP_SCTS), 接收时用到     
  26                  char TP_UD[161];    // 原始用户信息(编码前或解码后的TP-UD)     
  27                  char index;         // 短消息序号,在读取时用到 
  28          } SM_PARAM; 
  29          #else
              typedef struct 
              {     
                      char xdata SCA[16];        //_at_  0x000;          // 短消息服务中心号码(SMSC地址)     
                      char xdata TPA[16];        //_at_  0x016;          // 目标号码或回复号码(TP-DA或TP-RA) 
                      char xdata TP_PID;         //_at_  0x032;          // 用户信息协议标识(TP-PID)     
                      char xdata TP_DCS;         // _at_  0x033;         // 用户信息编码方式(TP-DCS)     
                      char xdata TP_SCTS[16];    // _at_  0x049;         // 服务时间戳字符串(TP_SCTS), 接收时用到     
                      char xdata TP_UD[161];     // _at_  0x064;         // 原始用户信息(编码前或解码后的TP-UD)     
                      char xdata index;          // _at_  0x065;         // 短消息序号,在读取时用到 
              } SM_PARAM; 
              
              
              #endif
  43          
  44          char xdata SCA1[16];        //_at_  0x000;          // 短消息服务中心号码(SMSC地址)     
  45          char xdata TPA1[16];        //_at_  0x016;          // 目标号码或回复号码(TP-DA或TP-RA) 
  46          char xdata TP_PID1;         //_at_  0x032;          // 用户信息协议标识(TP-PID)     
C51 COMPILER V7.50   SMS                                                                   01/26/2007 17:53:09 PAGE 2   

  47          char xdata TP_DCS1;         // _at_  0x033;         // 用户信息编码方式(TP-DCS)     
  48          char xdata TP_SCTS1[16];    // _at_  0x049;         // 服务时间戳字符串(TP_SCTS), 接收时用到     
  49          char xdata TP_UD1[161];     // _at_  0x064;         // 原始用户信息(编码前或解码后的TP-UD)     
  50          char xdata index1;          // _at_  0x065;         // 短消息序号,在读取时用到 
  51          
  52          //char xdata cmd[16]
  53          //char xdata pdu[512];
  54          //char xdata ans[256];       //Read GSM answer buff;   
  55          
  56          
  57          
  58          int  gsmDecode7bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength); 
*** WARNING C258 IN LINE 58 OF SMS.C: 'nSrcLength': mspace on parameter ignored
  59          
  60          
  61          
  62          /*********************************************************************************************************
             -*****
  63          
  64             GSM_IO10: L->H-L,H=40-50 ms,wake up MCU,and gsm set IO11 to low.
  65             GSM_ROW4:              ,Wake up GSM.
  66          
  67          
  68             Host to GSM:   check GSM sleep? if yes,Host pull low GSM_ROW4 to low 50 ms,at once send AT command.
  69          **********************************************************************************************************
             -****/
  70          
  71          
  72          void gsmModule_init(void)
  73          {
  74   1      
  75   1            GSM_PWON=HIGH;
  76   1            delay_ms(5);
  77   1            GSM_PWON=LOW;
  78   1            delay_ms(200);   //Over 120 ms,M32 power on.
  79   1            GSM_PWON=HIGH;
  80   1      }
  81          
  82          
  83          
  84          
  85          /************************************************************************************************
  86          *                   int gsmEncode7bit(const char* pSrc, unsigned char* pDst, int nSrcLength) 
  87          * 7-bit编码 
  88          * pSrc: 源字符串指针 
  89          * pDst: 目标编码串指针 
  90          * nSrcLength: 源字符串长度 
  91          * 返回: 目标编码串长度
  92          ***************************************************************************************/
  93          int gsmEncode7bit(char xdata* pSrc, unsigned char xdata* pDst, int xdata nSrcLength) 
*** WARNING C258 IN LINE 93 OF SMS.C: 'nSrcLength': mspace on parameter ignored
  94          {   
  95   1            int xdata nSrc;               // 源字符串的计数值     
  96   1            int xdata nDst;               // 目标编码串的计数值    
  97   1            int xdata nChar;              // 当前正在处理的组内字符字节的序号,范围是0-7   
  98   1            unsigned char xdata nLeft;    // 上一字节残余的数据    
  99   1            // 计数值初始化     
 100   1            nSrc = 0;     
 101   1            nDst = 0;   
 102   1                
 103   1            // 将源串每8个字节分为一组,压缩成7个字节 
 104   1            // 循环该处理过程,直至源串被处理完  
C51 COMPILER V7.50   SMS                                                                   01/26/2007 17:53:09 PAGE 3   

 105   1            // 如果分组不到8字节,也能正确处理  
 106   1            while(nSrc<nSrcLength) 
 107   1            {        
 108   2               // 取源字符串的计数值的最低3位         
 109   2               nChar = nSrc & 7;           
 110   2               
 111   2                       // 处理源串的每个字节      
 112   2               if(nChar == 0)        
 113   2               {             
 114   3                 // 组内第一个字节,只是保存起来,待处理下一个字节时使用             
 115   3                 nLeft = *pSrc;         
 116   3               }  
 117   2               else  
 118   2               {             
 119   3                 
 120   3                     // 组内其它字节,将其右边部分与残余数据相加,得到一个目标编码字节             
 121   3                 *pDst = (*pSrc << (8-nChar))| nLeft;             
 122   3                 // 将该字节剩下的左边部分,作为残余数据保存起来             
 123   3                 nLeft = *pSrc >> nChar;       
 124   3                 // 修改目标串的指针和计数值 
 125   3                 pDst++;             
 126   3                         nDst++;          
 127   3               }             
 128   2             
 129   2                   
 130   2                       // 修改源串的指针和计数值         
 131   2               pSrc++; 
 132   2                       nSrc++;  
 133   2            }          
 134   1           
 135   1            // 返回目标串长度     
 136   1            return nDst;  
 137   1      }      
 138          
 139          int gsmEncode8bit(char xdata * pSrc, unsigned char xdata* pDst, int xdata nSrcLength)
*** WARNING C258 IN LINE 139 OF SMS.C: 'nSrcLength': mspace on parameter ignored
 140          {
 141   1      
 142   1      
 143   1      
 144   1      }
*** WARNING C280 IN LINE 139 OF SMS.C: 'pSrc': unreferenced local variable
*** WARNING C280 IN LINE 139 OF SMS.C: 'pDst': unreferenced local variable
*** WARNING C280 IN LINE 139 OF SMS.C: 'nSrcLength': unreferenced local variable
 145          
 146          /*****************************************************************************************************
 147          *             int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength) 
 148          *
 149          * 7-bit解码 
 150          * pSrc: 源编码串指针 
 151          * pDst: 目标字符串指针 
 152          * nSrcLength: 源编码串长度 
 153          * 返回: 目标字符串长度 
 154          *******************************************************************************************************/
 155          //int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength) 
 156          int gsmDecode7bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength) 
*** WARNING C258 IN LINE 156 OF SMS.C: 'nSrcLength': mspace on parameter ignored
 157          { 
 158   1           int xdata nSrc;               // 源字符串的计数值     
 159   1           int xdata nDst;               // 目标解码串的计数值     
 160   1           int xdata nByte;              // 当前正在处理的组内字节的序号,范围是0-6     
 161   1           unsigned char xdata nLeft;    // 上一字节残余的数据        
C51 COMPILER V7.50   SMS                                                                   01/26/2007 17:53:09 PAGE 4   

 162   1           
 163   1           // 计数值初始化     
 164   1           nSrc = 0;     
 165   1               nDst = 0;    
 166   1           // 组内字节序号和残余数据初始化     
 167   1           nByte = 0;     
 168   1               nLeft = 0;    
 169   1           // 将源数据每7个字节分为一组,解压缩成8个字节     
 170   1           // 循环该处理过程,直至源数据被处理完     
 171   1           // 如果分组不到7字节,也能正确处理     
 172   1           while(nSrc<nSrcLength)     
 173   1           {         
 174   2             // 将源字节右边部分与残余数据相加,去掉最高位,得到一个目标解码字节    
 175   2             *pDst = ((*pSrc << nByte) | nLeft) & 0x7f;         
 176   2             // 将该字节剩下的左边部分,作为残余数据保存起来         
 177   2              nLeft = *pSrc >> (7-nByte); 
 178   2             // 修改目标串的指针和计数值         
 179   2              pDst++;         
 180   2                      nDst++;   
 181   2             // 修改字节计数值         
 182   2              nByte++;              
 183   2             // 到了一组的最后一个字节         
 184   2             if(nByte == 7)         
 185   2             {             
 186   3                // 额外得到一个目标解码字节             
 187   3                *pDst = nLeft; 
 188   3                // 修改目标串的指针和计数值             
 189   3                pDst++;             
 190   3                        nDst++; 
 191   3                // 组内字节序号和残余数据初始化             
 192   3                nByte = 0;             
 193   3                nLeft = 0;         
 194   3             }              
 195   2             // 修改源串的指针和计数值         
 196   2             pSrc++;         
 197   2             nSrc++;     
 198   2           }          
 199   1           *pDst = 0;          
 200   1           // 返回目标串长度     
 201   1           return nDst; 
 202   1      } 
 203          
 204          //int gsmDecode8bit(const unsigned char* pSrc, char* pDst, int nSrcLength) 
 205          int gsmDecode8bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength) 
*** WARNING C258 IN LINE 205 OF SMS.C: 'nSrcLength': mspace on parameter ignored
 206          {
 207   1      
 208   1      
 209   1      }

⌨️ 快捷键说明

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