📄 sms7.asm
字号:
CLR EA
MOV R0,#BUF_DATA+74
MOV A,@R0
CJNE A,#35H,DIS_SMS
INC R0
CJNE @R0,#31H,REG_ERR
INC R0
CJNE @R0,#34H,REG_ERR
INC R0
CJNE @R0,#31H,REG_ERR
INC R0
CJNE @R0,#38H,REG_ERR
INC R0
CJNE @R0,#42H,REG_ERR
INC R0
CJNE @R0,#42H,REG_ERR
INC R0
CJNE @R0,#38H,REG_ERR
CLR MSG_EN
CLR READYLED
SETB EA
AJMP REG_OK
DIS_SMS:
CLR EA
CJNE @R0,#37H,REG_ERR
INC R0
CJNE @R0,#39H,REG_ERR
INC R0
CJNE @R0,#38H,REG_ERR
INC R0
CJNE @R0,#31H,REG_ERR
INC R0
CJNE @R0,#36H,REG_ERR
INC R0
CJNE @R0,#42H,REG_ERR
INC R0
CJNE @R0,#36H,REG_ERR
INC R0
CJNE @R0,#32H,REG_ERR
SETB MSG_EN
SETB READYLED
SETB EA
AJMP REG_OK
REG_ERR:LJMP REG_ERRIN
REG_OK:
CLR EA
CLR SMSLED
MOV R0,#BUF_SEND
MOV DPTR,#TABLE_RACK
MOV R2,#12
REG_OK1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_OK1
MOV @R0,#41H
INC R0
MOV DPTR,#TABLE_MSGSTART
MOV R2,#4
REG_OK2:
CLR A ;装载信息头到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_OK2
REG_OK3:
MOV R_EPAGE,#00H
MOV R_EADDR,#01H ;装载短信中心号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,REG_OK3
MOV DPTR,#TABLE_MSGHEAD
MOV R2,#8
REG_OK4:
CLR A ;装载信息头2到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_OK4
REG_OK5:
MOV R_EPAGE,#01h
MOV R_EADDR,#01H ;装载目标号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,REG_OK5
MOV DPTR,#TABLE_MSGCONTRAL
MOV R2,#6
REG_OK6:
CLR A ;装载信息控制码到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_OK6
MOV @R0,#30H
INC R0
MOV @R0,#38H
INC R0
MOV DPTR,#TABLE_SETOK
MOV R2,#17
REG_OK7:
CLR A ;装载信息控制码到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_OK7
LCALL SMS_SEND
ajmp sms_delete
REG_ERRIN:
CLR EA
CLR SMSLED
MOV R0,#BUF_SEND
MOV DPTR,#TABLE_RACK
MOV R2,#12
REG_ERR1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_ERR1
MOV @R0,#41H
INC R0
MOV DPTR,#TABLE_MSGSTART
MOV R2,#4
REG_ERR2:
CLR A ;装载信息头到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_ERR2
REG_ERR3:
MOV R_EPAGE,#00H
MOV R_EADDR,#01H ;装载短信中心号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,REG_ERR3
MOV DPTR,#TABLE_MSGHEAD
MOV R2,#8
REG_ERR4:
CLR A ;装载信息头2到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_ERR4
REG_ERR5:
MOV R_EPAGE,#01h
MOV R_EADDR,#01H ;装载目标号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,REG_ERR5
MOV DPTR,#TABLE_MSGCONTRAL
MOV R2,#6
REG_ERR6:
CLR A ;装载信息控制码到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_ERR6
MOV @R0,#30H
INC R0
MOV @R0,#38H
INC R0
MOV DPTR,#TABLE_SETerr
MOV R2,#17
REG_ERR7:
CLR A ;装载信息控制码到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,REG_ERR7
LCALL SMS_SEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;删除短信
SMS_DElete:
MOV R0,#BUF_SEND
MOV DPTR,#TABLE_DMSG
MOV R2,#8
DREG_1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,DREG_1
MOV @R0,RSMS_LIST1
MOV A,RSMS_LIST2
CJNE A,#0DH,DREG_2
INC R0
MOV @R0,#0DH
INC R0
MOV @R0,#0AH
MOV SDATE_LEN,#11
AJMP DREG_2_1
DREG_2:
INC R0
MOV @R0,RSMS_LIST2
INC R0
MOV @R0,#0DH
INC R0
MOV @R0,#0AH
MOV SDATE_LEN,#12
DREG_2_1:
MOV R0,#BUF_SEND
MOV R1,#BUF_DATA
MOV RDATE_LEN,#0
SETB IF_ACK_BIT
SETB EA
SETB TI
DREG_21:
lCALL DELAY100MS
MOV A,RDATE_LEN
CJNE A,#6,DREG_21
lCALL CHECK_UP
jNb COMD_OK,DREG_2
CLR IF_ACK_BIT
CLR EA
ret
;==============================
;设置短信中心号码
;IN:BUF_SEND
;OUT:CMD_OK
;==============================
SET_CENTER_NUMBER:
MOV R0,#BUF_SEND
MOV DPTR,#TABLE_SETSMS1
MOV R2,#9
IM_5:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,IM_5
RE_IM_5:
MOV R_EPAGE,#00H
MOV R_EADDR,#01H
MOV R0,#BUF_SEND+9
MOV R2,#15
LCALL R_24C16
JB BIT_EEF,RE_IM_5
IM_6:
MOV R0,#BUF_SEND+1
MOV SDATE_LEN,#24
MOV R1,#BUF_DATA
MOV RDATE_LEN,#0
SETB IF_ACK_BIT
SETB TI
IM_61:
lCALL DELAY100MS
MOV A,RDATE_LEN
CJNE A,#6,IM_61
lCALL CHECK_UP
jnb COMD_OK,im_6
CLR IF_ACK_BIT
CLR EA
CLR READYLED
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;发送报警信息
;IN:OBJADDR,SMSADDR
;OUT:BUF_SEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SENDA: CLR EA
MOV R0,#BUF_SEND
MOV DPTR,#TABLE_MSGCOMD
MOV R2,#8
SENDA1:
CLR A ;装载命令到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,SENDA1
R_READA1:
MOV R_EPAGE,SMSADDR
MOV R_EADDR,#00H ;装载命令的长度到缓冲区
MOV R2,#1
LCALL R_24C16
JB BIT_EEF,R_READA1
dec r0
MOV A,@R0
RR A
ANL A,#7FH
ADD A,#15 ;长度转换BCD
MOV B,#100
DIV AB
ORL A,#30H
MOV @R0,A
INC R0
MOV A,#10
XCH A,B
DIV AB
ORL A,#30H
MOV @R0,A
INC R0
ORL B,#30H
MOV @R0,B
INC R0
MOV @R0,#0DH
INC R0
R_READA1_1:
MOV R_EPAGE,SMSADDR
MOV R_EADDR,#00H ;装载PDU的长度到缓冲区
MOV R2,#1
LCALL R_24C16
JB BIT_EEF,R_READA1_1
DEC R0
MOV A,@R0
RR A
ANL A,#7FH
ADD A,#24
RL A
ANL A,#0FEH
ADD A,#1
MOV @R0,A
INC R0
MOV DPTR,#TABLE_MSGSTART
MOV R2,#4
SENDA2:
CLR A ;装载信息头到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,SENDA2
R_READA2:
MOV R_EPAGE,#00H
MOV R_EADDR,#01H ;装载短信中心号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,R_READA2
MOV DPTR,#TABLE_MSGHEAD
MOV R2,#8
SENDA3:
CLR A ;装载信息头2到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,SENDA3
R_READA3:
MOV R_EPAGE,OBJADDR
MOV R_EADDR,#01H ;装载目标号码到缓冲区
MOV R2,#14
LCALL R_24C16
JB BIT_EEF,R_READA3
MOV DPTR,#TABLE_MSGCONTRAL
MOV R2,#6
SENDA4:
CLR A ;装载信息控制码到缓冲区
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,SENDA4
R_READA4:
MOV R_EPAGE,SMSADDR
MOV R_EADDR,#00H ;装载信息长度到缓冲区
MOV R2,#1
LCALL R_24C16
JB BIT_EEF,R_READA4
dec r0
MOV A,@R0
MOV MSG_LEN,A
RR A
ANL A,#7FH
RR A
RR A
RR A
RR A
ANL A,#0FH
CLR C
CJNE A,#0AH,$+3
JC CHANG
ADD A,#37H
AJMP CHANG_1
CHANG: CLR C
ORL A,#30H
CHANG_1:
MOV @R0,A
INC R0
MOV A,MSG_LEN
RR A
ANL A,#7FH
ANL A,#0FH
CLR C
CJNE A,#0AH,$+3
JC CHANG1
ADD A,#37H
AJMP CHANG1_1
CHANG1:
CLR C
ORL A,#30H
CHANG1_1:
MOV @R0,A
INC R0
R_READA5:
MOV R_EPAGE,SMSADDR
MOV R_EADDR,#01H ;L装载信息内容到缓冲区
MOV R2,MSG_LEN
LCALL R_24C16
JB BIT_EEF,R_READA5
MOV @R0,#1AH ;装载结束符
LCALL SMS_SEND
SETB EA
RET
;======================================
;SEND SMS
;IN:SDATE_LEN,BUF_SEND
;OUT:READY_OK,SEND_OK
;======================================
sms_send:
CLR SMSLED
SS_2:
MOV R0,#BUF_SEND
MOV SDATE_LEN,#12
MOV R1,#BUF_DATA
MOV RDATE_LEN,#0
SETB IF_ack_bit
SETB EA
SETB TI
SS_DELAY:
LCALL DELAY100MS
MOV A,RDATE_LEN
CJNE A,#4,SS_DELAY
LCALL CHECK_UP
JNB READ_OK,SS_2
SETB IF_ACK_BIT
CLR EA
;------------------------------------
SS_4:
MOV RSEND_CONT,#00
MOV SDATE_LEN,@R0
INC R0
MOV R1,#BUF_DATA
MOV RDATE_LEN,#0
SETB IF_ACK_BIT
SETB EA
SETB TI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -