您当前的位置:五五电子网电子知识单片机-工控设备51单片机西门子3508手机开发的车辆报警系统源程序 正文
西门子3508手机开发的车辆报警系统源程序

西门子3508手机开发的车辆报警系统源程序

点击数:7514 次   录入时间:03-04 11:55:23   整理:http://www.55dianzi.com   51单片机
INC R0;内存单元地址
DJNZ R3,TFSJ;判断是否已经接收完10个短信中心号码?
MOV  A,#46H;字母F的固定代码
MOV  @R0,A
INC R0;内存单元地址 
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
MOV  @R0,A
INC R0;内存单元地址
;短信中心的号码已经存放在58H-63H的内存中

MOV  R3,#13;跳过13个数据
LCALL TGSJ;调用跳过串口数据子程序

LCALL CSCA;调用询问手机SIM卡中短信中心号码子程序

MOV  R3,#13;跳过13个数据
LCALL TGSJ;调用跳过串口数据子程序

LCALL JYZXHM;调用校验短信中心号码子程序

JZ XRDXZX

AJMP XRDXZX2

XRDXZX1:LCALL XRDXZX

XRDXZX2:
RET

;检测13800597500,PDU码--3108507905F0
;短信中心的号码存放在58H-63H的内存中
JYZXHM:
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,59H,JYZXHM1;判断串口数据1
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,58H,JYZXHM1;判断串口数据3
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5BH,JYZXHM1;判断串口数据8
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5AH,JYZXHM1;判断串口数据0
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5DH,JYZXHM1;判断串口数据0
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5CH,JYZXHM1;判断串口数据5
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5FH,JYZXHM1;判断串口数据9
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,5EH,JYZXHM1;判断串口数据7
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,61H,JYZXHM1;判断串口数据5
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,60H,JYZXHM1;判断串口数据0
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,63H,JYZXHM1;判断串口数据0
CLR RI;软件清除串口中断标记

MOV  R3,#13;跳过13个数据
LCALL TGSJ;调用跳过串口数据子程序

AJMP JYZXHM2
JYZXHM1:LCALL SB

JYZXHM2:

RET

;读出授权电话号码及密码,写入内存中
XRSJ:
MOV  DPTR,#2000
LCALL DELAYXMS

LCALL CPBR;读出授权电话AT+CPBR=1
MOV  A,#31H
LCALL FS

LCALL HC

LCALL DCSJ
JNC XRSJ1

;手机号码存放在74H-7F的内存中

MOV  R3,#12;定义接收手机号码的数据长度
MOV  R0,#74H;数据在内存的存放位置
LCALL GPSSJ;调用接收串口数据子程序

MOV  R3,#16;跳过16个数据
LCALL TGSJ;调用跳过串口数据子程序

;读出密码AT+CPBR=2
LCALL CPBR
MOV  A,#32H
LCALL FS

LCALL HC

LCALL DCSJ
JNC XRSJ1

;密码"车辆报警"存放在64H-73H的内存中

MOV  R3,#16;定义接收手机号码的数据长度
MOV  R0,#64H;数据在内存的存放位置
LCALL GPSSJ;调用接收串口数据子程序

MOV  R3,#16;跳过16个数据
LCALL TGSJ;调用跳过串口数据子程序

RET

DCSJ:
;+CPBR: 1,"13906079959",129,""

MOV  R3,#12;跳过12个数据
LCALL TGSJ;调用跳过串口数据子程序

XRSJ1:

RET

;写入授权电话号码及密码
BCDM:
;AT+CPBW=1,"13906079959"
DDH:;写入授权电话号码
LCALL CPBW
MOV  A,#31H
LCALL FS

MOV  A,#2CH
LCALL FS
MOV  A,#22H
LCALL FS

LCALL JSFSJ;调用写入授权电话号码13906079959

MOV  A,#22H
LCALL FS

LCALL HC

LCALL PDOK
JZ DDH

;写入密码
;AT+CPBW=2,"8F 66 8F 86 62 A5 8B 66"
XMM:
LCALL CPBW
MOV  A,#32H
LCALL FS

MOV  A,#2CH
LCALL FS
MOV  A,#22H
LCALL FS

;写入"车辆报警"4个汉字 从内存64H-73H一共16个内存
MOV  R3,#16;定义发送的数据总长度为16个
MOV  R0,#64H;数据从内存的64H开始
LCALL HZSZ;调用发送内存数据的子程序

MOV  A,#22H
LCALL FS

LCALL HC

LCALL PDOK
JZ XMM

RET

JCDYH:
CLR RI;清除有串口数据标志
LCALL PDRI;2秒内检测串口是否有数据返回?
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#0DH,WD;判断串口数据
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#0AH,WD;判断串口数据
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#3EH,WD;判断串口数据
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#20H,WD;判断串口数据 
CLR RI;软件清除串口中断标记
;判断手机是不是回答>代码? 0D 0A 3E 20 
MOV  A,#0FFH;检测到>,对A置1
RET

WD:CLR A;没有检测到>,对A清零
CLR RI;清除有串口数据标志
RET

;检测手机是否回答OK?
PDOK:
LCALL PDDA

LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#4FH,SB;判断串口数据
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#4BH,SB;判断串口数据 

LCALL PDDA

;判断是不是手机回答的OK代码? 0D 0A 4F 4B 0D 0A 
MOV  A,#0FFH;检测到OK,对A置1

RET

;检测手机是否回答0D/0A?
PDDA:
CLR RI;清除有串口数据标志
LCALL PDRI;2秒内检测串口是否有数据返回?

MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#0DH,SB;判断串口数据
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A
CJNE A,#0AH,SB;判断串口数据
CLR RI;软件清除串口中断标记
RET

SB:CLR A;没有检测到OK,对A清零
CLR RI;清除有串口数据标志

RET

;发送AT+CLCC,来电显示
;00 43 00 4C 00 43 00 43 
CLCC:
LCALL ATC

MOV  A,#4CH
LCALL FS
MOV  A,#43H
LCALL FS
MOV  A,#43H
LCALL FS
LCALL HC;回车!

RET

;发送AT+CPAS查询手机状态子程序
CPAS:
LCALL ATC
MOV  A,#50H
LCALL FS
MOV  A,#41H
LCALL FS
MOV  A,#53H
LCALL FS
LCALL HC;回车!

;手机状态子程序

;跳过9个内存
MOV  R3,#9;定义接收数据的总长度
LCALL TGSJ;调用接收串口数据子程序

MOV  R0,#25H;数据在内存的存放位置
CLR RI;软件清除串口中断标记
LCALL PDRI;等待下一个串口数据
MOV  A,SBUF;将串口寄存器中接收到的数据给A

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


本文关键字:源程序  报警系统  西门子  手机开发  51单片机单片机-工控设备 - 51单片机