




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
新版西门子工业GSM模块TC35i新版德国西门子工业级GSM模块TC35i 每套337元 配件清单如下(是普通SIM卡):1。TC35i模块一个2。普通SIM卡座一个3。GSM天线转接线一根 4。GSM小天线一根 5。40芯专用排线及接插件一个TC35i模块的详细英文PDF资料GSM配件详细报价价格(元)TC35I29940芯扁平排线2排线专用接插卡座2TC35I专用天线转接线(SMA接口)15GSM小L形天线(SMA接口)15普通SIM卡座4高档抽屉式SIM卡座18TC35I工业GSM模块 299元40芯扁平排线和排线专用接插卡座 224元TC35I专用天线转接线(SMA接口) 15元一根GSM小L形天线(SMA接口) 15元这是普通的SIM卡座 4元一个 这是高档抽屉式SIM卡座 18元一个LM2941S高性能微波电路专用稳压芯片 6.2元一片TC35I开发技巧:模块的供电电压为3.3V-4.8V。如果电压低于3.3V,模块可自动关机。同时模块在不同工作模式的工作电流不同。在发射脉冲时,电流峰值可高达2A。同时在此电流峰值时,电源电压(送入模块的电压)下降值必需不能超过0.4V。所以该模块对电源的要求较高,电源的内阻+FFC联接线的电阻必需小于200m。还有PIN14(BATT-TMEP)脚外接NTC电阻,对于用锂电池对模块供电的应用系统,可对锂电池温度进行监测,温度过高或过低均可导致模块关机。另有关机的问题,开发文档十分推荐使用AT指令关机,不赞成直接切断电源关机,否测可能导致模块故障,所以我们电源设计必需考虑此问题,以应付系统突然断电的情况。同时我对TC35I模块的结构,工作方式,天线接口,串口,SIM接口均有详细了解。最近我在看AT指令部分。总之我感觉TC35I模块功能强大,是一个较成熟的短信应用模块。应不少客户的要求,我们推出一款TC35I带单片机试验PCB 15元一块,可以缩短开发周期,快速熟悉TC35I。1。支持51单片机,例如常用的AT89S51或者SST89C54RD+,如果采用后者,可以省略上电复位电路、看门狗和非易失存储器2。带两路LED指示灯,可以用于指示GSM状态3。带一路光藕隔离的继电器输出,可以实现短信遥控继电器开关的功能 4。带一路麦克风输入,可以直接监听环境声音5。TC35I的电源采用高性能LM2941S芯片供电,并且单片机可以控制LM2941S芯片的电源开启和关闭,实现TC35断电重启。6。单片机串口可以通过MC14053B切换和TC35I和GPS模块通讯,这个PCB本来用于GPS定位的,如果客户不需要切换,可以自行用线短路。7。单片机单独用LM7805供电,防止互相干扰。8。带抽屉式SIM卡座。客户也可以直接点击进入这个网页购买用TC35I模块开发的GSM短信MODEM,只要GSM短信MODEM的电路板15元一片。下面是我们用西门子3508手机开发的车辆报警系统源程序,西门子3508支持AT指令,和TC35I模块完全相同,所以网友可以借鉴学习。;采用AT89C2051单片机,晶振11.0592MHZ,通讯速率19200,采用TTL串口通讯;手机号码缓存在28H-33H的内存中;短信内容缓存在48H-57H的内存中;短信中心的号码存放在58H-63H的内存中;密码车辆报警存放在64H-73H的内存中;手机号码存放在74H-7F的内存中;P1.0为手机开关机控制端;P1.1为串口接收模块数据OK;P1.2为解防/设防控制端;P1.3;P1.4;P1.5;P1.6;P1.7;P3.0串行接收端(RXD);P3.1串行发射端(TXD);P3.2;P3.3;P3.4;P3.5;P3.7;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAORG 0000HAJMP MAIN;转入主程序ORG 0003H ;外部中断P3.2脚INT0入口地址 NOPNOPNOPNOPNOPNOPRETIORG 000BH;中断陷阱NOPNOPNOPNOPNOPNOPRETIORG 0013H;中断陷阱NOPNOPNOPNOPNOPNOPRETIORG 001BH;中断陷阱NOPNOPNOPNOPNOPNOPRETIORG 0023HNOPNOPNOPNOPRETIFOK EQU P1.0;定义为串口接收模块数据OKKGJ EQU P1.1;定义手机开关机控制端SX EQU P1.2;定义手机模块上线状态JSF EQU P1.3;定义解防/设防控制端(解防 0 设防1)TC EQU P1.4;定义ZK EQU P1.5;定义中控控制端;EQU P1.6;定义KK EQU P1.7;定义BJ EQU P3.2;定义报警触发控制端DY EQU P3.3;定义电源断线控制端CM EQU P3.4;定义车门控制端XL EQU P3.5;定义行李厢JJ EQU P3.6;定义紧急DD EQU P3.7;定义低电压报告MAIN:;以下为主程序进行CPU中断方式设置SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发MOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV TH1,#0FDH;预置初值(按照波特率9600BPS预置初值)MOV TL1,#0FDH;预置初值(按照波特率9600BPS预置初值)SETB TR1;启动定时器T1MOV PCON,#10000000B;设定SMOD为1,波特率翻倍!;以上完成串口19200通讯初始化设置LCALL YUSJ;开机清除接收短消息手机号码CLR KGJ;打开手机MOV DPTR,#1000;延时1秒LCALL DELAYXMS;开机延时SETB KGJ;复位手机控制;MOV DPTR,#10000;延时10秒;LCALL DelayXmS;开机延时LCALL ATEOK;开机发送ATE指令!LCALL CNMI ;发送(AT+CNMI=1,1,0,0,1),短信到达TELCALL SCQBDX;调用删除SIM卡中所有短信的子程序;完成和手机通信握手,和SIM卡删除所有短消息初始化START:LCALL XRDXZX;调用询问手机SIM卡中短信中心号码子程序LCALL XRSJ;读出授权电话号码及密码,写入内存中LCALL MJCSLCALL MJCSCLR SX;模块上线;*KKS:JB RI,UARTI;检测到RI变1就退出JNB BJ,BAOJINJB RI,UARTI;检测到RI变1就退出JNB DY,DYBJJB RI,UARTI;检测到RI变1就退出JNB CM,CMBJJB RI,UARTI;检测到RI变1就退出JNB XL,XLBJJB RI,UARTI;检测到RI变1就退出JNB JJ,JJBJAJMP KKS;*DYBJ:LCALL FDYBJAJMP KKSCMBJ:LCALL FCMBJAJMP KKSXLBJ:LCALL FXLBJAJMP KKSJJBJ:LCALL FJJBJAJMP KKS;报警程序BAOJIN:LCALL CPAS;调用模块状态报告子程序MOV A,25HCJNE A,#34H,BAOJIN1;判断串口数据AJMP BAOJIN3;如果模块正在呼出或通话,就退出BAOJIN1:LCALL CPASMOV A,25HCJNE A,#34H,BAOJIN2AJMP BAOJIN3BAOJIN2:LCALL ATH;调用串口发送ATH挂机子程序LCALL PDOK;判断手机是否回答OK?JZ BAOJIN2;如果没有检测到OK,重复发LCALL FBJDXMOV DPTR,#5000;延时5秒LCALL DelayXmSLCALL ATD;调用串口发程序BAOJIN3:AJMP KKS;*;*;进入串口中断方式接收UARTI:CLR RI;清楚串口中断标志LCALL PDDA;调用串口接收0D/0A数据子程序LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#2BH,PDRD;判断串口数据+PDRCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#43H,EXITT1;判断串口数据CCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据;+CMTI: SM,7短信到达存放位置MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#4DH,EXITT1;判断串口数据MCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#54H,EXITT1;判断串口数据TCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#49H,EXITT1;判断串口数据ICLR RI;软件清除串口中断标记;检测到CMTI的ASCII码-;跳过7个内存(: SM,)MOV R3,#7;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序;短信位置,存放在26H中MOV R0,#26H;数据在内存的存放位置CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给AMOV R0,AINC R0;内存单元地址0;跳过8个内存MOV R3,#8;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序LCALL DXNR;解析短信内容EXITT1:LJMP EXITTPDRD:LCALL RING;电话呼入提示EXITT:CLR RI;软件清除串口中断标记,退出串口中断AJMP KKS;*RING:;电话呼入提示CLR RI;清楚串口中断标志MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#52H,RING1;判断串口数据RCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#49H,RING1;判断串口数据ICLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#4EH,RING1;判断串口数据NCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#47H,RING1;判断串口数据GCLR RI;软件清除串口中断标记LCALL PDDA;调用串口接收0D/0A数据子程序MOV DPTR,#100;延时0.1秒LCALL DelayXmS;发送AT+CLCCLCALL CLCC;调用来电显示指令子程序;跳过20个内存(: 1,1,4,0,0,)MOV R3,#20;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序LCALL DHHM;判断来电号码JZ GJ;跳过13个内存MOV R3,#13;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序MOV DPTR,#100;延时0.1秒LCALL DelayXmS;检查是否继续呼入;等待第二次RING电话呼入提示CLR RI;软件清除串口中断标记LCALL PDDXRI;5秒内检测串口是否有数据返回?JNC RING1;如果5秒内没检查到铃音,就退出;震铃2次后关机,解防/设防;震铃5次后进入通话状态;跳过8个内存MOV R3,#8;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序;*PDLYT:;发送AT+CPAS,模块状态报告MOV R2,#30ZLYKK1:MOV DPTR,#500;延时0.5秒LCALL DelayXmSLCALL CPAS;调用模块状态报告子程序MOV A,25HCJNE A,#30H,ZL1AJMP ZLYK;如果没有检测到呼入,就进入振铃遥控ZL1:DJNZ R2,ZLYKK1MOV R2,#15ZLYKK2:MOV DPTR,#500;延时0.5秒LCALL DelayXmSLCALL CPAS;调用模块状态报告子程序MOV A,25HCJNE A,#30H,ZL2AJMP RING2;如果没有检测到呼入,就退出ZL2:DJNZ R2,ZLYKK2;*LCALL ATA;应答RING1:AJMP RING2GJ:MOV DPTR,#500;延时1秒LCALL DelayXmSLCALL ATH;调用串口发送ATH挂机子程序AJMP RING2ZLYK:MOV DPTR,#500;延时0.5秒LCALL DelayXmSLCALL CPAS;调用模块状态报告子程序MOV A,25HCJNE A,#30H,ZLYKK1;如果没有检测到呼入,就退出JB JSF,ZLYK1SETB JSF;设防AJMP RING2ZLYK1:CLR JSF;解防RING2:RET;*;*DXNR:;信息内容检测MOV DPTR,#1000LCALL DELAYXMSLCALL CMGR;调用读短信子程序MOV R3,#42;跳过42个数据LCALL TGSJ;调用跳过串口数据子程序LCALL DXJC;检测电话号码JZ DPDSQ;如果电话号码是默认值,就检测信息内容;跳过20个内存(含0 4)MOV R3,#20;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序;*PDCX:;查询信息CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#36H,PDJF;判断串口数据6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#37H,PDJF;判断串口数据7CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#45H,PDJF;判断串口数据ECLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#35H,PDJF;判断串口数据5CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#38H,PDJF;判断串口数据8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#42H,PDJF;判断串口数据BCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#45H,PDJF;判断串口数据ECLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#32H,PDJF;判断串口数据2CLR RI;软件清除串口中断标记MOV R3,#8;跳过8个数据LCALL TGSJ;调用跳过串口数据子程序JB JSF,DFASFLCALL FAJF;调用发送解防子程序AJMP SCCDFASF:LCALL FASF;调用发送设防子程序AJMP SCC;*DPDSQ:LCALL PDSQ;*;检测(解)防,PDU码-0489E39632;30 34 38 (39 45 33) 39 36 33 32PDJF:MOV DPTR,#1000;延时1秒LCALL DelayXmSLCALL CMGR;再次调用读短信子程序MOV R3,#74;跳过74个数据LCALL TGSJ;调用跳过串口数据子程序CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#38H,PDSQ;判断串口数据8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#39H,SHEFAN;判断串口数据9CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#45H,PDSQ;判断串口数据ECLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#33H,PDSQ;判断串口数据3CLR RI;软件清除串口中断标记LCALL FANG;调用(防)接收串口数据子程序JZ SCCLR JSF;解防AJMP SCC;*;检测(设)防,PDU码-048BBE9632;30 34 38 (42 42 45) 39 36 33 32SHEFAN:;(设)MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#42H,PDSQ;判断串口数据BCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#42H,PDSQ;判断串口数据BCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#45H,PDSQ;判断串口数据ECLR RI;软件清除串口中断标记LCALL FANG;调用(防)接收串口数据子程序JZ SCSETB JSF;设防SC:AJMP SCC;*;*PDSQ:;短信授权检测;如果电话号码不是默认值,就检测信息内容MOV DPTR,#1000LCALL DelayXmSLCALL CMGR;再次调用读短信子程序MOV R3,#74;跳过74个数据LCALL TGSJ;调用跳过串口数据子程序;校验存放在64H-73H的内存中密码车辆报警CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,64H,SC;判断串口数据8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,65H,SC;判断串口数据FCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,66H,SC;判断串口数据 6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,67H,SC;判断串口数据 6 CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,68H,SC;判断串口数据8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,69H,SC;判断串口数据FCLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6AH,SC;判断串口数据 8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6BH,SC;判断串口数据 6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6CH,SCC;判断串口数据 6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6DH,SCC;判断串口数据2 CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6EH,SCC;判断串口数据ACLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,6FH,SCC;判断串口数据 5CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,70H,SCC;判断串口数据 8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,71H,SCC;判断串口数据B CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,72H,SCC;判断串口数据6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,73H,SCC;判断串口数据 6;车辆报警检测成功!判断是否要修改密码?CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#36H,FSQR;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#35H,FSQR;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#33H,FSQR;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#39H,FSQR;判断串口数据 ;检测到改的汉字内码;密码车辆报警存放在64H-73H的内存中;将改后面的两个汉字作为密码保存到单片机64H-73H的内存中!MOV R3,#16;定义接收数据的总长度为16个MOV R0,#64H;数据从内存的64H开始依次往后存放LCALL GPSSJ;调用接收串口数据子程序MOV R3,#8;跳过8个数据LCALL TGSJ;调用跳过串口数据子程序FSQR:LCALL JPASCC:;删除短信LCALL SCJSDXRETJPA:MOV DPTR,#1000LCALL DELAYXMSLCALL CMGR;再次调用读短信子程序MOV R3,#42;跳过42个数据LCALL TGSJ;调用跳过串口数据子程序;把短信授权的手机号码存储起来;手机号码存放在74H-7F的内存中MOV R3,#12;定义接收手机号码的数据长度MOV R0,#74H;数据在内存的存放位置LCALL GPSSJ;调用接收串口数据子程序MOV DPTR,#1000LCALL DELAYXMS;校验短信授权的手机号码LCALL CMGR;再次调用读短信子程序MOV R3,#42;跳过42个数据LCALL TGSJ;调用跳过串口数据子程序LCALL DXJCJZ JPALCALL FDX;发送授权成功的短信息通知客户!JNZ JPA1LCALL FDX;发送授权成功的短信息通知客户!JPA1:LCALL BCDM;保存授权电话号码及密码RET;发送AT指令!AT:MOV A,#41H;将ASCII码A发送到串口去LCALL FSMOV A,#54H;将ASCII码T发送到串口去LCALL FSRET;发送ATH,挂机ATH:LCALL ATMOV A,#48HLCALL FSLCALL HC;回车!RET;发送ATA,应答ATA:LCALL ATMOV A,#41HLCALL FSLCALL HC;回车!RET;发送AT+C,应答ATC:LCALL ATMOV A,#2BHLCALL FSMOV A,#43HLCALL FSRET;发送HC回车指令!HC:MOV A,#0DHLCALL FSMOV A,#0AHLCALL FSRET;发送AT+CMGD=删除第X条短消息指令!SCDX:LCALL ATCMOV A,#4DHLCALL FSMOV A,#47HLCALL FSMOV A,#44HLCALL FSMOV A,#3DHLCALL FSRET;发送AT+CPBW=CPBW:LCALL ATCMOV A,#50HLCALL FSMOV A,#42HLCALL FSMOV A,#57HLCALL FSMOV A,#3DHLCALL FSRET;发送AT+CPBR=CPBR:LCALL ATCMOV A,#50HLCALL FSMOV A,#42HLCALL FSMOV A,#52HLCALL FSMOV A,#3DHLCALL FSRET;发送AT+CNMI=1,1,0,0,1,短信到达TE CNMI:LCALL ATCMOV A,#4EH;4ELCALL FSMOV A,#4DH;4DLCALL FSMOV A,#49H;49LCALL FSMOV A,#3DH;3DLCALL FSMOV A,#31H;31LCALL FSMOV A,#2CH;2CLCALL FSMOV A,#31H;31LCALL FSMOV A,#2CH;2CLCALL FSMOV A,#30H;30LCALL FSMOV A,#2CH;2CLCALL FSMOV A,#30H;30LCALL FSMOV A,#2CH;2CLCALL FSMOV A,#31H;31LCALL FSLCALL HC;回车!LCALL PDOK;判断手机是否回答OK?JZ CNMI;如果没有检测到OK,重复发RET;发送AT+CMGR=26H,读短信;00 43 00 4D 00 47 00 52 00 3D CMGR:LCALL ATCMOV A,#4DHLCALL FSMOV A,#47HLCALL FSMOV A,#52HLCALL FSMOV A,#3DHLCALL FSMOV A,26HLCALL FSLCALL HC;回车!RET;发送AT+CMGL=4列出所有短消息指令!CMGL:LCALL ATCMOV A,#4DHLCALL FSMOV A,#47HLCALL FSMOV A,#4CHLCALL FSMOV A,#3DHLCALL FSMOV A,#34HLCALL FSLCALL HC;回车!RETFANG:CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#39H,FANG1;判断串口数据9CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#36H,FANG1;判断串口数据6CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#33H,FANG1;判断串口数据3CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#32H,FANG1;判断串口数据2CLR RI;软件清除串口中断标记;跳过8个内存(0D 0A 0D 0A 4F 4B 0D 0A)MOV R3,#8;定义接收数据的总长度LCALL TGSJ;调用接收串口数据子程序AJMP FANG2FANG1:LCALL SBFANG2:RET;和手机握手,单片机发ATE手机回答OK子程序ATEOK:MOV DPTR,#500LCALL DELAYXMS;发送ATE指令!LCALL ATMOV A,#45H;将ASCII码E发送到串口去LCALL FSLCALL HC;回车!LCALL PDOK;判断手机是否回答OK?JZ ATEOK;如果没有检测到OK,重复发RET;发送AT+CSCA?查询短信中心号码子程序CSCA:MOV DPTR,#500LCALL DELAYXMSLCALL ATCMOV A,#53HLCALL FSMOV A,#43HLCALL FSMOV A,#41HLCALL FSMOV A,#3FHLCALL FSLCALL HC;回车!RET;检测手机是否回答短信中心号码?XRDXZX:LCALL CSCAMOV R3,#13;跳过13个数据LCALL TGSJ;调用跳过串口数据子程序JNC XRDXZX1;准备接收短信中心号码MOV R3,#5;循环接收5次MOV R0,#58H;数据从58H-63H内存开始存放TFSJ:INC R0;内存单元地址CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给AMOV R0,ADEC R0CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给AMOV R0,AINC R0;内存单元地址INC R0;内存单元地址DJNZ R3,TFSJ;判断是否已经接收完10个短信中心号码?MOV A,#46H;字母F的固定代码MOV R0,AINC R0;内存单元地址 CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给AMOV R0,AINC R0;内存单元地址;短信中心的号码已经存放在58H-63H的内存中MOV R3,#13;跳过13个数据LCALL TGSJ;调用跳过串口数据子程序LCALL CSCA;调用询问手机SIM卡中短信中心号码子程序MOV R3,#13;跳过13个数据LCALL TGSJ;调用跳过串口数据子程序LCALL JYZXHM;调用校验短信中心号码子程序JZ XRDXZXAJMP XRDXZX2XRDXZX1:LCALL XRDXZXXRDXZX2:RET;检PDU码-3108507905F0;短信中心的号码存放在58H-63H的内存中JYZXHM:CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,59H,JYZXHM1;判断串口数据1CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,58H,JYZXHM1;判断串口数据3CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5BH,JYZXHM1;判断串口数据8CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5AH,JYZXHM1;判断串口数据0CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5DH,JYZXHM1;判断串口数据0CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5CH,JYZXHM1;判断串口数据5CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5FH,JYZXHM1;判断串口数据9CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,5EH,JYZXHM1;判断串口数据7CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,61H,JYZXHM1;判断串口数据5CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,60H,JYZXHM1;判断串口数据0CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,63H,JYZXHM1;判断串口数据0CLR RI;软件清除串口中断标记MOV R3,#13;跳过13个数据LCALL TGSJ;调用跳过串口数据子程序AJMP JYZXHM2JYZXHM1:LCALL SBJYZXHM2:RET;读出授权电话号码及密码,写入内存中XRSJ:MOV DPTR,#2000LCALL DELAYXMSLCALL CPBR;读出授权电话AT+CPBR=1MOV A,#31HLCALL FSLCALL HCLCALL DCSJJNC XRSJ1;手机号码存放在74H-7F的内存中MOV R3,#12;定义接收手机号码的数据长度MOV R0,#74H;数据在内存的存放位置LCALL GPSSJ;调用接收串口数据子程序MOV R3,#16;跳过16个数据LCALL TGSJ;调用跳过串口数据子程序;读出密码AT+CPBR=2LCALL CPBRMOV A,#32HLCALL FSLCALL HCLCALL DCSJJNC XRSJ1;密码车辆报警存放在64H-73H的内存中MOV R3,#16;定义接收手机号码的数据长度MOV R0,#64H;数据在内存的存放位置LCALL GPSSJ;调用接收串口数据子程序MOV R3,#16;跳过16个数据LCALL TGSJ;调用跳过串口数据子程序RETDCSJ:;+CPBR: 1129,MOV R3,#12;跳过12个数据LCALL TGSJ;调用跳过串口数据子程序XRSJ1:RET;写入授权电话号码及密码BCDM:;AT+CPBW=1DH:;写入授权电话号码LCALL CPBWMOV A,#31HLCALL FSMOV A,#2CHLCALL FSMOV A,#22HLCALL FSLCALL JSFSJ;调用写入授权电话号OV A,#22HLCALL FSLCALL HCLCALL PDOKJZ DDH;写入密码;AT+CPBW=2,8F 66 8F 86 62 A5 8B 66XMM:LCALL CPBWMOV A,#32HLCALL FSMOV A,#2CHLCALL FSMOV A,#22HLCALL FS;写入车辆报警4个汉字 从内存64H-73H一共16个内存MOV R3,#16;定义发送的数据总长度为16个MOV R0,#64H;数据从内存的64H开始LCALL HZSZ;调用发送内存数据的子程序MOV A,#22HLCALL FSLCALL HCLCALL PDOKJZ XMMRETJCDYH:CLR RI;清除有串口数据标志LCALL PDRI;2秒内检测串口是否有数据返回?MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#0DH,WD;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#0AH,WD;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#3EH,WD;判断串口数据CLR RI;软件清除串口中断标记LCALL PDRI;等待下一个串口数据MOV A,SBUF;将串口寄存器中接收到的数据给ACJNE A,#20H,WD;判断串口数据 CLR RI;软件清除串口中断标记;判断手机是不是回答代码? 0D 0A 3E 20 MOV A,#0FFH;检测到,对A置1RETWD:CLR A;没有检测到,对A清零CLR RI;清除有串口数据标志RET;检测手机是否回答OK?PDOK:LCALL PDDALCALL PDRI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病合并外伤的护理
- 面部深导后的护理
- 腹腔镜胃癌切除术护理
- 公司消防知识安全培训
- 2025年重庆招标采购从业人员考试(招标采购专业实务初、中级)试题库及答案
- 渠道对账工作汇报
- 酒精戒断综合症患者的护理
- 结核性脑膜炎病人的护理
- 解读心理学书籍
- 2025建筑材料采购合同
- 客户隐私保护承诺函
- 宿舍改造经济效益分析报告
- 仪表施工全过程的管理
- 如何预防与处理跑步中的常见损伤
- MSOP(测量标准作业规范)测量SOP
- 001 220kV升压站事故油池施工方案
- 智慧停车场运营管理项目风险评估报告
- 九年义务教育全日制小学数学教学大纲(试用)
- 出资比例的协议合同
- GB/T 10345-2022白酒分析方法
- GB/T 19418-2003钢的弧焊接头缺陷质量分级指南
评论
0/150
提交评论