?? cheshi.lst
字號:
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 + -