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

📄 sms.lst

📁 此例子是用C8051F020开发西门子短信模块MC35I的资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
 260          void ProcSmsSend(uchar *Input,uchar len)
 261          {
 262   1        SmsTxBuffer = Input;
 263   1        mComLen = len;
 264   1        SBUF0 = SmsTxBuffer[0];
 265   1        mComSlot = 1;
 266   1      }
 267          //==========================================================
 268          uchar String2Bytes(uchar *Src, uchar *Dst, uchar nSrcLength)
 269          {
 270   1              uchar i;
 271   1          for(i=0; i<nSrcLength; i+=2) {
 272   2              if(*Src>='0' && *Src<='9') {
 273   3                  *Dst = (*Src - '0') << 4;
 274   3              }
 275   2              else {
 276   3                  *Dst = (*Src - 'A' + 10) << 4;
 277   3              }
 278   2              Src++; 
 279   2              if(*Src>='0' && *Src<='9') {
 280   3                  *Dst |= *Src - '0';
 281   3              }
 282   2              else {
 283   3                  *Dst |= *Src - 'A' + 10;
 284   3              }
 285   2              Src++;
 286   2              Dst++;
 287   2          }
 288   1          return nSrcLength / 2;
 289   1      }
 290          //==============================================================
 291          uchar Bytes2String(uchar *Src, uchar *Dst, uchar nSrcLength)
 292          {
 293   1              uchar i;
 294   1          uchar code tab[]="0123456789ABCDEF"; 
 295   1          for(i=0; i<nSrcLength; i++)
 296   1          {
 297   2              *Dst++ = tab[*Src >> 4];
 298   2              *Dst++ = tab[*Src & 0x0f];
 299   2              Src++;
 300   2          }
 301   1          *Dst = '\0';
 302   1          return nSrcLength * 2;
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 6   

 303   1      }
 304          //====================================================================
 305          uchar InvertNumbers(uchar *Src, uchar *Dst, uchar nSrcLength)
 306          {
 307   1          uchar nDstLength,i,ch;
 308   1          nDstLength = nSrcLength;
 309   1          for(i=0; i<nSrcLength;i+=2) {
 310   2              ch = *Src++;
 311   2              *Dst++ = *Src++;
 312   2              *Dst++ = ch;
 313   2          }
 314   1          if(nSrcLength & 1) {
 315   2              *(Dst-2) = 'F'; 
 316   2              nDstLength++;
 317   2          }
 318   1          *Dst = '\0';
 319   1          return nDstLength;
 320   1      }
 321          //==================================================================    
 322          uchar SerializeNumbers(uchar *Src, uchar *Dst, uchar nSrcLength)
 323          {
 324   1          uchar i,nDstLength,ch;
 325   1          nDstLength = nSrcLength;
 326   1          for(i=0; i<nSrcLength;i++,i++) {
 327   2              ch = *Src++; 
 328   2              *Dst++ = *Src++;
 329   2              *Dst++ = ch;
 330   2          }
 331   1          if(*(Dst-1) == 'F') {
 332   2              Dst--;
 333   2              nDstLength--;
 334   2          }
 335   1          *Dst = '\0';
 336   1          return nDstLength;
 337   1      }
 338          //===================================================================
 339          void SmsProc(void)
 340          {
 341   1              uchar TempVal,TempBuff[3] = {"00"};
 342   1              static uchar xdata WaitCmdCon = 0,i = 0,SmsSendFail = 0;
 343   1              static bit SendCSQBZ = 0;
 344   1          if((!RxCmtOkBZ) && ShowTimeBZ)
 345   1              {
 346   2                      if(!SendCSQBZ)
 347   2                      {
 348   3                      while(AT_CSQ[mComLen] != '\r') 
 349   3                              {
 350   4                              SmsTxBuffer[mComLen++]  = AT_CSQ[mComLen];
 351   4                      }
 352   3                              SmsTxBuffer[mComLen++] = '\r';
 353   3                      SBUF0 = SmsTxBuffer[0];
 354   3                      mComSlot = 1;
 355   3                              SendCSQBZ = 1;
 356   3                              ShowTimeBZ = 0;
 357   3                      }
 358   2                      else if(SendCSQBZ)
 359   2                      {
 360   3                              if(SmsReceiveStatus & RxCsqOkBZ)                
 361   3                              {
 362   4                                      SendCSQBZ = 0;
 363   4                                      memcpy(TempBuff,CsqBuff,2);
 364   4                              TempVal = atoi(TempBuff); 
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 7   

 365   4                              if(TempVal == 99) {
 366   5                                      SignalFlag = 0;
 367   5                              }
 368   4                              else if(TempVal > 23) { 
 369   5                                      SignalFlag = 4;
 370   5                              }
 371   4                              else if(TempVal > 15) { 
 372   5                                      SignalFlag = 3;
 373   5                              }
 374   4                              else if(TempVal > 7) { 
 375   5                                      SignalFlag = 2;
 376   5                              }
 377   4                              else  
 378   4                                      SignalFlag = 1;
 379   4                                  SmsReceiveStatus &= ~RxCsqOkBZ;
 380   4                                      SendCSQBZ = 0;
 381   4                                      ShowTimeBZ = 0;
 382   4                              }
 383   3                      }
 384   2              }
 385   1      //-----------------------------------
 386   1          if(RxCmtOkBZ) { 
 387   2            switch (SmsState) {
 388   3              case 0x01:
 389   3                i = SmsChuLi(SmsBuffer);
 390   3                        if(i){
 391   4                      ProcSmsSend2();
 392   4                  SmsState = 0x02;
 393   4                        }
 394   3                        else{
 395   4                          SmsState = 0x04;
 396   4                              SmsReceiveStatus &= ~RxCnmaOkBZ;
 397   4                              RxCmgsBZ = 1;
 398   4                  RxCmtOkBZ = 1;
 399   4                              WaitCmdCon = 0;
 400   4                }
 401   3                break;
 402   3              case 0x02:
 403   3                ProcSmsSend1();
 404   3                ProcSmsSend(SmsTxBuffer1,12);
 405   3                SmsState = 0x03;
 406   3                        WaitCmdCon = 0;
 407   3                break;
 408   3              case 0x03:
 409   3                if(Tim100MS)
 410   3                        {
 411   4                  Tim100MS = 0;
 412   4                          if(SmsReceiveStatus & SendSmsBZ)
 413   4                              {
 414   5                    ProcSmsSend(SmsTxBuffer2,93);
 415   5                                SmsReceiveStatus &= ~SendSmsBZ;
 416   5                        SmsState = 0x04;
 417   5                                RxCmgsBZ = 0;
 418   5                                WaitCmdCon = 0;
 419   5                          }
 420   4                          else if(WaitCmdCon++ > 200)  //10S
 421   4                              {
 422   5                                WaitCmdCon = 0;
 423   5                                if(SmsSendFail++>10)
 424   5                                {
 425   6                                  SmsSendFail = 0;
 426   6                      SmsState = 0x02;
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 8   

 427   6                                      WaitCmdCon = 0;
 428   6                              RxCmtOkBZ = 0;
 429   6                                      //The SMS is Send Fail proc
 430   6                                 }
 431   5                              }
 432   4                        }
 433   3                break;
 434   3              case 0x04:
 435   3                if(Tim100MS == 1)
 436   3                        {
 437   4                  Tim100MS = 0;
 438   4                  if(RxCmgsBZ)
 439   4                              {
 440   5                            SmsState = 0x05;
 441   5                                WaitCmdCon = 0;
 442   5                                SmsReceiveStatus &= ~RxOkBZ;
 443   5                                mComLen = 0;
 444   5                        while(AT_CNMA[mComLen] != '\r') {
 445   6                      SmsTxBuffer[mComLen++]  = AT_CNMA[mComLen];
 446   6                    }
 447   5                        SmsTxBuffer[mComLen++] = '\r';
 448   5                    SBUF0 = SmsTxBuffer[0];
 449   5                            mComSlot = 1;
 450   5      
 451   5                            //The SMS is Send Success proc
 452   5                              }
 453   4                          else if(WaitCmdCon++ > 250)//
 454   4                              {
 455   5                                WaitCmdCon = 0;
 456   5                                if(SmsSendFail++>10)
 457   5                                {
 458   6                              SmsState = 0x02;
 459   6                                      WaitCmdCon = 0;
 460   6                                  SmsSendFail = 0;
 461   6                      RxCmtOkBZ = 0;
 462   6                                      //The SMS is Send Fail proc
 463   6                                 }
 464   5                              }
 465   4                        }
 466   3                break;
 467   3              case 0x05:
 468   3                if(Tim100MS == 1)
 469   3                        {
 470   4                  Tim100MS = 0;
 471   4                  if(SmsReceiveStatus & RxCnmaOkBZ)
 472   4                              {
 473   5                            SmsState = 0x01;
 474   5                                SmsReceiveStatus &= ~RxCnmaOkBZ;
 475   5                                RxCmgsBZ = 0;
 476   5                    RxCmtOkBZ = 0;
 477   5                                WaitCmdCon = 0;
 478   5                              }
 479   4                          else if(WaitCmdCon++ > 250)//
 480   4                              {
 481   5                        SmsState = 0x04;
 482   5                                WaitCmdCon = 0;
 483   5                                if(SmsSendFail++>2)
 484   5                                {
 485   6                                      SmsInitState = 0x55;
 486   6                                      ModemInit (); 
 487   6                                      ModemBindBuff(InputBuffer);  
 488   6                                      Comm0EvtPointer = ProcModemReceive; 
C51 COMPILER V8.01   SMS                                                                   03/07/2007 14:09:13 PAGE 9   

 489   6                                      WaitCmdCon = 0;
 490   6                                      SmsState = 0x01;
 491   6                                  SmsSendFail = 0;
 492   6                      RxCmtOkBZ = 0;
 493   6                                }
 494   5                              }
 495   4                        }
 496   3                break;
 497   3              default :
 498   3                    SmsState = 0x01;
 499   3                RxCmtOkBZ = 0;
 500   3                break;
 501   3            }
 502   2              }
 503   1      }
 504          //-----------------------------------------
 505          void SMSInItPointer(void)
 506          {
 507   1        SmsState = 0x01;
 508   1        SmsInitState = 0x55;
 509   1        ModemInit (); 
 510   1        ModemBindBuff(InputBuffer);   
 511   1        Comm0EvtPointer = ProcModemReceive; 
 512   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2618    ----
   CONSTANT SIZE    =    195    ----
   XDATA SIZE       =    533    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      56
   IDATA SIZE       =   ----    ----
   BIT SIZE         =     10    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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