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

📄 cheshi.lst

📁 GSM MCU 开发板
💻 LST
📖 第 1 页 / 共 5 页
字号:
1000   2            case PHONE_READ:          //读电话本
1001   2              strcpy(uart_buff,"AT+CPBR=");
1002   2              strcat(uart_buff,&read_tmp);
1003   2              uart_buff[9]=0x0d; uart_buff[10]=0x0a;
1004   2              uart_buff[11]=0x00;   uart_buff[12]=0x00;
1005   2              break;
1006   2            case SMS_CMGR:            //读一个短信
1007   2              strcpy(uart_buff,"AT+CMGR=");
1008   2              strcat(uart_buff,para_temp);
1009   2              break;
1010   2             case SMS_CMGS:           //写一个短信
1011   2              strcpy(uart_buff,"AT+CMGS=");    //AT+CMGS= "13818120592"
1012   2                 strcat(uart_buff,para_temp);
1013   2      
1014   2              break;
1015   2             case SMS_CMGD:           //删除一个短信
1016   2              strcpy(uart_buff,"AT+CMGD=");
1017   2              strcat(uart_buff,para_temp);
1018   2              break;
1019   2             case  CMGS_MUB:    //发报警短信内容
1020   2              strcpy(uart_buff,para_temp);
1021   2               break;
1022   2             case AT_CPMS:
1023   2               strcpy(uart_buff,"ATE0V0+CPMS=\x22SM\x22");
1024   2              break;  //AT_CPMS
1025   2             case PICK_UP:         //摘机
1026   2                  strcpy(uart_buff,"ATA");
1027   2      
1028   2            case AT_COMMAND:
1029   2              break;
1030   2            default:
1031   2              receive_count=0;
1032   2              return(TRUE);
1033   2          }
1034   1          ES=1;
1035   1          strcat(uart_buff,"\x0d\x00");//在命令后加入CR
1036   1          send_count=0;                       //设置发送指针
1037   1          receive_count=0;       //设置接送指针
1038   1          AT_Command_Status=COMMAND_WAIT;     //设置接收成功标志
1039   1          timer_S_cnt=0;
1040   1          txd_rxd_bit=0;//
1041   1          at_send_bit=0; //
1042   1          TI=1;                                       //开始发送数据
1043   1          RI=0;                                       //清除接收标志
1044   1      
1045   1      
1046   1       // if(type==AT_COMMAND)
1047   1        //  {
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 18  

1048   1        //    return(TRUE);
1049   1        //  }
1050   1         // else
1051   1         if (type==TC35_INIT )
1052   1          {
1053   2                while (timer_S_cnt<6)
1054   2                      {
1055   3      
1056   3                      if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)   //等待接收回应
1057   3                      return(TRUE);
1058   3              }
1059   2          }
1060   1      
1061   1          else if((type==SMS_CMGR))
1062   1          {
1063   2              while (timer_S_cnt<6)
1064   2                      {
1065   3      
1066   3                      if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)  //等待接收回应
1067   3                      return(TRUE);
1068   3              }
1069   2          }
1070   1        else if((type==CALL_ID))
1071   1          {
1072   2              while (timer_S_cnt<2)
1073   2                      {
1074   3                      if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)  //等待接收回应
1075   3                      return(TRUE);
1076   3              }
1077   2          }
1078   1      
1079   1      
1080   1          else
1081   1          {
1082   2               while (timer_S_cnt<6)
1083   2                      {
1084   3      
1085   3                      if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1)   //等待接收回应
1086   3                      {
1087   4                              return(TRUE);  }
1088   3              }
1089   2          }
1090   1            // eer_int++;
1091   1          return(FALSE);
1092   1      }
1093          
1094          //****************************************************************
1095          // **                                   拨打电话                                                           ***
1096          //****************************************************************
1097          void tel_diat()           //报警时拨打前三个电话,时间设为40秒,
1098          {    uchar ii,j,t,r=0;
1099   1          t=0x01; //可以用一个电话//为没有打通电话时做临时存储      0000 0111, 可以拨打3个电话,分别是1,2,3
1100   1          do
1101   1              {   ii=ii+1;
1102   2                              if(ii>=3)  ii=0;   // 最大值,不能起过三个电话
1103   2                              TMP_BUF=0;
1104   2                              if(t==0)   return ;
1105   2                              if(     (t>>ii-1)&0x01!=0)
1106   2                              { read_tmp=0x30+ii; }
1107   2                              else  {           continue;  }
1108   2                              j=PHONE_RD();    //读电话号码
1109   2                  r++;
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 19  

1110   2                              if(j>5)
1111   2                              {    para_temp[j++]=';';para_temp[j++]=0x0d;para_temp[j++]=0x00;
1112   3                         if(!Send_AT_Command(VOICE_DIAL));
1113   3                         {    ES=1;    RI=0 ;         //设置发送指针
1114   4                                              receive_count=0; send_count=0xff;
1115   4                                                      timer_S_cnt=0;
1116   4                                                      while(timer_S_cnt<40&&(AT_Command_Status==COMMAND_WAIT))
1117   4                                                      {  if(((uart_buff[0]=='0')&&(uart_buff[0]=='6'))&&uart_buff[1]==0x0d)
1118   5                                                         break;
1119   5                                                      }
1120   4                                         }
1121   3                                         if((((uart_buff[0]=='0')&&uart_buff[1]==0x0d)))      //拨号成功
1122   3                                         {
1123   4                                                       t&=~(1<<ii-1) ;
1124   4      
1125   4                                                       ES=1;                  //设置发送指针
1126   4                                              receive_count=0;send_count=0xffff; RI=0 ;
1127   4                                                      timer_S_cnt=0; AT_Command_Status=COMMAND_WAIT;
1128   4                                                      while(timer_S_cnt<30&&(AT_Command_Status==COMMAND_WAIT))  ;
1129   4                                   Send_AT_Command(HOOKOFF);
1130   4                                   if(t==0)   return ;
1131   4                                          }
1132   3      
1133   3      
1134   3                                        Send_AT_Command(HOOKOFF);
1135   3      
1136   3      
1137   3                                }else
1138   2                                 t&=~(1<<ii-1) ;
1139   2      
1140   2      
1141   2      
1142   2      
1143   2                      }while(r<30);
1144   1      
1145   1      
1146   1      }
1147          
1148          void main(void)
1149          {
1150   1              Initialize_Model(); P0=1;
1151   1      
1152   1              system_server=SYS_SMSR;
1153   1              receive_count=0;
1154   1               sms_tmp=0;
1155   1      
1156   1                LED_INT7=0;
1157   1      
1158   1      
1159   1              while(1)
1160   1              {
1161   2                      //-----------查询1到20条中的短信,只要有短信就处理------------------------------------------
1162   2                      if(system_server==SYS_SMSR)                     //读1-20条短信
1163   2                              {   // Send_AT_Command(SIM_ID);
1164   3                      system_server=SYS_SMSR;
1165   3                                      read_sms();                     //timer_S_cnt=0;
1166   3                                      //P0=0;
1167   3      
1168   3                  }
1169   2                      //----------------一些短信的发送---------------------------------------------------
1170   2      
1171   2                      else if(system_server==SYS_SMSS)       //发送信息
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 20  

1172   2                              {     send_sms();system_server=SYS_SMSR;
1173   3      
1174   3                         }
1175   2      
1176   2                        else if(system_server==SYS_START)  // 硬件中断处理  发中文
1177   2      
1178   2                        {                     int_p02();
1179   3                                system_server=SYS_SMSR;
1180   3      
1181   3                       }
1182   2                        else if(system_server==SYS_SBC)  // // 硬件中断处理   //发英文
1183   2                        {                     int_p03();
1184   3                                system_server=SYS_SMSR;
1185   3      
1186   3                              }
1187   2                      //---===============外部中断进行 报警状态===============================================================
             -==
1188   2      
1189   2                              else if(system_server==SYS_ALARM)    // //回中文短信处理
1190   2                              {
1191   3                                      sms_tmp=smss_para;//
1192   3                                      system_server=SYS_SMSS;
1193   3                              }
1194   2      
1195   2      
1196   2                      //==========================进行电话号码和手机号的设置==================================================
             -=========
1197   2                        else if(system_server==SYS_TEL)   //回英文短信处理
1198   2                        {
1199   3                                      sms_tmp=smss_tel;
1200   3                                      system_server=SYS_SMSS;
1201   3      
1202   3                    }
1203   2                 else if(system_server==SYS_RING)  //来电处理
1204   2                        {
1205   3                                          ring_auto();
1206   3                                       system_server=SYS_SMSR;
1207   3      
1208   3                    }
1209   2                   else if(system_server==SYS_DIAL)  //打电话处理
1210   2                        {
1211   3                                      tel_diat();
1212   3                                 system_server=SYS_SMSR;
1213   3                              }
1214   2      
1215   2      
1216   2              else  system_server=SYS_SMSR;
1217   2      
1218   2              }
1219   1      
1220   1      
1221   1      }
1222          
1223          
1224          
1225          
1226          
1227          
1228          
1229          
1230          
1231          
C51 COMPILER V7.50   CHESHI                                                                11/16/2008 00:57:23 PAGE 21  

1232          
1233          
1234          
1235          
1236          
1237          
1238          
1239          
1240          
1241          
1242          
1243          
1244          
1245          
1246          
1247          
1248        

⌨️ 快捷键说明

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