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

📄 sms_alam.asm

📁 一款配和短信模块报警的软件程序,参考一下吧
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	;CPU(LPC932)   1200,9600BPS   ADDR(13003330666)
	;外部复位,看门狗
	 	
	$include (REG932.INC)
	RST_TIME	EQU	4AH			;GSM断电计数
	SEND_TIME	EQU	4BH			;发送重复次数
	msg_len		equ	4ch			;短消息长度
	num_type	equ	4eh			;号码类型
	num_len		equ	4fh			;号码长度
	COUNT_50MS	EQU	42H			;50MS计数
	CSQ		EQU	4DH			;信号强度
	COUNT_1S	EQU	30H
	COUNT_1M	EQU	31H
	COUNT_1H	EQU	32H
	COUNT_10MS	EQU	33H
	TIME_OFF	EQU	34H		
	TIME_ON		EQU	35H


;***********************************************************		
	D2_BUF		EQU	51H			; 临时数据缓存	51-6F
		
	
;*************************************************************
	TON_SET		EQU	30
	TOFF_SET	EQU	60
;**************************************************************


	POWER_GSM	BIT		P0.0
	LED_DATA	BIT		P0.1
	LOCAL_INPUT	BIT		P2.0

;**************************************************************

	ERR_GSM		BIT	03H
	OVER_500MS	BIT 	01H		;500MS通讯超时标志
	T_1S		BIT	00H
	T_1M		BIT 	02H
	T_1H		BIT	04H

	ALARM		BIT	06H
	FIRST		BIT	07H
	LAST_INPUT	BIT	08H

;***************************************************************
	ORG  	0000h
	LJMP	MAIN
	ORG 	000BH
	LJMP	INT_50MS
	ORG	001BH
	LJMP	INT_TIME
	ORG 	0100H
MAIN:	MOV 	SP,#070H
	LCALL	INI_PRO
	LCALL	UN_WDT

	MOV 	R3,#10			;延时
LOOP1:	LCALL	DELAY2S
	DJNZ	R3,LOOP1
	LCALL	SET_GSM

RETURN:	JNB	T_1S,$
	CLR 	T_1S
LOOP2:	LCALL	TEST_GSM
	JB	ERR_GSM,LOOP2
	JB	LAST_INPUT,FUN1
	JNB	LOCAL_INPUT,FUN01
FUN00:	MOV 	TIME_OFF,COUNT_1M
	CLR	LAST_INPUT
	LJMP	RETURN
	
FUN01:	CLR 	ALARM
	MOV 	TIME_ON,#00H		;复位COUNT_1M
	MOV 	COUNT_1S,#00H
	MOV 	COUNT_1M,#00H
	JB	T_1H,LOOP3
	MOV 	A,TIME_OFF		;判断关闭时间是否小于设定
	CLR	C
	SUBB	A,#TOFF_SET
	JNC	LOOP3
	JB	FIRST,LOOP3
	MOV 	SEND_TIME,#05H
	LCALL	SEND_SMS			;小于报警
	;SETB	ALARM
	MOV 	TIME_OFF,#0FFH
LOOP3:	SETB	LAST_INPUT
	CLR	T_1H
	CLR 	FIRST
	LJMP	RETURN

FUN1:	JNB	LOCAL_INPUT,FUN11
FUN10:	CLR 	ALARM
	MOV	TIME_OFF,#0FFH
	MOV 	COUNT_1S,#00H
	MOV 	COUNT_1M,#00H
	CLR	T_1H
	CLR	LAST_INPUT
	LJMP	RETURN	

FUN11:	JB	ALARM,LOOP4
	MOV 	TIME_ON,COUNT_1M
	MOV	A,TIME_ON
	CLR	C
	SUBB	A,#TON_SET
	JC	LOOP4
	MOV 	SEND_TIME,#05H
	LCALL	SEND_SMS			;大于报警
	SETB	ALARM
LOOP4:	SETB	LAST_INPUT
	LJMP	RETURN
	 	
;***************************************
;***************************************
SEND_SMS:MOV 	num_type,#0a1h
	MOV 	msg_len,#32
	MOV 	num_len,#08h
	CLR	LED_DATA
	MOV 	DPTR,#AT_NUM1
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND11
	DJNZ	SEND_TIME,SEND_SMS
SEND11:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H

;	LJMP	SEND77

	MOV 	num_type,#091h
	MOV 	msg_len,#35
	MOV 	num_len,#0dh
SEND1:	MOV	DPTR,#AT_NUM2
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND22
	DJNZ	SEND_TIME,SEND1
SEND22:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H


SEND2:	MOV 	DPTR,#AT_NUM3
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND33
	DJNZ	SEND_TIME,SEND2
SEND33:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H


SEND3:	MOV 	DPTR,#AT_NUM4
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND44
	DJNZ	SEND_TIME,SEND3
SEND44:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H


SEND4:	MOV 	DPTR,#AT_NUM5
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND55
	DJNZ	SEND_TIME,SEND4
SEND55:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H


SEND5:	MOV 	DPTR,#AT_NUM6
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND66
	DJNZ	SEND_TIME,SEND5
SEND66:	SETB	LED_DATA
	LCALL	DELAY2S
	CLR	LED_DATA
	MOV 	SEND_TIME,#05H


SEND6:	MOV 	DPTR,#AT_NUM7
	LCALL	MSG_RETN
	JNB	ERR_GSM,SEND77
	DJNZ	SEND_TIME,SEND6
SEND77:	SETB	LED_DATA
	LCALL	DELAY2S
	MOV 	SEND_TIME,#05H

	RET
;*************************************

;***************************************************************************
INT_TIME:	PUSH	ACC
		MOV	A,COUNT_10MS
		INC	A
		CJNE	A,#100,INT_T1
		CLR 	A
		SETB	T_1S
		
		MOV	A,COUNT_1S
		INC	A
		CJNE	A,#60,INT_T2
		CLR 	A
		SETB	T_1M
		
		MOV	A,COUNT_1M
		INC	A
		CJNE	A,#60,INT_T3
		CLR 	A
		SETB	T_1H

INT_T3:		MOV	COUNT_1M,A
		CLR	A
INT_T2:		MOV	COUNT_1S,A
		CLR 	A
INT_T1:		MOV 	COUNT_10MS,A		
		


		MOV 	TH1,#90H		;17777US
		MOV 	TL1,#01H
		setb	ET1
		setb	TR1
		setb 	ea
		POP	ACC
		RETI	
		
;********************************************
MSG_RETN:	PUSH	DPH
		PUSH	DPL
		MOV 	DPTR,#AT_CMGS		;AT+CMGS=
		LCALL	AT_TX

		
		
		



		MOV 	A,msg_len		;15+10*2
		LCALL	HEX1_BCD
		MOV 	B,A
		MOV 	A,R3
		LCALL	BCD_ASC
		LCALL	TX_BYTE
		MOV 	A,B
		SWAP 	A
		LCALL	BCD_ASC
		LCALL	TX_BYTE
		MOV	A,B
		LCALL	BCD_ASC
		LCALL	TX_BYTE
		MOV 	A,#0DH
		LCALL	TX_BYTE

		MOV 	DPTR,#ATMSGWAT		;WAIT <
		LCALL	AT_RX
		JNB	ERR_GSM,MSG2
		POP	DPL
		POP	DPH
		LJMP	MSGERR
MSG2:		MOV 	R3,#10			;延时
LOOP9:		LCALL	DELAY2S
		DJNZ	R3,LOOP9
		
		MOV 	DPTR,#AT_HEAD		;发送消息头
		CLR 	A
		MOVC	A,@A+DPTR
		DEC	A	
		MOV 	R7,A
		INC	DPTR	
MSG3:		CLR 	A
		MOVC	A,@A+DPTR
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE
		INC	DPTR
		DJNZ	R7,MSG3

		MOV 	A,num_len		;号码长度
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE


		MOV 	A,num_type		;号码类型
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE
		
		POP	DPL			;发送SIM/UIM号
		POP	DPH
		CLR 	A
		MOVC	A,@A+DPTR
		DEC	A	
		MOV 	R7,A
		INC	DPTR	
MSG4:		CLR 	A
		MOVC	A,@A+DPTR
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE
		INC	DPTR
		DJNZ	R7,MSG4

		MOV 	DPTR,#AT_TRAIL		;发送消息尾
		CLR 	A
		MOVC	A,@A+DPTR
		DEC	A	
		MOV 	R7,A
		INC	DPTR	
MSG5:		CLR 	A
		MOVC	A,@A+DPTR
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE
		INC	DPTR
		DJNZ	R7,MSG5

		MOV 	A,#20			;消息长度 10*2
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE

		
		MOV 	DPTR,#AT_TEXT1		;发送消息内容
		;JNB	INPUT_1,MSG51
		;MOV 	DPTR,#AT_TEXT2	
MSG51:		CLR 	A
		MOVC	A,@A+DPTR
		DEC	A	
		MOV 	R7,A
		INC	DPTR	
MSG6:		CLR 	A
		MOVC	A,@A+DPTR
		LCALL	HEX_ASC
		LCALL	TX_BYTE
		XCH	A,B
		LCALL	TX_BYTE
		INC	DPTR
		DJNZ	R7,MSG6

MSG_OUT3:	MOV 	A,#1AH			;1AH
		LCALL	TX_BYTE



	MOV 	R7,#10		
MSG62:	LCALL	WAITE
	JB	RI,MSG61
	DJNZ	R7,MSG62
	LJMP	MSGERR 
MSG61:	MOV 	A,SBUF
	CLR 	RI
	CJNE	A,#0DH,MSGERR

	MOV 	DPTR,#ATCMGS
	LCALL	AT_RX
	JB	ERR_GSM,MSGERR

MSG7:	LCALL	WAITE
	JB	OVER_500MS,MSGERR
	MOV 	A,SBUF	
	CLR 	RI
	CJNE	A,#0AH,MSG7

	LCALL	RCE_OK
	JB	ERR_GSM,MSGERR	
MSG_OUT1:	RET
MSGERR:		lcall	delay2s
		SETB	ERR_GSM
		RET	


;**************GSM硬复位**********************************
RST_POW_GSM:	SETB	POWER_GSM
		MOV 	R3,#10			;GSM断电延时
INI_P2:		LCALL	DELAY2S
		DJNZ	R3,INI_P2
		CLR 	POWER_GSM
		MOV 	R3,#30			;上电延时
DELAY:		LCALL	DELAY2S
		DJNZ	R3,DELAY
		RET
;**************GSM软复位**********************************
RST_SOFT_GSM:	MOV 	DPTR,#AT_CGRESET
		LCALL	AT_TX
		MOV 	R3,#20
RST_S1:		LCALL	DELAY2S
		DJNZ	R3,RST_S1
		RET

;*****************发送AT命令************************
AT_TX:		CLR 	TI
		CLR 	A			;发送AT命令

⌨️ 快捷键说明

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