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

📄 fangdao.lst

📁 本代码是用C51开发的
💻 LST
📖 第 1 页 / 共 3 页
字号:
 297   1      
 298   1                 //根据不同的方式发送短消息内容
 299   1                      switch(sms_tmp)
 300   1      
 301   1                      {
C51 COMPILER V7.50   FANGDAO                                                               05/02/2007 00:52:35 PAGE 6   

 302   2                      //======================发送收到设备开启指令================================================
 303   2                              case    smss_alarm:          //ALARM 1
 304   2                           IO_OUT=0;
 305   2      
 306   2                                       if(!INT_TMP2) read_tmp=0x31;
 307   2                                       else read_tmp=0x32;
 308   2      
 309   2                              {   TMP_BUF=0;
 310   3                                      j=PHONE_RD();
 311   3                                      para_temp[TMP_BUF++]=0x0d;
 312   3                                      para_temp[TMP_BUF++]=0x0a;
 313   3                                      para_temp[TMP_BUF++]=0x00;
 314   3                                                 timer_200S_cnt=0;
 315   3                                                 Send_AT_Command(SMS_CMGS);
 316   3                                                      TMP_BUF=0;
 317   3                                      para_temp[TMP_BUF++]='S';
 318   3                                      para_temp[TMP_BUF++]='E';
 319   3                                      para_temp[TMP_BUF++]='N';
 320   3                                      para_temp[TMP_BUF++]='D';
 321   3                                      para_temp[TMP_BUF++]=0x20;
 322   3                                      para_temp[TMP_BUF++]='O';
 323   3                                      para_temp[TMP_BUF++]='K';
 324   3                                      para_temp[TMP_BUF++]=0x20;
 325   3                                      if(!INT_TMP1) {para_temp[TMP_BUF++]=0x31;   }
 326   3                                      else if(!INT_TMP2){para_temp[TMP_BUF++]=0x32; }
 327   3      
 328   3                                                      para_temp[TMP_BUF++]=0x1a;
 329   3                                      para_temp[TMP_BUF++]=0x0d;
 330   3                                      para_temp[TMP_BUF++]=0x00;
 331   3                                      strcpy(uart_buff,para_temp);
 332   3                                          Send_AT_Command(AT_COMMAND);
 333   3                                          at_send_bit=1;
 334   3                              send_count=0xff;        //设置接收成功标志
 335   3                                      receive_count=0;
 336   3                                          timer_200S_cnt=0; while(timer_200S_cnt<40&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 337   3      
 338   3                      }
 339   2                      IO_OUT=1;
 340   2                              return;
 341   2                          break;
 342   2                              //tel_tmp
 343   2            ////======================================================================
 344   2           case  smss_atart  :
 345   2                     //      num_tmp1=1;
 346   2                                              READ_TEL(num_tmp1);
 347   2      
 348   2                                      if(i=strsearch("+86"))
 349   2                                      {
 350   3                                              for(i=i+2;i<40;i++)
 351   3                                              {
 352   4                                                      if(uart_buff[i]>='0'&&uart_buff[i]<='9')
 353   4                                                              para_temp[j++]=uart_buff[i];
 354   4                                              if(uart_buff[i+1]=='"'&&uart_buff[i+2]==',')
 355   4                                              { para_temp[0]=0x20;    para_temp[j++]=0x0d; para_temp[j]=0;break;}
 356   4                                                      }
 357   3                                                      if(i>=40)     return;
 358   3                                      }
 359   2                                              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 360   2                          Send_AT_Command(SMS_CMGS);
 361   2                                                      TMP_BUF=0;
 362   2                                      para_temp[TMP_BUF++]='S';
 363   2                                      para_temp[TMP_BUF++]='E';
C51 COMPILER V7.50   FANGDAO                                                               05/02/2007 00:52:35 PAGE 7   

 364   2                                      para_temp[TMP_BUF++]='N';
 365   2                                      para_temp[TMP_BUF++]='D';
 366   2      
 367   2                                      para_temp[TMP_BUF++]=0x20;
 368   2                                          //" ALARM Disable "  巳打开报警功能
 369   2                                      if(!system_tep)
 370   2                                        {
 371   3                                              para_temp[TMP_BUF++]='O';
 372   3                                              para_temp[TMP_BUF++]='F';
 373   3                                              para_temp[TMP_BUF++]='F';
 374   3      
 375   3                                              para_temp[TMP_BUF++]=0x20;   }
 376   2                                      else
 377   2                                      //ALARM Enable
 378   2                                        { para_temp[TMP_BUF++]='O';
 379   3                                              para_temp[TMP_BUF++]='N';
 380   3                                              para_temp[TMP_BUF++]=0x20;
 381   3      
 382   3                                              }
 383   2      
 384   2                                                      para_temp[TMP_BUF++]=0x1a;
 385   2                                      para_temp[TMP_BUF++]=0x0d;
 386   2                                      para_temp[TMP_BUF++]=0x00;
 387   2                                          strcpy(uart_buff,para_temp);
 388   2                                          Send_AT_Command(AT_COMMAND);
 389   2                                         timer_200S_cnt=0; while(timer_200S_cnt<5&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 390   2      
 391   2      
 392   2                                      break;
 393   2      //==============发送设备参数查询返回值=========================================
 394   2                        case smss_para:         //参数查询 记三个可拨号电话,三个可发短信手机号码,两个报警延时时长,
 395   2                //read_tmp=0x31;    //第一个
 396   2                timer_200S_cnt=0;while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 397   2                TMP_BUF=0;
 398   2                 for(read_tmp=0x31;read_tmp<=0x34;read_tmp++)
 399   2                  {    k=TMP_BUF;
 400   3                      j=PHONE_RD();
 401   3      
 402   3                      para_temp[TMP_BUF++]=0x0d;
 403   3                      para_temp[TMP_BUF++]=0x0a;
 404   3                      i=TMP_BUF;
 405   3                      timer_200S_cnt=0;while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 406   3      
 407   3                    }
 408   2      
 409   2                       para_temp[TMP_BUF++]=0x1a;para_temp[TMP_BUF++]=0x0d;para_temp[TMP_BUF++]=0x00;
 410   2      
 411   2                             i=80; j=0;
 412   2                       for(k=0;k<=15;k++)
 413   2                    {
 414   3                      uart_buff[i++] =para_temp[k];
 415   3                       }
 416   2      
 417   2                              READ_TEL(num_tmp1);
 418   2                  j=0;
 419   2                      if(i=strsearch("+86"))
 420   2                      {
 421   3                                              for(i=i+2;i<40;i++)
 422   3                                              {
 423   4                                                      if(uart_buff[i]>='0'&&uart_buff[i]<='9')
 424   4                                                              para_temp[j++]=uart_buff[i];
 425   4                                              if(uart_buff[i+1]=='"'&&uart_buff[i+2]==',')
C51 COMPILER V7.50   FANGDAO                                                               05/02/2007 00:52:35 PAGE 8   

 426   4                                              { para_temp[j++]=0x0d; para_temp[j]=0;break;}
 427   4                                                      }
 428   3                                                 if(i>=40)     return;
 429   3                      }
 430   2              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 431   2                  Send_AT_Command(SMS_CMGS);
 432   2                             i=80; j=0; k=20;
 433   2                       for(k=0;k<=15;k++)
 434   2                    {
 435   3                       para_temp[k]=uart_buff[i++];
 436   3                       }
 437   2      
 438   2                       strcpy(uart_buff,para_temp);
 439   2               Send_AT_Command(AT_COMMAND);
 440   2      
 441   2                           break;
 442   2      
 443   2                        default:
 444   2                              break;
 445   2      
 446   2          }
 447   1              receive_count=0;
 448   1                      AT_Command_Status=COMMAND_WAIT; //设置接收成功标志
 449   1              send_count=0xff;timer_200S_cnt=0;
 450   1              while(timer_200S_cnt<40&&(AT_Command_Status==COMMAND_WAIT))
 451   1                      {   if(strsearch("+CMGS:"))    break;
 452   2                          else if(txd_rxd_bit)  break;
 453   2                              system_sleep;
 454   2                      }
 455   1      
 456   1            para_temp[0]=(num_tmp1/10)+0x30;para_temp[1]=(num_tmp1%10)+0x30; para_temp[2]=0x0d;para_temp[3]=0x00
             -;
 457   1      
 458   1                Send_AT_Command(SMS_CMGD);
 459   1                timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 460   1      
 461   1      
 462   1      }
 463          //======================================================================
 464          //================进行SIM卡的电话本读======================================================
 465          //======================================================================
 466          uchar PHONE_RD( )      //read_tmp=0x30+i;  要读的电话号码
 467          {       uchar j;
 468   1      
 469   1              Send_AT_Command(PHONE_READ);
 470   1              send_count=0;
 471   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 472   1      
 473   1              if(j=strsearch("+CPBR:"))    //+CPBW: 1,"13818120592",129,"chia"
 474   1              {       j=j+9;
 475   2      
 476   2                       do
 477   2                      {
 478   3                                      para_temp[TMP_BUF++]= uart_buff[j++];
 479   3                                      if( uart_buff[j]=='"')
 480   3                                      {
 481   4                                         return(TMP_BUF);
 482   4                                      }
 483   3      
 484   3      
 485   3                      }while(j<=24);
 486   2      
C51 COMPILER V7.50   FANGDAO                                                               05/02/2007 00:52:35 PAGE 9   

 487   2      
 488   2              }
 489   1      
 490   1              else  return(0);
 491   1      }
 492          
 493          //======================================================================
 494          //========================进行SIM卡中的1到20条短信号码的读==============================================
 495          //======================================================================
 496          uchar   READ_TEL(uchar r)                //读短信号码1-20个
 497          {     //  uchar r;
 498   1               para_temp[0]=(r/10)+0x30;para_temp[1]=(r%10)+0x30; para_temp[2]=0x0d;para_temp[3]=0x00;
 499   1      
 500   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 501   1              Send_AT_Command(SMS_CMGR);
 502   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 503   1              send_count=0;
 504   1              if(strsearch("+CMGR: 0,,0"))     //+CMGR: 0,,0    没有短信返回
 505   1              {       return(FALSE);
 506   2      
 507   2              }
 508   1              else
 509   1              {  if(txd_rxd_bit==1)
 510   2                      return(TRUE);
 511   2                else  return(FALSE);
 512   2      
 513   2              }
 514   1      
 515   1      }
 516          
 517          
 518          void Initialize_Model(void)    //PIN检测
 519          {
 520   1      
 521   1              uchar i;
 522   1          Sys_Init();
 523   1          LED_INT1=0;
 524   1              sbc_bit=0;
 525   1              IO_IGT=0;
 526   1              //INT_TMP2=1;
 527   1          P0=0x01;
 528   1              for(i=0;i<10;i++)
 529   1              {//进行初始化,并显示
 530   2                      Send_AT_Command(TC35_INIT);
 531   2                      // INT1=~INT1;
 532   2                      if(uart_buff[1]==0x0d&&uart_buff[0]==0x30)
 533   2                      //if(AT_Command_Status==COMMAND_OK)
 534   2                          {  break;}
 535   2      
 536   2                      if((i%4)==0)     //开启模块
 537   2                      {
 538   3                              IO_IGT=1;
 539   3                      }
 540   2                      else if((i%2)==0)
 541   2                      {
 542   3                              IO_IGT=0;
 543   3                      }
 544   2      
 545   2                      timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 546   2      
 547   2              }
 548   1      
C51 COMPILER V7.50   FANGDAO                                                               05/02/2007 00:52:35 PAGE 10  

 549   1              for(i=0;i<20;i++)
 550   1              {
 551   2                      if(Send_AT_Command(CHECK_PIN))
 552   2                      {//如有收到回应进行分析收到的信息,
 553   3                                      uart_buff[receive_count]=0;
 554   3                                      if(strsearch("READY")!=0)
 555   3                                      break;
 556   3                      }
 557   2                timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 558   2      
 559   2           }
 560   1      
 561   1      
 562   1           BELL=0;
 563   1              IO_IGT=0;
 564   1              Send_AT_Command(SMSS_ID);
 565   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 566   1              Send_AT_Command(SMS_CNMI);
 567   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 568   1              Send_AT_Command(SIM_ID);
 569   1              timer_200S_cnt=0; while(timer_200S_cnt<2&&(AT_Command_Status==COMMAND_WAIT)) system_sleep;
 570   1          LED_INT1=1;
 571   1      
 572   1      
 573   1      
 574   1      }
 575          
 576          
 577          
 578          
 579          
 580          void  Sys_Init(void)//话机启动的初始化程序,包含键盘与定时器,串口等
 581          {
 582   1                              //TH0=(65536-46080)/256;//重新装入定时25mS的初值到TH0,TL0
 583   1                              //TL0=(65536-46080)%256;
 584   1                              //65536-(11.0592/12)*25MS*1000=To
 585   1                              //1ms定时
 586   1                              //11.0592/12 = 0.9216 M (记数频率)
 587   1                              //1ms记数 921.6次
 588   1                              //16位 2^16 - x = 922 x=64614 FC66
 589   1                              //定时器里不断放fc66,不用怀疑51定时器得到的 1ms的精确性吗
 590   1      
 591   1      
 592   1      
 593   1          TH0 = 0xB8;
 594   1              TL0 = 0x00; //20ms的时钟基准
 595   1          //TH0 = 0xB1;
 596   1              //TL0 = 0xE0; //20ms的时钟基准
 597   1        //串口中断
 598   1          TI=0;
 599   1          RI=0;
 600   1          SCON=0x50;                  //选用方式1

⌨️ 快捷键说明

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