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

📄 家庭无线报警系统.asm

📁 家庭无线报警系统,主要功能有修改系统密码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
   LCALL FSCG;调用短信发送检测子程序
   JNZ FHWBJ1
   MOV DPTR,#500
   LCALL DELAYXMS
   LJMP FHWBJ
 FHWBJ1:
   RET
;发送"外电源异常,转为电池供电!"短消息的子程序
FDYBJ:
   MOV R7,#34H;短信长度26+15=41
   MOV R6,#31H
   MOV R5,#00H
   LCALL CMGS;发送AT+CMGS=41短信长度子程序
   ;发送汉字的字数(13个汉字)26---1AH
   MOV A,#31H
   LCALL FS
   MOV A,#41H
   LCALL FS
   ;准备发送"外电源异常,转为电池供电!"
   MOV DPTR,#TAB4
   MOV R1,#52;发送13个汉字13*4=52
   LCALL FSS;调用发送汉字的子程序
   MOV A,#1AH;发送16进制的1A结束字符
   LCALL FS
   LCALL FSCG;调用短信发送检测子程序
   JNZ FDYBJ1
   MOV DPTR,#500
   LCALL DELAYXMS
   AJMP FDYBJ
 FDYBJ1:
   RET
/*;发送"车辆被劫,请速与110联系!!"短消息的子程序
FJJBJ:
   MOV R7,#34H;短信长度30+15=45
   MOV R6,#35H
   MOV R5,#00H
   LCALL CMGS;发送AT+CMGS=45短信长度子程序
   ;发送汉字的字数(15个汉字)30---1EH
   MOV A,#31H
   LCALL FS
   MOV A,#45H
   LCALL FS
   ;准备发送"车辆被劫,请速与110联系!!"
   MOV DPTR,#TAB5
   MOV R1,#60;发送15个汉字15*4=60
   LCALL FSS;调用发送汉字的子程序
   MOV A,#1AH;发送16进制的1A结束字符
   LCALL FS
   LCALL FSCG;调用短信发送检测子程序
   JNZ FJJBJ1
   MOV DPTR,#500
   LCALL DELAYXMS
   AJMP FJJBJ
 FJJBJ1:
   RET*/
;发送"系统已设防"短消息的子程序
FASF:
   MOV R7,#32H;短信长度10+15=25
   MOV R6,#35H
   MOV R5,#00H
   LCALL CMGS;发送AT+CMGS=25短信长度子程序
   ;发送汉字的字数(5个汉字)10--0AH
   MOV A,#30H
   LCALL FS
   MOV A,#41H
   LCALL FS
   ;准备发送"系统已设防!"
   MOV DPTR,#TAB6
   MOV R1,#20;发送5个汉字5*4=20
   LCALL FSS;调用发送汉字的子程序
   MOV A,#1AH;发送16进制的1A结束字符
   LCALL FS
   LCALL FSCG;调用短信发送检测子程序
   JNZ FASF1
   MOV DPTR,#500
   LCALL DELAYXMS
   AJMP FASF
 FASF1:
   RET
;发送"系统已解防"短消息的子程序
FAJF:
   MOV R7,#32H;短信长度10+15=25
   MOV R6,#35H
   MOV R5,#00H
   LCALL CMGS;发送AT+CMGS=19短信长度子程序
   ;发送汉字的字数(2个汉字)10--0AH
   MOV A,#30H
   LCALL FS
   MOV A,#41H
   LCALL FS
   ;准备发送"系统已解防!"
   MOV DPTR,#TAB7
   MOV R1,#20;发送5个汉字5*4=20
   LCALL FSS;调用发送汉字的子程序
   MOV A,#1AH;发送16进制的1A结束字符
   LCALL FS
   LCALL FSCG;调用短信发送检测子程序
   JNZ FAJF1
   MOV DPTR,#500
   LCALL DELAYXMS
   AJMP FAJF
 FAJF1:
   RET
;清除接收方手机号码子程序3115706045F5
YUSJ:
   MOV 74H,#"3"
   MOV 75H,#"1"
   MOV 76H,#"1"
   MOV 77H,#"5"
   MOV 78H,#"7"
   MOV 79H,#"0"
   MOV 7AH,#"6"
   MOV 7BH,#"0"
   MOV 7CH,#"4"
   MOV 7DH,#"5"
   MOV 7EH,#"F"
   MOV 7FH,#"5"
   ;初始化"家庭报警系统"的内码"5BB65EAD62A58B667CFB7EDF"
MMCCH: 
	MOV DPTR,#TAB10
   MOV R1,#24
   MOV R0,#5CH
   MOV R3,#00H
 ZSR:
   MOV A,R3
   MOVC A,@A+DPTR
   MOV @R0,A
   INC R0
   INC R3
   DJNZ R1,ZSR
   RET
;检测13906079959
DHHM:
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,75H,DHHM1;判断串口数据1
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,74H,DHHM1;判断串口数据3
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,77H,DHHM1;判断串口数据9
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,76H,DHHM1;判断串口数据0
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,79H,DHHM1;判断串口数据6
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,78H,DHHM1;判断串口数据0
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,7BH,DHHM1;判断串口数据7
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,7AH,DHHM1;判断串口数据9
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,7DH,DHHM1;判断串口数据9
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,7CH,DHHM1;判断串口数据5
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   CJNE A,7FH,DHHM1;判断串口数据9
   CLR RI;软件清除串口中断标记
   AJMP DHHM2
 DHHM1:
   LCALL SB;CLR A
 DHHM2:
   RET
;删除SIM卡中所有短信的子程序
SCQBDX:
   LCALL CMGL
   LCALL PDOK
   JNZ DXSCT
   JNB RI,$
   MOV DPTR,#100
   LCALL DELAYXMS
   MOV R2,#1
DXSC:
   LCALL DXSZ;调用将R2转化成两位ASCII数值子程序
   ;十位为20H,个位为21H
   LCALL SCDD;调用删除短信程序,同一条短信删除1次
   INC R2
   CJNE R2,#26,DXSC;删除超过25条也退出循环
 DXSCT:
   RET
SCDD:
   LCALL SCDX;调用删除第X条短信指令子程序
   MOV A,20H
   LCALL FS
   MOV A,21H
   LCALL FS
   LCALL HC
   MOV DPTR,#1200
   LCALL DELAYXMS
   RET
;删除短信的子程序
SCJSDX:
   MOV R2,#1
 DXSC1:
   LCALL DXSZ;调用将R2转化成两位ASCII数值子程序
   ;十位为20H,个位为21H
   LCALL SCDD1;调用删除短信程序,同一条短信删除1次
   INC R2
   CJNE R2,#5,DXSC1;删除超过25条也退出循环
   RET
;取出删除短信条数的十位/个位
DXSZ:
   MOV A,R2
   MOV B,#10 ;取出十位和个位
   DIV AB
   ORL A,#00110000B;调整为ASCII码
   MOV 20H,A ;十位在a
   MOV 21H,B ;个位在b
   MOV A,21H
   ORL A,#00110000B;调整为ASCII码
   MOV 21H,A
   RET
SCDD1:
   LCALL SCDX;调用删除第X条短信指令子程序
   MOV A,20H
   LCALL FS
   MOV A,21H
   LCALL FS
   LCALL HC
   MOV DPTR,#1000
   LCALL DELAYXMS
   RET
;判断串口数据是否发送成功?超时退出
PDTI:;占用R4/R5/R1
   MOV R1,#200;5毫秒超时退出!
 PSZ:
   MOV R4,#5
 DT2:MOV R5,#5
 DT1:JB TI,KQ
   DJNZ R5,DT1
   JB TI,KQ
   DJNZ R4,DT2;25毫秒检测一次
   DJNZ R1,PSZ;超时退出
 KQ:
   RET
;判断串口数据是否接收成功?超时退出
PDRI:;占用R4/R5/R1
   MOV R1,#60;300毫秒超时退出!
 PBZ:MOV R4,#200
 DY2:MOV R5,#25
 DY1:JB RI,KKQ;检测到RI变1就退出
   DJNZ R5,DY1;25微秒检测一次
   JB RI,KKQ;检测到RI变1就退出
   SETB C;程序正常时C=1
   DJNZ R4,DY2;内循环50毫秒
   DJNZ R1,PBZ;超时退出
   CLR C;对串口接收超时退出C=0
   CLR RI;清除有串口数据标志
 KKQ:
   RET
;判断短信是否发送成功?超时退出
PDDXRI:;占用R4/R5/R1
   MOV R1,#255;5秒超时退出!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 PBZ1:MOV R4,#200
 DY22:MOV R5,#25
 DY33:JB RI,KKQ1;检测到RI变1就退出
   DJNZ R5,DY33;延时25微秒检测一次
   JB RI,KKQ1;检测到RI变1就退出
   SETB C;程序正常时C=1
   DJNZ R4,DY22;内循环50毫秒
   DJNZ R1,PBZ1;超时退出
   CLR C;对串口接收超时退出C=0
   CLR RI;清除有串口数据标志
 KKQ1:
   RET
;跳过接收数据的子程序(专门针对PDU码数据)
TGSJ:
   SETB C
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   JNC XPAS;如果检测到发生超时退出,就跳出这段程序
   DJNZ R3,TGSJ;判断是否已经收全部数据?
 XPAS:
   RET
;接收短信授权后的手机号码子程序
GPSSJ:
   CLR RI;软件清除串口中断标记
   LCALL PDRI;等待下一个串口数据
   MOV A,SBUF;将串口寄存器中接收到的数据给A
   MOV @R0,A
   CJNE A,#22H,SSJ;检测到 " 来电号码的最后就退出
	MOV @R0,#" "
	RET
SSJ:
   INC R0;内存单元地址
   DJNZ R3,GPSSJ;判断是否已经收全部数据?
   RET
FS:
   CLR TI;先对TI进行软件复位
   MOV SBUF,A
   LCALL PDTI;调用检测TI变为高电平的子程序
   RET
;发送汉字的子程序(DPTR存放汉字内码、R1存放汉字的字数X2)
FSS:
   MOV R3,#0
 CF2:CLR TI;对TI软件复位
   MOV A,R3
   MOVC A,@A+DPTR;查表汉字的内码
   MOV SBUF,A
   JNB TI,$;如果TI为0说明发送没有完成,程序等待
   INC R3
   MOV A,R3
   DJNZ R1,CF2
   RET
;这是发送内存数据的子程序
HZSZ:
   CLR TI;先对TI进行软件复位
   MOV A,@R0
   MOV SBUF,A
   LCALL PDTI;调用检测TI变为高电平的子程序
   INC R0
   DJNZ R3,HZSZ
   RET
;鸣叫一声子程序
MJCS:
   SETB FOK
   MOV DPTR,#2500
   LCALL DELAYXMS
   CLR FOK
   RET
;***************************************************
;***************************************************
;入口参数:DPTR=MS(毫秒1-65535mS)
DELAYXMS:
   MOV A,DPH
   MOV R7,#01
   JZ DF1 
   MOV R7,DPH
 DF1: 
   MOV A,DPL
   MOV R6,#1
   JZ DEL1
   MOV R6,DPL
 DEL1: 
   MOV B,#0
   DJNZ B,$
   DJNZ B,$
   DJNZ R6,DEL1
   DJNZ R7,DF1
   RET
;恭喜您!您已经获得家庭报警系统的控制权限!密码: 38
TAB1:
   DB "606D559C60A8002160A85DF27ECF83B75F975BB65EAD62A58B667CFB7EDF768463A752366743965000215BC67801003A"
;大门已被打开,请检查!16H
TAB2:
   DB "592795E85DF288AB62535F00002C8BF768C067E50021"
;家里有人走动,请注意!16H
TAB3:
   DB "5BB691CC67094EBA8D7052A8FF0C8BF76CE8610F0021"
;外电源异常,转由电池供电!1AH
TAB4:
   DB "591675356E905F025E38002C8F6C753175356C604F9B75350021"
;车辆被劫,请速与110联系!!1EH
TAB5:
   DB "8F668F8688AB52AB002C8BF7901F4E0E00310031003080547CFB00210021"
;系统已设防 0AH
TAB6:
   DB "7CFB7EDF5DF28BBE9632"
;系统已解防 0AH
TAB7:
   DB "7CFB7EDF5DF289E39632" 
;LCD 第一行显示信息
TAB8:
   DB "GSM BAO JING    "
;LCD 第二行显示信息
TAB9:
   DB "VER:1.0         " 
;密码内容
TAB10:
;   DB "5BB65EAD62A58B667CFB7EDF"
	DB "003600360036003600360036"
;固定短信息头
TAB11:
   DB "0011000D9168"
;密码
MM:
   DB "5BC67801"
;查询
CX:
   DB "67E58BE2"
;初始化
CCH:
	DB "21D59CB5316"
END

⌨️ 快捷键说明

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