?? gsmal.asm
字號:
DCSJ:
;+CPBR: 1,"13906079959",129,""
MOV R3,#12;跳過12個數(shù)據(jù)
LCALL TGSJ;調(diào)用跳過串口數(shù)據(jù)子程序
XRSJ1:
RET
;寫入授權(quán)電話號碼及密碼
BCDM:
;AT+CPBW=1,"13906079959"
DDH:;寫入授權(quán)電話號碼
LCALL CPBW
MOV A,#31H
LCALL FS
MOV A,#2CH
LCALL FS
MOV A,#22H
LCALL FS
LCALL JSFSJ;調(diào)用寫入授權(quán)電話號碼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個漢字 從內(nèi)存64H-73H一共16個內(nèi)存
MOV R3,#16;定義發(fā)送的數(shù)據(jù)總長度為16個
MOV R0,#64H;數(shù)據(jù)從內(nèi)存的64H開始
LCALL HZSZ;調(diào)用發(fā)送內(nèi)存數(shù)據(jù)的子程序
MOV A,#22H
LCALL FS
LCALL HC
LCALL PDOK
JZ XMM
RET
JCDYH:
CLR RI;清除有串口數(shù)據(jù)標(biāo)志
LCALL PDRI;2秒內(nèi)檢測串口是否有數(shù)據(jù)返回?
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0DH,WD;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0AH,WD;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#3EH,WD;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#20H,WD;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
;判斷手機(jī)是不是回答>代碼? 0D 0A 3E 20
MOV A,#0FFH;檢測到>,對A置1
RET
WD:CLR A;沒有檢測到>,對A清零
CLR RI;清除有串口數(shù)據(jù)標(biāo)志
RET
;檢測手機(jī)是否回答OK?
PDOK:
LCALL PDDA
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#4FH,SB;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#4BH,SB;判斷串口數(shù)據(jù)
LCALL PDDA
;判斷是不是手機(jī)回答的OK代碼? 0D 0A 4F 4B 0D 0A
MOV A,#0FFH;檢測到OK,對A置1
RET
;檢測手機(jī)是否回答0D/0A?
PDDA:
CLR RI;清除有串口數(shù)據(jù)標(biāo)志
LCALL PDRI;2秒內(nèi)檢測串口是否有數(shù)據(jù)返回?
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0DH,SB;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0AH,SB;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
RET
SB:CLR A;沒有檢測到OK,對A清零
CLR RI;清除有串口數(shù)據(jù)標(biāo)志
RET
;發(fā)送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
;發(fā)送AT+CPAS查詢手機(jī)狀態(tài)子程序
CPAS:
LCALL ATC
MOV A,#50H
LCALL FS
MOV A,#41H
LCALL FS
MOV A,#53H
LCALL FS
LCALL HC;回車!
;手機(jī)狀態(tài)子程序
;跳過9個內(nèi)存
MOV R3,#9;定義接收數(shù)據(jù)的總長度
LCALL TGSJ;調(diào)用接收串口數(shù)據(jù)子程序
MOV R0,#25H;數(shù)據(jù)在內(nèi)存的存放位置
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
MOV @R0,A
INC R0;內(nèi)存單元地址
;跳過8個內(nèi)存
MOV R3,#8;定義接收數(shù)據(jù)的總長度
LCALL TGSJ;調(diào)用接收串口數(shù)據(jù)子程序
RET
;發(fā)送AT+CMGS=150,發(fā)送短信
;00 43 00 4D 00 47 00 53 00 3D
CMGS:
LCALL ATC
MOV A,#4DH
LCALL FS
MOV A,#47H
LCALL FS
MOV A,#53H
LCALL FS
MOV A,#3DH
LCALL FS
MOV A,#31H
LCALL FS
MOV A,#35H
LCALL FS
MOV A,#30H
LCALL FS
LCALL HC;回車!
LCALL JCDYH;調(diào)用等待手機(jī)回答“>”的子程序
JNC CSJ;檢測到>,轉(zhuǎn)入CSJ
MOV DPTR,#2000;延時2秒
LCALL DelayXmS
AJMP CMGS
CSJ:
LCALL DXZT;調(diào)用發(fā)固定的短信字頭089168子程序
LCALL HMCS;調(diào)用發(fā)送短信中心號碼子程序13800597500
LCALL DZZB;調(diào)用短信中部固定數(shù)據(jù)11000B81
LCALL JSFSJ;調(diào)用發(fā)送短信接收方手機(jī)號碼子程序13906079959
LCALL DYZXSJ;調(diào)用下部固定數(shù)據(jù)0008A9
RET
;發(fā)送短信固定字頭089168子程序
DXZT:
MOV A,#30H
LCALL FS
MOV A,#38H
LCALL FS
MOV A,#39H
LCALL FS
MOV A,#31H
LCALL FS
MOV A,#36H
LCALL FS
MOV A,#38H
LCALL FS
RET
;發(fā)送短信中心號碼子程序
;短信中心的號碼存放在58H-63H的內(nèi)存中
HMCS:
MOV A,58H
LCALL FS
MOV A,59H
LCALL FS
MOV A,5AH
LCALL FS
MOV A,5BH
LCALL FS
MOV A,5CH
LCALL FS
MOV A,5DH
LCALL FS
MOV A,5EH
LCALL FS
MOV A,5FH
LCALL FS
MOV A,60H
LCALL FS
MOV A,61H
LCALL FS
MOV A,62H
LCALL FS
MOV A,63H
LCALL FS
RET
;發(fā)送短信中間固定數(shù)據(jù)11000B81子程序
DZZB:
MOV A,#31H
LCALL FS
MOV A,#31H
LCALL FS
MOV A,#30H
LCALL FS
MOV A,#30H
LCALL FS
MOV A,#30H
LCALL FS
MOV A,#42H
LCALL FS
MOV A,#38H
LCALL FS
MOV A,#31H
LCALL FS
RET
;發(fā)送短信息接收方手機(jī)號碼子程序
;手機(jī)號碼存放在74H-7F的內(nèi)存中
JSFSJ:
MOV A,74H
LCALL FS
MOV A,75H
LCALL FS
MOV A,76H
LCALL FS
MOV A,77H
LCALL FS
MOV A,78H
LCALL FS
MOV A,79H
LCALL FS
MOV A,7AH
LCALL FS
MOV A,7BH
LCALL FS
MOV A,7CH
LCALL FS
MOV A,7DH
LCALL FS
MOV A,7EH
LCALL FS
MOV A,7FH
LCALL FS
RET
;發(fā)送短信中間固定數(shù)據(jù)0008A9子程序
DYZXSJ:
MOV A,#30H
LCALL FS
MOV A,#30H
LCALL FS
MOV A,#30H
LCALL FS
MOV A,#38H
LCALL FS
MOV A,#41H
LCALL FS
MOV A,#39H
LCALL FS
RET
;短信發(fā)送檢測,+CMGS: 138
FSCG:CLR RI;清除有串口數(shù)據(jù)標(biāo)志
LCALL PDDXRI;5秒內(nèi)檢測串口是否有數(shù)據(jù)返回?
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0DH,SBB;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#0AH,SBB;判斷串口數(shù)據(jù)
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#2BH,SBB;判斷串口數(shù)據(jù)+
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#43H,SBB;判斷串口數(shù)據(jù)C
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#4DH,SBB;判斷串口數(shù)據(jù)M
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#47H,SBB;判斷串口數(shù)據(jù)G
CLR RI;軟件清除串口中斷標(biāo)記
LCALL PDRI;等待下一個串口數(shù)據(jù)
MOV A,SBUF;將串口寄存器中接收到的數(shù)據(jù)給A
CJNE A,#53H,SBB;判斷串口數(shù)據(jù)S
CLR RI;軟件清除串口中斷標(biāo)記
;檢測到"CMGS"的ASCII碼--------
;跳過5個內(nèi)存(: 116)
MOV R3,#5;定義接收數(shù)據(jù)的總長度
LCALL TGSJ;調(diào)用接收串口數(shù)據(jù)子程序
AJMP FSCG1
SBB:LCALL SB
FSCG1:
RET
;發(fā)送ATD,撥打電話13906079959
ATD:
LCALL AT
MOV A,#44H
LCALL FS
MOV A,75H
LCALL FS
MOV A,74H
LCALL FS
MOV A,77H
LCALL FS
MOV A,76H
LCALL FS
MOV A,79H
LCALL FS
MOV A,78H
LCALL FS
MOV A,7BH
LCALL FS
MOV A,7AH
LCALL FS
MOV A,7DH
LCALL FS
MOV A,7CH
LCALL FS
MOV A,7FH
LCALL FS
MOV A,#3BH
LCALL FS
LCALL HC;回車!
RET
;發(fā)送"恭喜您!您已經(jīng)獲得車輛報警系統(tǒng)的控制權(quán)限!"短消息的子程序
FDX:
MOV DPTR,#500
LCALL DELAYXMS
LCALL CMGS;發(fā)送AT+CMGS=150短信長度子程序
;發(fā)送漢字的字?jǐn)?shù)(24+4個漢字)
MOV A,#33H
LCALL FS
MOV A,#38H
LCALL FS
;準(zhǔn)備發(fā)送"恭喜您!您已經(jīng)獲得車輛報警系統(tǒng)的控制權(quán)限!密碼:"漢字
MOV DPTR,#TAB1
MOV R1,#96;發(fā)送24個漢字
LCALL FSS;調(diào)用發(fā)送漢字的子程序
;發(fā)送"車輛報警"4個漢字 從內(nèi)存64H-73H一共16個內(nèi)存
MOV R3,#16;定義發(fā)送的數(shù)據(jù)總長度為16個
MOV R0,#64H;數(shù)據(jù)從內(nèi)存的64H開始
LCALL HZSZ;調(diào)用發(fā)送內(nèi)存數(shù)據(jù)的子程序
MOV A,#1AH;發(fā)送16進(jìn)制的1A結(jié)束字符
LCALL FS
LCALL FSCG;調(diào)用短信發(fā)送檢測子程序
RET
;發(fā)送"有人動您的車,請察看!"短消息的子程序
FBJDX:
LCALL CMGS;發(fā)送AT+CMGS=150短信長度子程序
;發(fā)送漢字的字?jǐn)?shù)(11個漢字)
MOV A,#31H
LCALL FS
MOV A,#36H
LCALL FS
;準(zhǔn)備發(fā)送"有人動您的車,請察看!"
MOV DPTR,#TAB2
MOV R1,#44;發(fā)送11個漢字
LCALL FSS;調(diào)用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進(jìn)制的1A結(jié)束字符
LCALL FS
RET
;發(fā)送"車輛電源異常,請檢查!"短消息的子程序
FDYBJ:
LCALL CMGS;發(fā)送AT+CMGS=150短信長度子程序
;發(fā)送漢字的字?jǐn)?shù)(11個漢字)
MOV A,#31H
LCALL FS
MOV A,#36H
LCALL FS
;準(zhǔn)備發(fā)送"車輛電源異常,請檢查!"
MOV DPTR,#TAB3
MOV R1,#44;發(fā)送11個漢字
LCALL FSS;調(diào)用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進(jìn)制的1A結(jié)束字符
LCALL FS
LCALL FSCG;調(diào)用短信發(fā)送檢測子程序
JNZ FDYBJ1
MOV DPTR,#500
LCALL DELAYXMS
AJMP FDYBJ
FDYBJ1:
RET
;發(fā)送"車門已被打開,請檢查!"短消息的子程序
FCMBJ:
LCALL CMGS;發(fā)送AT+CMGS=150短信長度子程序
;發(fā)送漢字的字?jǐn)?shù)(11個漢字)
MOV A,#31H
LCALL FS
MOV A,#36H
LCALL FS
;準(zhǔn)備發(fā)送"車門已被打開,請檢查!"
MOV DPTR,#TAB4
MOV R1,#44;發(fā)送11個漢字
LCALL FSS;調(diào)用發(fā)送漢字的子程序
MOV A,#1AH;發(fā)送16進(jìn)制的1A結(jié)束字符
LCALL FS
LCALL FSCG;調(diào)用短信發(fā)送檢測子程序
JNZ FCMBJ1
MOV DPTR,#500
LCALL DELAYXMS
AJMP FCMBJ
FCMBJ1:
RET
;發(fā)送"行李廂異常,請檢查!"短消息的子程序
FXLBJ:
LCALL CMGS;發(fā)送AT+CMGS=150短信長度子程序
;發(fā)送漢字的字?jǐn)?shù)(10個漢字)
MOV A,#31H
LCALL FS
MOV A,#34H
LCALL FS
;準(zhǔn)備發(fā)送"行李廂異常,請檢查!"
MOV DPTR,#TAB5
MOV R1,#40;發(fā)送10個漢字
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -