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

📄 m32.lst

📁 这是用W77E58编写的控制GSM模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 18  

1035   1               pSrc += 2;        // 指针后移        
1036   1      
1037   1               gsmString2Bytes(pSrc, (unsigned char*)&TP_DCS, 2);    // 取编码方式(TP-DCS)     
1038   1               pSrc += 2;        // 指针后移     
1039   1               gsmSerializeNumbers(pSrc, TP_SCTS, 14);                    // 服务时间戳字符串(TP_SCTS)      
1040   1               pSrc += 14;       // 指针后移     
1041   1               gsmString2Bytes(pSrc, &tmp, 2);    // 用户信息长度(TP-UDL)     
1042   1               pSrc += 2;        // 指针后移     
1043   1      
1044   1      
1045   1               if(TP_DCS == GSM_7BIT)         
1046   1               {         
1047   2                      // 7-bit解码         
1048   2                      nDstLength = gsmString2Bytes(pSrc, ans, tmp & 7 ? (int)tmp * 7 / 4 + 2 : (int)tmp * 7 / 4);  
1049   2                      // 格式转换         
1050   2                      gsmDecode7bit(ans, TP_UD, nDstLength);    
1051   2                      
1052   2                      putstring1("TP_UD=\r\n");
1053   2                      putstring1(TP_UD);
1054   2                      putstring1("\r\n");
1055   2                      
1056   2      
1057   2                      // 转换到TP-DU         
1058   2                      nDstLength = tmp;     
1059   2                }     
1060   1                else if(TP_DCS == GSM_UCS2)     
1061   1                {         
1062   2                  #if 0
                           // UCS2解码         
                                nDstLength = gsmString2Bytes(pSrc, ans, tmp * 2);          // 格式转换         
                                nDstLength = gsmDecodeUcs2(ans, TP_UD, nDstLength);    // 转换到TP-DU     
                          #endif
1067   2            }     
1068   1                else     
1069   1                {         
1070   2                              // 8-bit解码         
1071   2                       nDstLength = gsmString2Bytes(pSrc, ans, tmp * 2);       // 格式转换         
1072   2                       //nDstLength = gsmDecode8bit(ans, TP_UD, nDstLength);    // 转换到TP-DU     
1073   2            }          
1074   1      
1075   1               
1076   1            //返回目标字符串长度     
1077   1            return nDstLength; 
1078   1      } 
1079          
1080          
1081          int gsmDeleteSms(int xdata index)
*** WARNING C258 IN LINE 1081 OF M32.C: 'index': mspace on parameter ignored
1082          {
1083   1             int xdata n;
1084   1             ClearBuf(ans,256);  
1085   1             sprintf(ans,"AT+CMGD=");
1086   1             sprintf(cmd,"%d",index);
1087   1                 strcat(ans,cmd);
1088   1             strcat(ans,"\r\n");
1089   1             
1090   1                 putstring1(ans);
1091   1                 putstring1("\r\n");
1092   1                 
1093   1                 SysTimer=_10_SEC;
1094   1             while(SysTimer)
1095   1                 {
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 19  

1096   2                   ATSend(ans); 
1097   2               ReadSerail(ans, 128, &n,5);  
*** WARNING C214 IN LINE 1097 OF M32.C: 'Argument': conversion: pointer to non-pointer
1098   2               if((strstr(ans,"OK"))!= NULL) return 1;
1099   2               ATSend("AT\r\n");
1100   2                       delay_ms(20);
1101   2            }
1102   1      
1103   1      }
1104          
1105          
1106          
1107          
1108          
1109          
1110          
1111          
1112          /*********************************************************************************************************
             -*****
1113          
1114             GSM_IO10: L->H-L,H=40-50 ms,wake up MCU,and gsm set IO11 to low.
1115             GSM_ROW4:              ,Wake up GSM.
1116          
1117          
1118             Host to GSM:   check GSM sleep? if yes,Host pull low GSM_ROW4 to low 50 ms,at once send AT command.
1119          **********************************************************************************************************
             -****/
1120          // SM        station
1121          // MS        Me
1122          /*********************************************************************************************************
             -********
1123           1.设置短消息中心号码:       AT+CSCA="+8613800755500" <CR>. (地区不同,设置不同)
1124           2.设置短消息格式:           AT+CMGF=0<CR>                  (0==PDU mode)
1125           3.设置短消息存放的位置:     AT+CPMS="SM"<CR>               (SM表示将短消息存放在SIM卡中) 
1126           4.设置短消息到达通知:       AT+CNMI=1,1,0,0,1<CR>          (此命令可以使GSM模块在短消息到达后向MCU发送指
             -令:AT+CMTI:"SM",INDEX<CR>)
1127          
1128          **********************************************************************************************************
             -*******/
1129          void gsmModule_init(void)
1130          {
1131   1          
1132   1          
1133   1                GSM_PWON=HIGH;
1134   1            delay_ms(5);
1135   1            GSM_PWON=LOW;
1136   1            delay_ms(200);   //Over 120 ms,M32 power on.
1137   1            GSM_PWON=HIGH;
1138   1            delay_ms(200);   
1139   1           
1140   1                putbyte('A');
1141   1            putbyte('T');
1142   1            putbyte('\r');
1143   1      
1144   1            gsm_task = 0;    
1145   1            AlarmFlag = FALSE; 
1146   1                SysTimer=20;
1147   1                while(SysTimer);
1148   1      
1149   1            //
1150   1                 
1151   1                 
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 20  

1152   1            putbyte('A');
1153   1            putbyte('T');
1154   1            putbyte('\r');
1155   1            SysTimer=20;
1156   1                while(SysTimer);
1157   1               
1158   1            putstring1("\r\n");
1159   1            putstring1("Reset GSM Module OK!\r\n");
1160   1            //AlarmFlag = 1;      
1161   1            //sprintf(cmd, "ATD13554997942;\r\n");                  // 生成命令  
1162   1            //putstring(cmd);                           // 先输出命令串
1163   1            ClearBuf(SCA,16);               
1164   1               
1165   1      }
1166          
1167          
1168          
1169          
1170          void HangUpCall(void)
1171          {
1172   1      
1173   1            //sprintf(cmd, "AT+CHUP\r\n");             // 生成命令  
1174   1            ATSend("ATH\r\n");             // 生成命令  
1175   1      
1176   1      }
1177          
1178          
1179          void RecieveCall(void)  //接电话,回应呼叫
1180          {
1181   1      
1182   1            sprintf(cmd, "ATA\r\n");                  // 生成命令  
1183   1            putstring(cmd);                           // 先输出命令串
1184   1      
1185   1      
1186   1      }
1187          
1188          
1189          void Recall(void)
1190          {
1191   1            sprintf(cmd, "ATDL\r\n");                  // 生成命令  
1192   1            putstring(cmd);                           // 先输出命令串
1193   1      
1194   1      
1195   1      }
1196          
1197          
1198          
1199          
1200          //int xdata gpsWait;
1201          
1202          
1203          uchar gsmMain(void)
1204          {
1205   1            int i,n;
1206   1                unsigned char nSmscLength;          // SMSC串长度 
1207   1            uchar xdata* ptr;
1208   1           
1209   1          
1210   1             if(GPSTimerReq==TRUE)
1211   1                {
1212   2               if(GPSTimer30==0)
1213   2                   {
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 21  

1214   3                  GPSTimer30=_30_SEC;
1215   3                  gsm_task = 40; 
1216   3      
1217   3                       }
1218   2      
1219   2      
1220   2                }
1221   1                  
1222   1      
1223   1            
1224   1                switch(gsm_task)
1225   1                {
1226   2                 case 0:
1227   2                      ATSend("AT\r");
1228   2                                  ReadSerail(ans, 128, &n,5);
*** WARNING C214 IN LINE 1228 OF M32.C: 'Argument': conversion: pointer to non-pointer
1229   2                      if(strstr(ans,"\r\nOK")==NULL)
1230   2                                      {
1231   3                          putbyte('\r');
1232   3                          delay_ms(200);
1233   3                                          break;
1234   3                                      }
1235   2      
1236   2                      putstring1("\r\n");
1237   2                              putstring1("Start Debug GSM:\r\n");
1238   2              
1239   2                                                      
1240   2                      gsmInitPhoneBook();
1241   2      
1242   2                              
1243   2            #if 0
                              gsmDeletePhone(1);
                                              //gsmPhoneBookTask(GSM_DELET_PHONE,NULL,NULL,1);
                                              
                                              ATSend("AT+CPBF=\"GWM\"\r");              
                              ReadSerail(ans, 256, &n,5);
                              putstring1(ans); 
                              putstring1("\r\n");
                        #endif                        
1252   2                                      gsm_task++;
1253   2                                      break;
1254   2      
1255   2                 case 1:                 
1256   2                                      if(strlen(SCA))
1257   2                                      {
1258   3                                         gsm_task++;
1259   3                                 break;
1260   3                                      }
1261   2                                      putstring1("Read SMC:\r\n"); 
1262   2                                  //读短消息中心号码:
1263   2                                      ATSend("AT+CSCA?\r");             
1264   2                      ReadSerail(ans, 128, &n,5);
*** WARNING C214 IN LINE 1264 OF M32.C: 'Argument': conversion: pointer to non-pointer
1265   2                                      if((strstr(ans, "+CSCA: ")) == NULL)
1266   2                                      {
1267   3                          putbyte('\r');   
1268   3                                      delay_ms(20);
1269   3                                              break;
1270   3                                      }
1271   2                                      if((ptr=strstr(ans, "\"+")) == NULL)
1272   2                                      {
1273   3                                      putbyte('\r');   
C51 COMPILER V7.50   M32                                                                   04/04/2007 15:01:44 PAGE 22  

1274   3                                          delay_ms(20);
1275   3                                              break;
1276   3                      
1277   3                                      }       
1278   2                                      else                               
1279   2                                      {
1280   3                                           ptr +=2;  //skip '"+'
1281   3                                           if(strncpy(SCA,ptr,16) != NULL)  //SCA[]="+8613800755500"
1282   3                           {
1283   4                               for(i=0;i<16;i++)
1284   4                               {
1285   5                                  if((SCA[i]=='\"') && (SCA[i+1]==',') )   
1286   5                                                          {
1287   6                                                                      S

⌨️ 快捷键说明

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