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

📄 sms6.asm

📁 实现短消息发送报警功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        MOV     @R1,A
        INC     R1
        INC     RDATE_LEN
        CJNE    A,#0DH,I232_CHK
        SETB    SMS_DATE_OK
I232_CHK:
        CJNE    A,#05H,I_232_EOF
        SETB    COM_DATE_READY
I_232_EOF:
        POP	DPH
	POP	DPL
	POP 	PSW			;恢复现场
	POP 	ACC
                                	;开放串口中断
        RETI

;----------------------------------------
;  CHECK_UP:	检查是否是"OK"
;               COMD_OK
;----------------------------------------
CHECK_UP:
	LCALL 	WATCHDOG
	clr	COMD_OK
        CLR     READ_OK
	MOV	R0,#BUF_DATA
CHK_COM:                         ;校验命令返回码?
        INC	R0
	INC	R0
	MOV	A,@R0
	CJNE	A,#4FH,CHK_READ
	INC	R0
	mov	a,@r0
	cjne	a,#4bh,CHECK_UP_EOF
	SETB	COMD_OK
        LJMP    CHECK_UP_EOF
CHK_READ:                         ;校验数据准备提示符?
        CJNE    A,#3EH,CHK_SEND
        INC     R0
        MOV     A,@R0
        CJNE    A,#20H,CHECK_UP_EOF
        SETB    READ_OK
CHK_SEND:
        MOV     A,#13
        ADD     A,R0
        MOV     R0,A
        MOV     A,@R0
        CJNE    A,#4FH,CHECK_UP_EOF
        INC     R0
        MOV     A,@R0
        CJNE    A,#4BH,CHECK_UP_EOF
        SETB    SEND_OK
CHECK_UP_EOF:
             RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; explain.asm 命令解释程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

explain:
         MOV   RO,#BUF_DATA
         INC   R0
         MOV   A,@R0
         MOV   R2,A
         ADD   A,#4
         CJNE  A,RDATE_LEN,EXP_ERR
         MOV   R0,#BUF_DATA
         INC   R0
         INC   R0
         MOV   A,@R0
         PUSH  R2
EXP_SUM:
         INC   R0
         ADD   A,@R0
         MOV   SUM,A
         DJNZ  R2,EXP_SUM
         MOV   R0,#BUF_DATA
         MOV   A,R0
         POP   R2
         ADD   A,R2
         INC   A
         MOV   R0,A
         CJNE  @R0,SUM,EXP_ERR
         MOV   R0,#BUF_DATA
         INC   R0
         INC   R0
         INC   R0
         MOV   R_EPAGE,#00H
         MOV   R_EADD,#00H
         MOV   R2,#13
         LCALL W_24C16
         JB    BIT_EEF,EXP_ERR
         INC   R0
         MOV   R_EPAGE,#01H
         MOV   R_EADD,#00H
         MOV   R2,#13
         ret
;======================================================
;功能:
;	EEPROM 24C16程序读写模块:
;	    连续方式读:		R_24C16 (R_EPAGE,R_EADDR,R0,R2)
; 	    连续字节方式写:	W_24C16 (R_EPAGE,R_EADDR,R0,R2)
;说明:
;======================================================
;---------------------------------------------------
;功能:
;	对24C16的RAM进行合法性检查
;入口:	R_EPAGE--
;      	R_EADDR--
;      	R0--内存地址
;      	R2--长度<256
;---------------------------------------------
R_24C16:
        CLR 	EA
	;--终止可能没有结束的读写
        CLR     BIT_ESCL
        CLR     BIT_ESDA
        SETB    BIT_ESCL
        SETB    BIT_ESDA
        MOV     R5,R_EADDR
LOP4:
        MOV     A,R_EPAGE
        ANL     A,#07H
        RL      A
        ORL     A,#0A0H
	;--START
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        CLR     BIT_ESDA
	;--PAGE ADDR
        MOV     R3,#8
ILP:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,ILP
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        ;--ACK
        SETB    BIT_ESCL
        JB      BIT_ESDA,ER3
        ;--WORD ADDR
        MOV     A,R5
        MOV     R3,#8
ILP1:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,ILP1
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        ;--ACK
        SETB    BIT_ESCL
ER3:
	JNB     BIT_ESDA,ER31
        LJMP 	ER2
ER31:
	;--注释部分为使用随机方式读
        CLR     BIT_ESCL
        ;--START
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        CLR     BIT_ESDA
        ;--SLAVE ADDRESS
        MOV     A,R_EPAGE
        ANL     A,#07H
        RL      A
        ORL     A,#0A1H
        MOV     R3,#08H
LOP2:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,LOP2
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        ;--BYTES
        MOV     R4,#08H
LOP3:
	MOV     A,@R0
        CLR     BIT_ESCL
        SETB    BIT_ESCL
        MOV     C,BIT_ESDA
        RLC     A
        MOV     @R0,A
        DJNZ    R4,LOP3
        INC     R0
        INC     R5
        DJNZ    R2,LOP40
        LJMP    LOP41
LOP40:
	LJMP    LOP4
LOP41:
	;--STOP
        CLR     BIT_ESCL
        CLR     BIT_ESDA
        SETB    BIT_ESCL
        SETB    BIT_ESDA
        CLR     BIT_EEF
        SETB    EA
        RET
ER2:
        SETB    BIT_EEF
        SETB    EA
        RET
;---------------------------------------------------
;功能:
;		连续写24C16
;入口:	R_EPAGE--
;      	R_EADDR--
;      	R0--内存地址
;      	R2--长度
;;---------------------------------------------
W_24C16:
        CLR     EA
	;--START AND STOP
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        CLR     BIT_ESDA
	;--PAGE ADDR
        MOV     A,R_EPAGE
        ANL     A,#07H
        RL      A
        ORL     A,#0A0H
        MOV     R3,#08H
ILOP:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,ILOP
	;--ACK
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        JB      BIT_ESDA,HERE
	;--WORD ADDR
        MOV     A,R_EADDR
        MOV     R3,#8
ILOP1:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,ILOP1
	;--ACK
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        JB      BIT_ESDA,HERE
	;--DATA
ILOP3:
	MOV     R3,#8
        MOV     A,@R0
ILOP2:
	CLR     BIT_ESCL
        RLC     A
        MOV     BIT_ESDA,C
        SETB    BIT_ESCL
        DJNZ    R3,ILOP2
	;--ACK
        CLR     BIT_ESCL
        SETB    BIT_ESDA
        SETB    BIT_ESCL
        JB      BIT_ESDA,HERE
        INC     R0
        DJNZ    R2,ILOP3
	;--STOP
        CLR     BIT_ESCL
        CLR     BIT_ESDA
        SETB    BIT_ESCL
        SETB    BIT_ESDA
        CLR     BIT_EEF
        SETB    EA
        RET
HERE:
        SETB    BIT_EEF
        SETB    EA
        RET
;-------------------------------------------
WATCHDOG:
;       MOV             WDTRST,#01EH
;       MOV             WDTRST,#0E1H
        NOP
        NOP
		RET
;-------------------------------------------
; Delay1MS:
;
;-------------------------------------------
Delay1MS:
	PUSH	_R2
	MOV	_R2,#98
DM11_1:
        LCALL	WATCHDOG
	DJNZ	_R2,DM11_1
	POP	_R2
	NOP
        RET
;-------------------------------------------
; Delay100MS:
;   in -- RCNT_MS:延时值MS  (<256)
;
;-------------------------------------------
Delay10MS:
	PUSH	_R2
	PUSH	_R3
	MOV	_R2,#100
DM_1:
	MOV	_R3,#60
DM_2:

	DJNZ	_R3,$
	DJNZ	_R2,DM_1
	POP	_R3
	POP	_R2
	NOP
        RET
;-------------------------------------------
; Delay100MS:
;   in --
;
;-------------------------------------------
Delay100MS:
	PUSH	_R1
	MOV	_R1,#10
DM1_1:
	lCALL	DELAY10MS
	DJNZ	_R1,DM1_1
	POP	_R1
	NOP
        RET
;---------------------------------------------
delay1000ms:
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	lcall	delay100ms
	ret
table_reset:      	 db	'A','T','Z','0',0dh,0Ah
TABLE_gogsm:	       	 DB     'A','T','+','C','O','P','S','=','0',0DH,0AH
TABLE_setsms1:           DB     'A','T','+','C','S','C','A','=','+','8','6','1'
	              	 DB	'3','8','0','0','5','1','9','5','0','0',0DH,0AH
TABLE_SETSMS0:         	 DB	'A','T','+','C','M','G','F','=','0',0DH,0AH
TABLE_SCOMRATE:          DB	'A','T','+','I','P','R','=','9','6','0','0',0DH,0AH
TABLE_STECHAR:           DB     'A','T','+','C','S','M','P','=','1','7',',','1','6'
                         DB       '7',',','0',',','2','5',0DH,0AH

table_msglen:            db	'A','T','+','C','M','G','S','=','2','5',0DH;'8','1','5','0','4','1','8','0','7',0DH
table_MSGDATE:           DB     ;'4','F','6','0','5','9','7','d'1AH
                         db	'0','8','9','1','6','8','3','1','0','8','5';08 91 6831085
			 db	'0','9','1','0','5','F','0','1','1','0','0';09105f0 1100
                         db	'0','D','9','1','6','8','3','1','1','8','0';0d 91 6831681
			 db	'5','1','4','0','8','F','7','0','0','0','8';18954f4 0008
			 db	'0','0','0','A','7','E','B','F','8','D','E';0010 4e2d<sub>
                         DB     'F','8','F','C','7','8','F','7','D','F','F','0','1',1AH

 END

⌨️ 快捷键说明

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