?? 家庭無線報警系統(tǒng).asm
字號:
LCALL FSCG;調用短信發(fā)送檢測子程序
JNZ FHWBJ1
MOV DPTR,#500
LCALL DELAYXMS
LJMP FHWBJ
FHWBJ1:
RET
;發(fā)送"外電源異常,轉為電池供電!"短消息的子程序
FDYBJ:
MOV R7,#34H;短信長度26+15=41
MOV R6,#31H
MOV R5,#00H
LCALL CMGS;發(fā)送AT+CMGS=41短信長度子程序
;發(fā)送漢字的字數(shù)(13個漢字)26---1AH
MOV A,#31H
LCALL FS
MOV A,#41H
LCALL FS
;準備發(fā)送"外電源異常,轉為電池供電!"
MOV DPTR,#TAB4
MOV R1,#52;發(fā)送13個漢字13*4=52
LCALL FSS;調用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進制的1A結束字符
LCALL FS
LCALL FSCG;調用短信發(fā)送檢測子程序
JNZ FDYBJ1
MOV DPTR,#500
LCALL DELAYXMS
AJMP FDYBJ
FDYBJ1:
RET
/*;發(fā)送"車輛被劫,請速與110聯(lián)系!!"短消息的子程序
FJJBJ:
MOV R7,#34H;短信長度30+15=45
MOV R6,#35H
MOV R5,#00H
LCALL CMGS;發(fā)送AT+CMGS=45短信長度子程序
;發(fā)送漢字的字數(shù)(15個漢字)30---1EH
MOV A,#31H
LCALL FS
MOV A,#45H
LCALL FS
;準備發(fā)送"車輛被劫,請速與110聯(lián)系!!"
MOV DPTR,#TAB5
MOV R1,#60;發(fā)送15個漢字15*4=60
LCALL FSS;調用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進制的1A結束字符
LCALL FS
LCALL FSCG;調用短信發(fā)送檢測子程序
JNZ FJJBJ1
MOV DPTR,#500
LCALL DELAYXMS
AJMP FJJBJ
FJJBJ1:
RET*/
;發(fā)送"系統(tǒng)已設防"短消息的子程序
FASF:
MOV R7,#32H;短信長度10+15=25
MOV R6,#35H
MOV R5,#00H
LCALL CMGS;發(fā)送AT+CMGS=25短信長度子程序
;發(fā)送漢字的字數(shù)(5個漢字)10--0AH
MOV A,#30H
LCALL FS
MOV A,#41H
LCALL FS
;準備發(fā)送"系統(tǒng)已設防!"
MOV DPTR,#TAB6
MOV R1,#20;發(fā)送5個漢字5*4=20
LCALL FSS;調用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進制的1A結束字符
LCALL FS
LCALL FSCG;調用短信發(fā)送檢測子程序
JNZ FASF1
MOV DPTR,#500
LCALL DELAYXMS
AJMP FASF
FASF1:
RET
;發(fā)送"系統(tǒng)已解防"短消息的子程序
FAJF:
MOV R7,#32H;短信長度10+15=25
MOV R6,#35H
MOV R5,#00H
LCALL CMGS;發(fā)送AT+CMGS=19短信長度子程序
;發(fā)送漢字的字數(shù)(2個漢字)10--0AH
MOV A,#30H
LCALL FS
MOV A,#41H
LCALL FS
;準備發(fā)送"系統(tǒng)已解防!"
MOV DPTR,#TAB7
MOV R1,#20;發(fā)送5個漢字5*4=20
LCALL FSS;調用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進制的1A結束字符
LCALL FS
LCALL FSCG;調用短信發(fā)送檢測子程序
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"
;初始化"家庭報警系統(tǒng)"的內碼"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;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,75H,DHHM1;判斷串口數(shù)據(jù)1
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,74H,DHHM1;判斷串口數(shù)據(jù)3
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,77H,DHHM1;判斷串口數(shù)據(jù)9
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,76H,DHHM1;判斷串口數(shù)據(jù)0
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,79H,DHHM1;判斷串口數(shù)據(jù)6
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,78H,DHHM1;判斷串口數(shù)據(jù)0
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,7BH,DHHM1;判斷串口數(shù)據(jù)7
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,7AH,DHHM1;判斷串口數(shù)據(jù)9
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,7DH,DHHM1;判斷串口數(shù)據(jù)9
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,7CH,DHHM1;判斷串口數(shù)據(jù)5
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,7FH,DHHM1;判斷串口數(shù)據(jù)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數(shù)值子程序
;十位為20H,個位為21H
LCALL SCDD;調用刪除短信程序,同一條短信刪除1次
INC R2
CJNE R2,#26,DXSC;刪除超過25條也退出循環(huán)
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數(shù)值子程序
;十位為20H,個位為21H
LCALL SCDD1;調用刪除短信程序,同一條短信刪除1次
INC R2
CJNE R2,#5,DXSC1;刪除超過25條也退出循環(huán)
RET
;取出刪除短信條數(shù)的十位/個位
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
;判斷串口數(shù)據(jù)是否發(fā)送成功?超時退出
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
;判斷串口數(shù)據(jù)是否接收成功?超時退出
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;內循環(huán)50毫秒
DJNZ R1,PBZ;超時退出
CLR C;對串口接收超時退出C=0
CLR RI;清除有串口數(shù)據(jù)標志
KKQ:
RET
;判斷短信是否發(fā)送成功?超時退出
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;內循環(huán)50毫秒
DJNZ R1,PBZ1;超時退出
CLR C;對串口接收超時退出C=0
CLR RI;清除有串口數(shù)據(jù)標志
KKQ1:
RET
;跳過接收數(shù)據(jù)的子程序(專門針對PDU碼數(shù)據(jù))
TGSJ:
SETB C
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
JNC XPAS;如果檢測到發(fā)生超時退出,就跳出這段程序
DJNZ R3,TGSJ;判斷是否已經(jīng)收全部數(shù)據(jù)?
XPAS:
RET
;接收短信授權后的手機號碼子程序
GPSSJ:
CLR RI;軟件清除串口中斷標記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
MOV @R0,A
CJNE A,#22H,SSJ;檢測到 " 來電號碼的最后就退出
MOV @R0,#" "
RET
SSJ:
INC R0;內存單元地址
DJNZ R3,GPSSJ;判斷是否已經(jīng)收全部數(shù)據(jù)?
RET
FS:
CLR TI;先對TI進行軟件復位
MOV SBUF,A
LCALL PDTI;調用檢測TI變?yōu)楦唠娖降淖映绦? RET
;發(fā)送漢字的子程序(DPTR存放漢字內碼、R1存放漢字的字數(shù)X2)
FSS:
MOV R3,#0
CF2:CLR TI;對TI軟件復位
MOV A,R3
MOVC A,@A+DPTR;查表漢字的內碼
MOV SBUF,A
JNB TI,$;如果TI為0說明發(fā)送沒有完成,程序等待
INC R3
MOV A,R3
DJNZ R1,CF2
RET
;這是發(fā)送內存數(shù)據(jù)的子程序
HZSZ:
CLR TI;先對TI進行軟件復位
MOV A,@R0
MOV SBUF,A
LCALL PDTI;調用檢測TI變?yōu)楦唠娖降淖映绦? INC R0
DJNZ R3,HZSZ
RET
;鳴叫一聲子程序
MJCS:
SETB FOK
MOV DPTR,#2500
LCALL DELAYXMS
CLR FOK
RET
;***************************************************
;***************************************************
;入口參數(shù):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
;恭喜您!您已經(jīng)獲得家庭報警系統(tǒng)的控制權限!密碼: 38
TAB1:
DB "606D559C60A8002160A85DF27ECF83B75F975BB65EAD62A58B667CFB7EDF768463A752366743965000215BC67801003A"
;大門已被打開,請檢查!16H
TAB2:
DB "592795E85DF288AB62535F00002C8BF768C067E50021"
;家里有人走動,請注意!16H
TAB3:
DB "5BB691CC67094EBA8D7052A8FF0C8BF76CE8610F0021"
;外電源異常,轉由電池供電!1AH
TAB4:
DB "591675356E905F025E38002C8F6C753175356C604F9B75350021"
;車輛被劫,請速與110聯(lián)系!!1EH
TAB5:
DB "8F668F8688AB52AB002C8BF7901F4E0E00310031003080547CFB00210021"
;系統(tǒng)已設防 0AH
TAB6:
DB "7CFB7EDF5DF28BBE9632"
;系統(tǒng)已解防 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 + -