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

📄 sms.lst

📁 此例子是用C8051F020开发西门子短信模块MC35I的资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE SMS
OBJECT MODULE PLACED IN sms.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE sms.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-----------------------------------*/
   2          #define SMS_GLOBAL
   3          #include "includes.h"
   4          //===================================
   5          uchar SmsInit(void)
   6          {
   7   1        static uchar InitFail = 10,index = 0,Res = 0,TimeOut = 0;
   8   1        static bit SendFlag = 1;
   9   1        if(SendFlag)
  10   1        {
  11   2              mComLen = 0;
  12   2          while(ModemCommand[index][mComLen] != '\r') 
  13   2              {
  14   3            SmsTxBuffer[mComLen++]  = ModemCommand[index][mComLen];
  15   3          }
  16   2              SmsTxBuffer[mComLen++] = '\r';
  17   2          SBUF0 = SmsTxBuffer[0];
  18   2          mComSlot = 1;
  19   2          Tim100MS = 0;
  20   2              SendFlag = 0;
  21   2        }
  22   1        else
  23   1        {
  24   2              if(Tim100MS)
  25   2              {
  26   3                      Tim100MS = 0;
  27   3                  mComLen = 0;
  28   3                      Res = Waitfor(OK);
  29   3                      if( !Res)
  30   3                      {
  31   4                              if(TimeOut++ > 60)
  32   4                              {
  33   5                                      if(InitFail-- ==0)
  34   5                                      {
  35   6                                              SmsInitState = 0x11;
  36   6                                              InitFail = 10;
  37   6                                              return(FALSE);
  38   6                                      }
  39   5                                      else
  40   5                                      {
  41   6                                              ModemInit();
  42   6                                              index = 0; 
  43   6                                              TimeOut = 0;
  44   6                                      SendFlag = 1; 
  45   6                                      }
  46   5                              }
  47   4                      }
  48   3                      else
  49   3                      {
  50   4                              if(index ++ >= MODEMCOMMANDCON - 1)
  51   4                              {
  52   5                                      SmsInitState = 0xAA;
  53   5                                      SmsPointerInit();
  54   5                                  SmsBindBuff(InputBuffer);
  55   5                                  Comm0EvtPointer = ProcSmsReceive; 
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 2   

  56   5                                  SmsReceiveStatus = 0; 
  57   5                                  return(TRUE);
  58   5                              }
  59   4                              else
  60   4                              {
  61   5                                  SendFlag = 1; 
  62   5                              }
  63   4                      } 
  64   3              }
  65   2        }
  66   1      }
  67          //-------------------------------------
  68          void ProcSmsReceive(void)
  69          {
  70   1        if(RxSmsSize == 0) {
  71   2          switch (cData) {
  72   3            case '>':
  73   3              SmsReceiveStatus |= SendSmsBZ;
  74   3              break;
  75   3            case '+':
  76   3              SmsBuffer[RxSmsSize++] = cData;
  77   3                  RxDataTypeFlag = 1;
  78   3              break;
  79   3            case '0':
  80   3              SmsReceiveStatus |= RxOkBZ;
  81   3              break;
  82   3            case '2':
  83   3              SmsReceiveStatus |= RxRingBZ;
  84   3              break;
  85   3            default :
  86   3              break;
  87   3          }
  88   2        }
  89   1        else { 
  90   2          switch (RxDataTypeFlag) {
  91   3            case 1 :
  92   3              SmsBuffer[RxSmsSize++] = cData;
  93   3            if(cData == 0x0a) {     
  94   4                if(!memcmp(InputBuffer,CMT,4)) {
  95   5                              RxSmsSize2 = 0;
  96   5                      RxDataTypeFlag = 2;
  97   5                    }
  98   4                else if(!memcmp(InputBuffer,CSCA,5)) {
  99   5                  SmsReceiveStatus |= RxCscaOkBZ;
 100   5                  RxSmsSize = 0;
 101   5                  RxDataTypeFlag = 0 ;
 102   5                }
 103   4                else if(!memcmp(InputBuffer,CCLK,5)) {
 104   5                  SmsReceiveStatus |= RxCclkOkBZ;
 105   5                  memcpy(TimeBuff,&InputBuffer[8],17);
 106   5                  RxSmsSize = 0;
 107   5                  RxDataTypeFlag = 0 ;
 108   5                }
 109   4                else if(!memcmp(InputBuffer,CSQ,4)) {
 110   5                  SmsReceiveStatus |= RxCsqOkBZ;
 111   5                  memcpy(CsqBuff,&InputBuffer[6],4); 
 112   5                  RxSmsSize = 0;
 113   5                  RxDataTypeFlag = 0 ;
 114   5                }
 115   4                else if(!memcmp(InputBuffer,CNMA,5)) {
 116   5                  SmsReceiveStatus |= RxCnmaOkBZ;
 117   5                  RxSmsSize = 0;
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 3   

 118   5                  RxDataTypeFlag = 0 ;
 119   5                }
 120   4                else if(!memcmp(InputBuffer,CLIP,5)) {  
 121   5                  memcpy(ClipTelNumber,&InputBuffer[8],11);
 122   5                  SmsReceiveStatus |= RxRingBZ;
 123   5              RxClipBZ = 1; 
 124   5                  RxSmsSize = 0;
 125   5                  RxDataTypeFlag = 0 ;
 126   5                }
 127   4                else if(!memcmp(InputBuffer,CMGS,3)) {
 128   5              RxCmgsBZ = 1;
 129   5                  RxSmsSize = 0;
 130   5                  RxDataTypeFlag = 0 ;
 131   5                }
 132   4                else {
 133   5                  RxSmsSize = 0;
 134   5                  RxDataTypeFlag = 0;
 135   5                } 
 136   4              }
 137   3              break;
 138   3          case 2:
 139   3            SmsBuffer[RxSmsSize2++] = cData;
 140   3            if(cData == 0x0a) {  
 141   4              RxSmsSize = 0;
 142   4                  RxCmtOkBZ = 1; 
 143   4                  RxDataTypeFlag = 0;
 144   4                }
 145   3              break;
 146   3          default :
 147   3            RxSmsSize = 0;
 148   3            RxDataTypeFlag = 0 ;
 149   3          break;
 150   3          }
 151   2        }
 152   1      }    
 153          //-------------------------------------*/
 154          void SmsBindBuff(uchar *lpInputBuffer)
 155          {
 156   1              SmsBuffer = lpInputBuffer;
 157   1      }
 158          //-------------------------------------*/
 159          void SmsPointerInit(void)
 160          {
 161   1              InputBuffNoEmptyBZ = FALSE;
 162   1              InputBuff1NoEmptyBZ = FALSE;
 163   1      }
 164          //--------------------------------------------------
 165          uchar SmsChuLi(uchar xdata *SmsChuLBbuffer)
 166          {
 167   1        uchar tmp;
 168   1      
 169   1          String2Bytes(SmsChuLBbuffer,&tmp,2); 
 170   1          tmp = (tmp - 1) * 2; 
 171   1          SmsChuLBbuffer += 4;  
 172   1          SerializeNumbers(SmsChuLBbuffer, SmsCode.SCA, tmp); 
 173   1          SmsChuLBbuffer += tmp; 
 174   1          String2Bytes(SmsChuLBbuffer, &tmp, 2);
 175   1          SmsChuLBbuffer += 2;
 176   1          String2Bytes(SmsChuLBbuffer, &tmp, 2);
 177   1          if(tmp & 1) tmp += 1; 
 178   1          SmsChuLBbuffer += 4; 
 179   1          SerializeNumbers(SmsChuLBbuffer, SmsCode.TPA, tmp); 
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 4   

 180   1          SmsChuLBbuffer += tmp;       
 181   1          String2Bytes(SmsChuLBbuffer, &SmsCode.TP_PID, 2);  
 182   1          SmsChuLBbuffer += 2;      
 183   1          String2Bytes(SmsChuLBbuffer, &SmsCode.TP_DCS, 2);    
 184   1          SmsChuLBbuffer += 2;      
 185   1          SerializeNumbers(SmsChuLBbuffer, SmsCode.TP_SCTS, 14);     
 186   1          SmsChuLBbuffer += 14;      
 187   1          String2Bytes(SmsChuLBbuffer, &tmp, 2); 
 188   1              SmsCode.TP_UDLEN = tmp;
 189   1          SmsChuLBbuffer += 2;       
 190   1          if(SmsCode.TP_DCS == GSM_UCS2)
 191   1          {
 192   2              String2Bytes(SmsChuLBbuffer, SmsCode.TP_UD, tmp * 2); 
 193   2                      if(((SmsCode.TP_UD[1] == 0x2A) || (SmsCode.TP_UD[1] == 0x0A))&& ((SmsCode.TP_UD[19] == 0x23) || (SmsCode
             -.TP_UD[19] == 0x03)))
 194   2                      {
 195   3                              for(tmp=1;tmp<9;tmp++)
 196   3                              {
 197   4                              UnCode_Data[tmp-1] = SmsCode.TP_UD[tmp*2];
 198   4                                      UnCode_Data[tmp-1] = UnCode_Data[tmp-1] << 8 ;
 199   4                                      UnCode_Data[tmp-1] = UnCode_Data[tmp-1] + SmsCode.TP_UD[tmp*2 + 1];
 200   4                                      GB2312_Data[tmp-1] = UnicodetoGB2312(UnCode_Data[tmp-1]);
 201   4                                      return(TRUE);
 202   4                              }
 203   3                      } 
 204   2                      else{
 205   3                        return(FALSE);
 206   3                      }
 207   2          }
 208   1              else
 209   1              {
 210   2                      return(FALSE);
 211   2              }
 212   1      }
 213          //=====================================================================================
 214          void ProcSmsSend2(void)
 215          {            
 216   1          uchar nLength,i;
 217   1              uchar code tmp[] = "6210529F63A56536FF1A";
 218   1          uchar nDstLength;   
 219   1          uchar buf[20];  
 220   1      //******************************************************************************************
 221   1            buf[0] = 0x00;
 222   1            nDstLength = Bytes2String(buf, SmsTxBuffer2, 1); 
 223   1      //******* ***************************************************************************   
 224   1          nLength = strlen(SmsCode.TPA);
 225   1          buf[0] = 0x11;      
 226   1          buf[1] = 0;      
 227   1          buf[2] = (uchar)nLength;  
 228   1          buf[3] = 0x91;         
 229   1          nDstLength += Bytes2String(buf, &SmsTxBuffer2[nDstLength], 4);  
 230   1          nDstLength += InvertNumbers(SmsCode.TPA, &SmsTxBuffer2[nDstLength], nLength); 
 231   1          nLength = strlen(SmsCode.TP_UD);    
 232   1          buf[0] = SmsCode.TP_PID;     
 233   1          buf[1] = 0x08;       
 234   1          buf[2] = 0;      
 235   1              buf[3] = SmsCode.TP_UDLEN + 10; 
 236   1          nDstLength += Bytes2String(buf, &SmsTxBuffer2[nDstLength], 4);       
 237   1              for(i=0;i<20;i++)
 238   1              {
 239   2                      SmsTxBuffer2[i+nDstLength] = tmp[i];
 240   2              }
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 5   

 241   1              nDstLength = nDstLength + 20;
 242   1          if(SmsCode.TP_DCS == GSM_UCS2) {
 243   2              nDstLength += Bytes2String(SmsCode.TP_UD, &SmsTxBuffer2[nDstLength], SmsCode.TP_UDLEN);  
 244   2          }
 245   1      SmsTxBuffer2[nDstLength++] = 0x1a;
 246   1      }
 247          //------------------------------------
 248          void ProcSmsSend1(void)
 249          {
 250   1        uchar i;
 251   1        for(i=0;i<8;i++){
 252   2          SmsTxBuffer1[i] = AT_CMGS[i];
 253   2        }
 254   1        SmsTxBuffer1[8] = '0'; 
 255   1        SmsTxBuffer1[9] = '4'; 
 256   1        SmsTxBuffer1[10] = '5'; 
 257   1        SmsTxBuffer1[11] = '\r'; 
 258   1      }
 259          //--------------------------------------------------------

⌨️ 快捷键说明

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