📄 fangdao.lst
字号:
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 + -