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

📄 sms_alam.asm

📁 一款配和短信模块报警的软件程序,参考一下吧
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		MOVC	A,@A+DPTR
		DEC	A
		MOV 	R7,A
		
AT_TX1:		INC 	DPTR
		CLR	TI
		CLR 	A
		MOVC	A,@A+DPTR	
		MOV 	SBUF,A
		JNB	TI,$
		DJNZ	R7,AT_TX1
		CLR 	TI
		RET
;*****************************************

;****************接受AT命令*************************
AT_RX:		CLR 	RI
		CLR 	ERR_GSM
		CLR 	A
		MOVC	A,@A+DPTR
		DEC	A
		MOV 	R7,A
		INC	DPTR
		MOV 	R0,#D2_BUF
AT_RX1:		LCALL	WAITE
		JB	OVER_500MS,AT_RX2
		MOV 	A,SBUF
		;MOV 	@R0,A
		CLR 	RI
		MOV 	B,A
		CLR 	A
		MOVC	A,@A+DPTR
		CJNE	A,B,AT_RX2
		INC	DPTR
		INC	R0
		DJNZ	R7,AT_RX1
		CLR 	ERR_GSM
		RET
AT_RX2:		SETB	ERR_GSM
		RET

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


RCE_OK:		CLR 	ERR_GSM
		MOV 	DPTR,#AT_OK
		LCALL	AT_RX
		RET
;*****************************************************
RCE_CSQ:	CLR 	ERR_GSM
		MOV 	DPTR,#ATCSQ
		LCALL	AT_RX
		JB	ERR_GSM,RCE_C2
		LCALL	WAITE
		JB	OVER_500MS,RCE_C2
		CLR 	RI
		MOV	A,SBUF
		MOV 	B,A
		LCALL	WAITE
		JB	OVER_500MS,RCE_C2
		CLR 	RI
		MOV 	A,SBUF
		LCALL	ASC_HEX	
		MOV 	CSQ,A
		CLR 	ERR_GSM 		
		RET
RCE_C2:		SETB	ERR_GSM
		RET
;****************************************************
SET_GSM:	MOV 	DPTR,#ATE0
		LCALL	AT_TX
		LCALL	RCE_OK
		JB	ERR_GSM,SET_GSM
		LCALL	DELAY2S
				
		MOV 	DPTR,#AT_CMGF		;GSM参数设置
		LCALL	AT_TX
		LCALL	RCE_OK
		JB	ERR_GSM,SET_GSM
		RET
;****************************************************
TEST_GSM:	;MOV 	R2,#10
TEST_G2:	MOV 	DPTR,#AT_AT
		LCALL	AT_TX
		LCALL	RCE_OK
		JB	ERR_GSM,TEST_ERR
TEST_G1:	;LCALL	DELAY2S
		MOV 	DPTR,#AT_CSQ		;测试信号强度
		LCALL	AT_TX
		LCALL	RCE_CSQ
		JB	ERR_GSM,TEST_ERR
		MOV 	A,CSQ
		SUBB	A,#40H
		JNC	TEST_err
		CLR 	ERR_GSM
		;LCALL	DELAY2S
		RET
TEST_ERR:	LCALL	DELAY2S
		LCALL	DELAY2S
		LCALL	DELAY2S
		SETB	ERR_GSM
		RET

;**************初始化GSM_UART*****************************	
INI_UART:	;SETB	RT
		;CLR 	GD
		MOV 	P1M1,#02H	;TXD输出,RXD输入
		MOV 	P1M2,#01H
		MOV 	BRGR1,#02H	;7.373/ 6M,	9600
		MOV 	BRGR0,#0F0H	;2F0/261		
		MOV 	BRGCON,#3
		MOV 	SSTAT,#40H
		MOV 	SCON,#50h		;方式1,8数据位,无校验,
		MOV 	PCON,#00H		;SMOD=0
		RET

;*****************************************
EN_WDT:	MOV 	WDL,#0FFh 		; New count to be loaded to 8-bit down counter
	CLR 	EA 			; disable interrupt
	MOV 	WDCON,#0E5H	;e5	; write back to WDCON (after the watchdog is enabled, a feed must occur
					; immediately)
	MOV 	WFEED1,#0A5h 		; do watchdog feed part 1
	MOV 	WFEED2,#05Ah 		; do watchdog feed part 2
	SETB	EA
	RET
UN_WDT:	MOV 	WDCON,#0E0H
	RET


;***************************************************
FEED_DOG:CLR 	EA 			; disable interrupt
	MOV 	WFEED1,#0A5h 		; do watchdog feed part 1
	MOV 	WFEED2,#05Ah 		; do watchdog feed part 2
	setb	ea
	RET
;********************初始化******************************
INI_PRO:	
	MOV 	P0M1,#00H	;P0上拉输出
	MOV 	P0M2,#0FFH
	MOV	P0,#00H
	SETB	LED_DATA
	MOV 	P2M1,#0FFH	;P2仅为输入
	MOV 	P2M2,#00H
	
	LCALL	INI_UART
	
	CLR 	ERR_GSM
	MOV 	TMOD,#11H
	MOV	TH0,#03CH		;500MS
	MOV	TL0,#0B0H
	MOV 	TH1,#90H		;10MS
	MOV 	TL1,#01H
	setb	ET1
	setb	TR1
	CLR 	ES
	setb 	ea

	CLR 	A
	MOV 	COUNT_10MS,A
	MOV 	COUNT_1S,A
	MOV 	COUNT_1M,A
	MOV 	COUNT_1H,A
	CLR 	T_1S
	CLR	T_1M
	CLR	T_1H
	MOV	TIME_OFF,#0FFH
	MOV 	TIME_ON,#00H
	CLR 	LAST_INPUT
	CLR	ALARM
	SETB	FIRST

	MOV 	R0,#RST_TIME		;数据区复位
	MOV 	R7,#3
	CLR	A
INI_P1:	MOV 	@R0,A
	INC 	R0
	DJNZ	R7,INI_P1
	
	RET
;*************************************************
DELAY20MS:MOV 	R6,#20
DELAY11:MOV 	R5,#200
DELAY12:NOP
	NOP
	NOP
	NOP
	DJNZ	R5,DELAY12
	DJNZ	R6,DELAY11
	DJNZ	R7,DELAY20MS
	RET


;***************************************************
TX_BYTE:	CLR 	TI 
		MOV 	SBUF,A
		JNB	TI,$
		CLR 	TI
		RET

;单字节BCD码整数转换成单字节十六进制整数 
;入口条件:待转换的单字节BCD码整数在累加器 A 中。 
;出口信息:转换后的单字节十六进制整数仍在累加器 A 中。 
;影响资源: PSW 、 A 、 B 、 R4     堆栈需求:    2字节 
BCD1_HEX:MOV  B,#10H  
  	DIV  AB 
  	MOV  R4,B   
  	MOV  B,#10   
  	MUL  AB 
  	ADD  A,R4   
  	RET 


;单字节十六进制整数转换成单字节BCD码整数
;待转换的单字节十六进制整数在累加器A中。 
;出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。 
;影响资源:PSW、A、B、R3 堆栈需求: 2字节 		
HEX1_BCD:	MOV B,#100 			;分离出百位,存放在R3中 
		DIV AB 
		MOV R3,A 
		MOV A,#10 			;余数继续分离十位和个位 
		XCH A,B 
		DIV AB 
		SWAP A 
		ORL A,B 			;将十位和个位拼装成BCD码 
		RET  		
;单字节十六进制数转换成双字节ASCII码 
;入口条件:待转换的单字节十六进制数在累加器A中。 
;出口信息:高四位的ASCII码在A中,低四位的ASCII码在B中。 
;影响资源:PSW、A、B 堆栈需求: 4字节 
HEX_ASC:	MOV B,A 		;暂存待转换的单字节十六进制数 
		LCALL BCD_ASC 		;转换低四位 
		XCH A,B 		;存放低四位的ASCII码 
		SWAP A 			;准备转换高四位 
 		LCALL BCD_ASC 		;将累加器的低四位转换成ASCII码 
		RET 		
;***************************************************		
;双字节ASC码转单字节十六进制
ASC_HEX:	LCALL	SUBB1			;IN  H(B),L(A)
		XCH	A,B			;OUT A
		LCALL	SUBB1			;R2,A,B,C
		SWAP	A
		ORL	A,B
		RET
SUBB1:		CLR 	C
		SUBB	A,#30H
		MOV 	R2,A
		SUBB	A,#0AH
		JC	SUB10
		XCH	A,R2
		SUBB	A,#07H	
		RET
SUB10:		MOV 	A,R2
		RET
;*****************************************************
BCD_ASC:	ANL	A,#0FH
		ADD 	A,#90H 			;IN ACC
		DA 	A 			;OUT ACC
		ADDC	A,#40H 
		DA 	A 
		RET 		


;************************************************************************
;*名称:	INT_50MS						*

;************************************************************************	
INT_50MS:	PUSH	ACC	
		CLR	TR0
		MOV	A,COUNT_50MS
		INC	A
		CJNE	A,#0FFH,INTT1		
		SETB	OVER_500MS
		POP	ACC
		RETI
INTT1:		MOV	COUNT_50MS,A
		MOV	TH0,#3CH
		MOV	TL0,#0AFH
		SETB	TR0
		POP	ACC
		RETI	


;******************************************************
DELAY2S:	MOV 	R7,#04
DELAY21:	LCALL	FEED_DOG			;*********
		MOV 	R6,#0FFH
DELAY22:	MOV 	R5,#0FFH
DELAY23:	NOP
		NOP
		NOP
		DJNZ	R5,DELAY23
		DJNZ	R6,DELAY22
		DJNZ	R7,DELAY21
		RET
;**********************************************************************
WAITE:		MOV	COUNT_50MS,#00H		;等待接受数据  (<500MS)
		CLR	OVER_500MS
		MOV	TH0,#3CH
		MOV	TL0,#0AFH
		SETB	EA
		SETB	ET0
		SETB	TR0
		SETB	REN
WAITE2:		JB	OVER_500MS,WAITE1
		lcall	FEED_DOG
		JNB	RI,WAITE2
WAITE1:		CLR	ET0
		CLR	TR0
		setb 	EA
		RET	


;***********************************************************
EE_READ_B:	CLR 	EA			;EE读(入口:A地址)(出口:A数据)
		MOV 	DEECON,#00H
		MOV 	DEEADR,A
EE_R1:		MOV 	A,DEECON
		ANL 	A,#80H
		CJNE	A,#80H,EE_R1
		MOV 	A,DEECON
		ANL	A,#07FH
		MOV 	DEECON,A
		MOV 	A,DEEDAT
		SETB	EA
		RET
;***********************************************************
EE_WRITE_B:	CLR 	EA			;EE写(入口:A地址,B数据)
		MOV 	DEECON,#00H
		MOV 	DEEDAT,B
		MOV 	DEEADR,A
EE_W1:		MOV 	A,DEECON
		ANL 	A,#80H
		CJNE	A,#80H,EE_W1
		MOV 	A,DEECON
		ANL	A,#07FH
		MOV 	DEECON,A
		SETB	EA
		RET

;******************************************************************************
AT_AT:		DB 04H,41H,54H,0DH					;AT
AT_OK:		DB 07H,0DH,0AH,4FH,4BH,0DH,0AH				;OK
AT_CGRESET:	DB 0CH,41H,54H,2BH,43H,47H,52H,45H,53H,45H,54H,0DH	;AT+CGRESET
AT_CMGF:	DB 0BH,41H,54H,2BH,43H,4DH,47H,46H,3DH,30H,0DH		;AT+CMGF=0<CR>
AT_CNMI:	DB 13H,41H,54H,2BH,43H,4EH,4DH,49H,3DH,32H,2CH,31H,2CH,30H,2CH,30H,2CH,30H,0DH	;AT+CNMI=2,1,0,0,0<CR>
AT_CSQ:		DB 08H,41H,54H,2BH,43H,53H,51H,0DH			;AT+CSQ
ATCSQ:		DB 09H,0DH,0AH,2BH,43H,53H,51H,3AH,20H			;+CSQ:<SPACE>
		DB 06H,2CH,39H,39H,0DH,0AH
AT_CMGR:	DB 09H,41H,54H,2BH,43H,4DH,47H,52H,3DH			;AT+CMGR=
ATCMGR:		DB 08H,0DH,0AH,2BH,43H,4DH,47H,52H			;<CR><LF>+CMGR
AT_CMGD:	DB 09H,41H,54H,2BH,43H,4DH,47H,44H,3DH			;AT+CMGD=
ATADDR1:	;DB 0DH,33H,31H,39H,30H,30H,33H,31H,35H,32H,30H,46H,38H	;13093051028f
		;DB 0DH,33H,31H,38H,30H,35H,33H,30H,30H,32H,34H,46H,30H	;13083500420F
		;DB 0DH,33H,31H,39H,30H,30H,33H,30H,35H,39H,39H,46H,38H	;13093050998F
		;DB 0DH,33H,31H,35H,30H,32H,37H,34H,30H,31H,34H,46H,37H	;13057204417
		DB 0DH,33H,31H,30H,30H,33H,33H,36H,32H,36H,32H,46H,34H	;13003326264F
		;DB 0DH,33H,31H,30H,30H,33H,33H,30H,33H,35H,35H,46H,35H	;13003330555F
		;DB 0DH,33h,31h,30H,30H,33H,33H,35h,38h,39h,33h,46h,39h	;13003385399f
ATADDR:		;DB 05H,33H,38H,46H,31H					;831F
		DB 07H,38H,32H,30H,30H,46H,32H				;28002F
		
AT_CMGS:	DB  09H,41H,54H,2BH,43H,4DH,47H,53H,3DH			;AT+CMGS=	
ATMSGWAT:	DB  05H,0DH,0AH,3EH,20H					;<CR><LF>><NUL>
AT_HEAD1:	;DB  0FH,00H,11H,00H,0BH,81H,31H,90H,03H,15H,20H,0F8H,00H,15H,0AAH	;消息头,目标地址13093051028,8BIT编码
		;DB  0FH,00H,11H,00H,0BH,81H,31H,80H,53H,00H,24H,0F0H,00H,15H,0AAH	;消息头,目标地址13083500420,8BIT编码
		;DB  0FH,00H,11H,00H,0BH,81H,31H,90H,03H,05H,99H,0F8H,00H,15H,0AAH	;消息头,目标地址13093050998,8BIT编码
		;DB  0FH,00H,11H,00H,0BH,81H,31H,50H,27H,40H,14H,0F7H,00H,15H,0AAH	;消息头,目标地址13057204417,8BIT编码
		DB  0FH,00H,11H,00H,0BH,81H,31H,00H,33H,62H,62H,0F4H,00H,15H,0AAH	;消息头,目标地址13003326264,8BIT编码
		;DB  0FH,00H,11H,00H,0BH,81H,31H,00H,33H,03H,55H,0F5H,00H,15H,0AAH	;消息头,目标地址13003330555,8BIT编码
		;DB 0FH,00H,11H,00H,0BH,81H,31H,00H,33H,58H,93H,0F9H,00H,15H,0AAH	;发送PDU消息头,目标地址13003385399,8BIT编码
;AT_HEAD:	;DB  0BH,00H,11H,00H,03H,81H,38H,0F1H,00H,15H,0AAH			;消息头,目标地址831,8BIT编码
;		DB   0CH,00H,11H,00H,05H,81H,82H,00H,0F2H,00H,15H,0AAH			;消息头,目标地址28002,8BIT编码	
ATCMGS:		DB 09H,0AH,2BH,43H,4DH,47H,53H,3AH,20H			;<LF>+CMGS:<NUL>
ATE0:		DB 06H,41H,54H,45H,30H,0DH				;ATE0
CHANGBIAO:	DB 04H,48H,54H,43H					;厂标HTC
PAT_STA:	DB 01H,02H,53H,0F3H					;读状态字
CARD_NUM:	DB 0DH,31H,33H,33H,39H,35H,31H,30H,30H,35H,30H,30H,0DH
TEXT:		DB 07H,48H,45H,4CH,4CH,4FH,1AH
AT_HEAD:	DB   04H,00H,11H,00H			;消息头,



AT_NUM1:	DB   	05H,50H,38H,70H,30H				;05830703		后勤平台
AT_NUM2:	DB	08H,68H,31H,83H,22H,49H,94H,0F1H		;13382294491		王强		
AT_NUM3:	DB   	08H,68H,31H,53H,18H,70H,72H,0F2H		;13358107272		李大农
AT_NUM4:	DB   	08H,68H,31H,53H,18H,60H,36H,0F3H		;13358106633		刘继斌
AT_NUM5:	DB   	08H,68H,31H,18H,15H,30H,47H,0F7H		;13815103747		邱师傅
AT_NUM6:	DB   	08H,68H,31H,90H,03H,30H,07H,0F0H		;SIM/UIM号13093003700 	田备
AT_NUM7:	DB	08H,68H,31H,90H,03H,03H,22H,0F4H		;13093030224		赵让
									

AT_TRAIL:	DB   04H,00H,08H,01H				;消息尾
AT_TEXT1:	;DB   09H,80H,0D6H,9CH,7CH,8DH,77H,5EH,8AH	;胖鱼
		DB   15H,62H,0A5H,8BH,66H,00H,3AH,6DH,88H,96H,32H,68H,13H,88H,0ABH,62H,53H,5FH,00H,00H,21H
AT_TEXT2:	;DB   09H,80H,0D6H,9CH,7CH,8DH,77H,5EH,8AH	;胖鱼
		DB   15H,63H,0D0H,79H,3AH,00H,3AH,6DH,88H,96H,32H,68H,13H,5DH,0F2H,51H,73H,95H,0EDH,00H,21H

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

	END	


⌨️ 快捷键说明

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