📄 tc35i.lst
字号:
160 3 else
161 3 {
162 4 send_hex((htd(j)>>4)+0x30);
163 4 send_hex((htd(j)&0x0f)+0x30);
164 4 }
165 3 send_hex(0x0d);
166 3 while(!hand("OK"));
167 3 clr_buf();
168 3 }
169 2 }
170 1 }
171 /*****************判断缓存中是否含有指定的字符串函数******************/
172 /*函数原型:bit hand(unsigned char *a)
173 /*函数功能:判断缓存中是否含有指定的字符串
174 /*输入参数:unsigned char *a 指定的字符串
175 /*输出参数:bit 1---含有 0---不含有
176 /*调用模块:无
177 /**********************************************************************/
178 bit hand(unsigned char *a)
179 {
C51 COMPILER V7.06 TC35I 10/01/2009 22:01:36 PAGE 4
180 1 if(strstr(rec_buf,a)!=NULL)
181 1 return 1;
182 1 else
183 1 return 0;
184 1 }
185
186 /**************************十六进制转十进制函数**************************/
187 /*函数原型:uint htd(uint a)
188 /*函数功能:十六进制转十进制
189 /*输入参数:要转换的数据
190 /*输出参数:转换后的数据
191 /*调用模块:无
192 /******************************************************************/
193 unsigned int htd(unsigned int a)
194 {
195 1 unsigned int b,c;
196 1 b=a%10;
197 1 c=b;
198 1 a=a/10;
199 1 b=a%10;
200 1 c=c+(b<<4);
201 1 a=a/10;
202 1 b=a%10;
203 1 c=c+(b<<8);
204 1 a=a/10;
205 1 b=a%10;
206 1 c=c+(b<<12);
207 1 return c;
208 1 }
209 /*******************************延时函数*********************************/
210 /*函数原型:delay(unsigned int delay_time)
211 /*函数功能:延时函数
212 /*输入参数:delay_time (输入要延时的时间)
213 /*输出参数:无
214 /*调用模块:无
215 /**********************************************************************/
216 void delay(unsigned int delay_time) //延时子程序
217 {
218 1 for(;delay_time>0;delay_time--);
219 1 }
220 /*******************************串口中断处理函数*********************************/
221 /*函数原型:void Serial(void)
222 /*函数功能:串口中断处理
223 /*输入参数:无
224 /*输出参数:无
225 /*调用模块:无
226 /**********************************************************************/
227 void Serial() interrupt 4 //串口中断处理
228 {
229 1 unsigned char k=0;
230 1 ES=0; //关串口中断
231 1 if(TI) //发送
232 1 {
233 2 TI=0;
234 2 }
235 1 else //接收,处理
236 1 {
237 2 RI=0; //关接收中断
238 2 rec_buf[i]=SBUF;
239 2 if(i<buf_max)
240 2 i++;
241 2 else
C51 COMPILER V7.06 TC35I 10/01/2009 22:01:36 PAGE 5
242 2 i=0;
243 2 RI=0; //关接收中断
244 2 TI=0;
245 2 }
246 1 ES=1; //开串口中断
247 1 }
248
249 /*******************************读短信短信转接电话函数*************************/
250 /*函数原型:void Mes_To_Call(void)
251 /*函数功能:串口中断处理
252 /*输入参数:无
253 /*输出参数:无
254 /*调用模块:无
255 /**********************************************************************/
256 void Mes_To_Call(void)
257 {
258 1 unsigned char a,b,c,j=0;
259 1 unsigned char k;
260 1 if(strstr(rec_buf,"+CMTI")!=NULL)//若字符串中含有"+CMTI"就表示有新的短信
261 1 {
262 2 j++;
263 2 a=*(strstr(rec_buf,"+CMTI")+12);
264 2 b=*(strstr(rec_buf,"+CMTI")+13);
265 2 c=*(strstr(rec_buf,"+CMTI")+14);
266 2 if((b==0x0d)||(c==0x0d))
267 2 {
268 3
269 3 clr_buf();
270 3 send_ascii("AT+CMGR=");//发送读指令
271 3 send_hex(a);
272 3 if(c==0x0d)
273 3 send_hex(b);
274 3 send_hex(0x0d);
275 3 while(!hand("OK"));
276 3 if(strstr(rec_buf,"yao")!=NULL) //读短信内容
277 3 {
278 4 send_ascii("ATD13895767929;"); //拨打电话
279 4 send_hex(0x0d);
280 4 for(k=0;k<50;k++)
281 4 delay(65535);
282 4 }
283 3 else if(strstr(rec_buf,"liang")!=NULL) //读短信内容
284 3 {
285 4 send_ascii("ATD13895709137;"); //拨打电话
286 4 send_hex(0x0d);
287 4 for(k=0;k<80;k++)
288 4 delay(65535);
289 4 }
290 3 else if(hand("13895767929"))
291 3 {
292 4 for(k=0;k<100;k++)
293 4 delay(65535);
294 4 send_ascii("ATD13895709137;");//所有操作都在MT(模块终端)中进行
295 4 send_hex(0x0d);
296 4 for(k=0;k<80;k++)
297 4 delay(65535);
298 4 }
299 3
300 3 clr_buf();
301 3 clr_ms();//删除短信
302 3
303 3
C51 COMPILER V7.06 TC35I 10/01/2009 22:01:36 PAGE 6
304 3 }
305 2 }
306 1
307 1 }
308
309
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1017 ----
CONSTANT SIZE = 121 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 76 13
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -