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

📄 cheshi.lst

📁 GSM MCU 开发板
💻 LST
📖 第 1 页 / 共 5 页
字号:
 496           //在这里主要是读短信并处理,如果有外部中断马上返回进行中断处理
 497          //============================================
 498          //==========       读写短信程序
 499          //====================================================
 500          void read_sms()
 501          {    uchar  i,r,j ;
 502   1      
 503   1            Send_AT_Command(AT_CPMS);
 504   1                      i=strsearch( "+CPMS:"); //
 505   1               if(i)
 506   1                            {  i=i+5;
 507   2                                   txd_rxd_bit=0;
 508   2                                   if((uart_buff[i]==' ')&&(uart_buff[i+1]=='0')&&(uart_buff[i+2]==','))
 509   2                               {  receive_count=0; timer_S_cnt=0; while(timer_S_cnt<2){ P2_INIT();}
 510   3                                              LED_1(); return;
 511   3                                }
 512   2                      else if((uart_buff[i]==' ')&&(uart_buff[i+1]>='1')&&(uart_buff[i+2]==','))
 513   2                               {  r=(uart_buff[i+1]-0x30)+2;
 514   3      
 515   3                                }
 516   2                                      else if((uart_buff[i]==' ')&&((uart_buff[i+1]>'0')&&(uart_buff[i+2]>='0'))&&(uart_buff[i+3]==','))
 517   2                               { r=  (uart_buff[i+1]-0x30)*10;
 518   3                                         r=r+(uart_buff[i+2]-0x30)+1;
 519   3                                }
 520   2                                        else{      return;   }
 521   2                    }
 522   1      
 523   1      
 524   1      
 525   1            for(r=1;r<21;r++)
 526   1             {
 527   2                num_tmp1=r;
 528   2                        READ_TEL(r);
 529   2                        if(receive_count>=10)
 530   2                              {    P0_4=1;
 531   3                                      if(i=strsearch("READ\x22,\x22"))   //保证有短信到来
 532   3                              {       i=i+6;
 533   4                                      if(uart_buff[i]=='+')  i=i+3 ;
 534   4                              for(j=0;j<20;j++) //进行对方号码读取并存起来
 535   4                                      {
 536   5                                              TEL_temp[j]=uart_buff[i++];
 537   5                                              if(uart_buff[i]==0x22)   break;
 538   5                                      }
 539   4                      TEL_temp[j+1]=0x0d;     TEL_temp[j+2]=0x00;
 540   4                              }
 541   3                                  P0_4=0;
 542   3                              }
 543   2                              else
 544   2                              {   P0_6=1;
 545   3                                       timercount=0; while(timercount<10) {  if((i=P2_INIT())==0) return ;}
 546   3                                        P0_6=0;
 547   3                                      continue;
 548   3                              }
 549   2                 if((i=P2_INIT())==0) return ;
 550   2            //---------------手机号码设置-------------
 551   2      
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 10  

 552   2               if((i=strsearch("START")))   //  发英文
 553   2                {
 554   3                         P0=0;   P0_1=1;
 555   3                         timercount=0; while(timercount<200) watch_dog_clear;
 556   3                            //有些比较重要的东西你可以存到卡就,重新开机也没有问题
 557   3                                      IO_OUT=0;
 558   3                                      system_server=SYS_TEL;   return;
 559   3      
 560   3                      }
 561   2                      else if((i=strsearch("END")))   // 发中文
 562   2                               {
 563   3                          P0=0;   P0_2=1;
 564   3                         timercount=0; while(timercount<150) watch_dog_clear;
 565   3                                       IO_OUT=1;
 566   3                                         system_server=SYS_ALARM;   return;
 567   3      
 568   3                          }
 569   2      
 570   2                else     if((i=strsearch("start")))   //  发英文
 571   2                               {
 572   3                          P0=0;   P0_1=1;
 573   3                         timercount=0; while(timercount<200) watch_dog_clear;
 574   3                            //有些比较重要的东西你可以存到卡就,重新开机也没有问题
 575   3                                       IO_OUT=0;
 576   3                                       system_server=SYS_TEL;   return;
 577   3      
 578   3                         }
 579   2                      else if((i=strsearch("end")))   // 发中文
 580   2                               {
 581   3                          P0=0;   P0_2=1;
 582   3                         timercount=0; while(timercount<150) watch_dog_clear;
 583   3                                       IO_OUT=1;
 584   3                                        system_server=SYS_ALARM;   return;
 585   3      
 586   3                      }
 587   2                      else if((i=strsearch("123456")))   // 发中文
 588   2                               {
 589   3                          P0=0;   P0_2=1;
 590   3                         timercount=0; while(timercount<150) watch_dog_clear;
 591   3                                       IO_OUT=1;
 592   3                                        system_server=SYS_ALARM;   return;
 593   3      
 594   3                         }
 595   2             else if((i=strsearch("TEL:")))   // 发中文
 596   2                               { j=0; para_temp[j++]=0x31;para_temp[j++]=','; para_temp[j++]='"';
 597   3                                for(i=0;i<=20;i++)
 598   3                                {     if(TEL_temp[i]==0x0d||TEL_temp[i]==0x00)
 599   4                              {para_temp[j++]='"';para_temp[j++]=0;break;}
 600   4                                          para_temp[j++]=TEL_temp[i] ;
 601   4                                }
 602   3      
 603   3                            Send_AT_Command(PHONE_WRITE);
 604   3                           P0=0;   P0_3=0;
 605   3                         timercount=0; while(timercount<200) watch_dog_clear;
 606   3      
 607   3                                        system_server=SYS_ALARM;   return;
 608   3      
 609   3                         }
 610   2                              else {
 611   3      
 612   3                                              para_temp[0]=(num_tmp1/10)+0x30;para_temp[1]=(num_tmp1%10)+0x30; para_temp[2]=0x0d;para_temp[3]=0x00;
 613   3                                              Send_AT_Command(SMS_CMGD);    //删除其它没有用的短信
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 11  

 614   3                                              timer_S_cnt=0; while(timer_S_cnt<10&&(AT_Command_Status==COMMAND_WAIT)) watch_dog_clear;
 615   3                                              for(i=10;i<=MAX_TM-3;i++)
 616   3                                      {    uart_buff[i]=0;
 617   4                                }
 618   3                                 Send_AT_Command(SIM_ID);
 619   3                                              // return;
 620   3      
 621   3                                       }
 622   2      
 623   2      
 624   2      
 625   2         }
 626   1      
 627   1      
 628   1      
 629   1      
 630   1      
 631   1      }
 632           //==================================
 633           //      所有的短信都在这里发送出去
 634           //   para_temp为短信内容数组, TMP_BUF为数组指针
 635           //
 636           //-----------------------
 637          
 638          void send_sms() //发送短信
 639          {       uchar  j=1,i=1;
 640   1      
 641   1             Send_AT_Command(SIM_ID);
 642   1                      switch(sms_tmp)
 643   1      
 644   1                      {
 645   2                          case        smss_tel:  //  发送英文
 646   2                              //AT+CMGS=   "13818120592"    >
 647   2                           TMP_BUF=0;para_temp[TMP_BUF++]='"';  j=0;
 648   2                                              do{
 649   3                                                      para_temp[TMP_BUF++]=TEL_temp[j++];
 650   3      
 651   3                                 if(TEL_temp[j]==0x0d)
 652   3                                   {para_temp[TMP_BUF++]='"';  para_temp[TMP_BUF++]=0;   }
 653   3      
 654   3                                               }while( TMP_BUF<=18);
 655   2      
 656   2                                               Send_AT_Command(SMS_CMGS);
 657   2                                       j=0;
 658   2      
 659   2                                              para_temp[j++]='S';
 660   2                                                      para_temp[j++]='E';
 661   2                                                      para_temp[j++]='N';
 662   2                                                      para_temp[j++]='D';
 663   2                                                      para_temp[j++]=':';
 664   2                                                      para_temp[j++]=0x20;
 665   2                                          para_temp[j++]='O';
 666   2                                                      para_temp[j++]='K';
 667   2                                      para_temp[j++]=0x1a;
 668   2                                                      para_temp[j++]=0x00;
 669   2                                                      para_temp[j++]=0x00;
 670   2                                                      para_temp[j]=0x00;
 671   2      
 672   2                              Send_AT_Command(CMGS_MUB);
 673   2                      break;
 674   2      
 675   2                case smss_para:         //发送中文
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 12  

 676   2                     //0011000D91683118180295F20008A70A8F66670953719669FF01
 677   2                     Send_AT_Command(SMS_CMGF);
 678   2                     TMP_BUF=0;
 679   2                                      para_temp[TMP_BUF++]='2';   //短信号码长度,如果每加一个中文,长度加2
 680   2                                      para_temp[TMP_BUF++]='5';
 681   2                                      para_temp[TMP_BUF++]=0x0d;
 682   2                                      para_temp[TMP_BUF++]=0x00;
 683   2                                      para_temp[TMP_BUF++]=0x00;
 684   2                      Send_AT_Command(SMS_CMGS);
 685   2      
 686   2                      TMP_BUF=0;
 687   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='0';
 688   2                                      para_temp[TMP_BUF++]='1';para_temp[TMP_BUF++]='1';
 689   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='0';
 690   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='D';
 691   2                      para_temp[TMP_BUF++]='9';para_temp[TMP_BUF++]='1';
 692   2                                      para_temp[TMP_BUF++]='6';para_temp[TMP_BUF++]='8';
 693   2                                              //3118180295F2
 694   2      
 695   2                                      j=0;       //发送对方号码
 696   2                                              do       //动态电话号码
 697   2                                              {
 698   3                                            para_temp[TMP_BUF++]=TEL_temp[j+1];
 699   3                                            para_temp[TMP_BUF++]=TEL_temp[j];
 700   3                                            j=j+2;
 701   3                                            if(TEL_temp[j+1]==0x0d)
 702   3                                            { para_temp[TMP_BUF++]='F';
 703   4                                              para_temp[TMP_BUF++]=TEL_temp[j];
 704   4                                              break;
 705   4                                            }
 706   3                                         } while(j<=18);
 707   2                     //短信格式设备
 708   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='0';
 709   2                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='8';
 710   2                                      para_temp[TMP_BUF++]='A';para_temp[TMP_BUF++]='0';
 711   2                                 //短信长度、 5个字,10个英文
 712   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='A';
 713   2                                       //短信内容
 714   2                                      //53D1 9001 6210 529F FF01 发送成功
 715   2                                      para_temp[TMP_BUF++]='5';para_temp[TMP_BUF++]='3';
 716   2                                      para_temp[TMP_BUF++]='D';para_temp[TMP_BUF++]='1';
 717   2      
 718   2                                      para_temp[TMP_BUF++]='9';para_temp[TMP_BUF++]='0';
 719   2                                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='1';
 720   2      
 721   2                                      para_temp[TMP_BUF++]='6';para_temp[TMP_BUF++]='2';
 722   2                                      para_temp[TMP_BUF++]='1';para_temp[TMP_BUF++]='0';
 723   2      
 724   2                                      para_temp[TMP_BUF++]='5';para_temp[TMP_BUF++]='2';
 725   2                                      para_temp[TMP_BUF++]='9';para_temp[TMP_BUF++]='F';
 726   2      
 727   2                                      para_temp[TMP_BUF++]='F';para_temp[TMP_BUF++]='F';
 728   2                      para_temp[TMP_BUF++]='0';para_temp[TMP_BUF++]='1';
 729   2                      //短信结束符
 730   2                      para_temp[TMP_BUF++]=0X1A;para_temp[TMP_BUF++]=0X00;
 731   2                      para_temp[TMP_BUF++]=0X00;
 732   2                      Send_AT_Command(CMGS_MUB);
 733   2      
 734   2                break;
 735   2      
 736   2      
 737   2      
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 13  

 738   2                      //======================发送收到设备开启指令================================================
 739   2      
 740   2                        default:
 741   2                              //system_server=SYS_SMSR;
 742   2                              break;
 743   2      
 744   2          }
 745   1              system_server=SYS_SMSR;
 746   1              receive_count=0;
 747   1                      AT_Command_Status=COMMAND_WAIT; //设置接收成功标志

⌨️ 快捷键说明

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