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

📄 sms7.asm

📁 实现短消息发送报警功能
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        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 + -