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

📄 sms6.asm

📁 实现短消息发送报警功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:

T2CON           EQU    0C8H
RCAP2L          EQU    0CAH
RCAP2H          EQU    0CBH
TL2             EQU    0CCH
TH2             EQU    0CDH
;cpu 8xc52
                ORG 0000H
		LJMP MAIN
		ORG 0023H
                ljmp INT_232


WDTRST		EQU    0A6H		;看门狗定时器寄存器
;************宏定义

CONST_1MSH      EQU     0FCH
CONST_1MSL      EQU     065H     ;按1ms定时,定时器初值
CONST_10MSH	EQU	0DCH
CONST_10MSL	EQU	000H
CONST_100MSH	EQU	00H
CONST_100MSL	EQU	00H
_R1		EQU	50H
_R2		EQU	51H
_R3		EQU	52H
;口线定义
igb	        BIT     P1.1
BIT_ESCL        BIT     P1.6
BIT_ESDA        BIT     P1.7
in1    		BIT     P0.0
in2    		BIT     P0.1
in3             BIT     p0.2
SMSLED          BIT     P3.5
READYLED        BIT     P3.7

;--用户位定义
BIT_EEF         BIT     22H.0
COM_DATE_OK    	BIT     22H.1
SMS_DATE_0K     BIT     22H.2
COM_DATE_READY  BIT     22H.3
BIT_LASTBYTE	BIT	22H.4
SEND_OK         BIT	22H.5
READ_OK         BIT	22H.6
COMD_OK    	BIT     22H.7      ;校验成功标致
;--寄存器定义
SUM             EQU     57H
CONST_1MSL      EQU     065H
SDATE_LEN       EQU     58H        ;发送数据长度
RDATE_LEN	EQU	59h        ;接收数据长度
STACK_TOP       EQU     30H        ;定义堆栈首址48
BUF_SEND        EQU     80H        ;发送缓冲区首址
BUF_DATA     	EQU     60H        ;接收缓冲区首址



;---------------------------------------------------------------------------------------
		ORG 0100H
MAIN:
		MOV    	SP,#STACK_TOP		;栈
		MOV    	PSW,#00H			;0号工作区

                MOV    	P0,#0FFH
                MOV    	P1,#0FFH
                MOV    	P2,#0FFH
                MOV    	P3,#0FFH

                SETB   	BIT_ESDA
                SETB   	BIT_ESCL


;--------------------RAM空间清0及测试----------------------------
       	        MOV    	R0,#0
M_1:
		MOV    	@R0,#0
		DJNZ   	R0,M_1
	;--定时器T0,T1参数设置
		MOV    	TMOD,#00010001B		;定时器T0,T1工作于方式1(16位定时)
		MOV    	TH0,#CONST_1MSH
		MOV    	TL0,#CONST_1MSL
	;--串口参数设置
		MOV    	SCON,#01010000B     	;sm0 sm1 sm2 ren tb8 rb8 ti ri
		MOV    	TH2,#0FFH
		MOV    	TL2,#070H
		MOV    	RCAP2H,#0FFH		;波特率    115200  57600   38400   28800   19200   9600  7200  4800  3600  2400
		MOV    	RCAP2L,#0DCH		;TH2:TL2=  FF:FD   FF:FA   FF:F7   FF:F4   FF:EE   FF:DC FF:D0 FF:B8 FF:A0 FF:70
		MOV    	T2CON,#00110100B	;TF2 EXF2 RCLK TCKL EXEN2 TR2 C/T2 CP/RL2
		MOV    	IP,#00010000B           ;中断优先        *  * PT2 PS PT1 PX1 PT0 PX0
	        MOV    	IE,#00010000B           ;中断使能寄存器  EA X ET2 ES ET1 EX1 ET0 EX0

                        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   	LCALL	DELAY10MS
    	SETB	IGB
   	LCALL	Delay10MS
    	CLR	IGB
    	LCALL	DELAY100MS
    	LCALL	DELAY100MS
    	SETB	IGB
	LCALL	INITMODEM

wait:   LCALL   DELAY100MS
        JNB      COM_DATE_READY,WAIT_1
        LCALL    explain
WAIT_1:
        JNB     IN1,SENDA
        JNB     IN2,SENDB
        JNB     IN3,SENDC
        AJMP    WAIT


	lcall	sms_send

	ajmp	WAIT

RET


;INCLUDE MODEM.ASM
;--------------------------------------------------------------------
;  本程序处理gsmMODEM的初始化,
;
;  InitModem    --初始化MODEM,9600 BPS,
;
;--------------------------------------------------------------------
;===========================
;复位并关闭回显
;===========================
InitModem:
        SETB    EA
        SETB    READYLED
     	MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_RESET
        MOV     R2,#6
IM_1:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_1
IM_2:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#6
        MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
IM_21:
	lCALL	DELAY10MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_21
   	lCALL	CHECK_UP
        jnb	COMD_OK,im_2
         ;RET
;=====================================
;设置自动搜索GSM网
;=====================================
        MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_GOGSM
        MOV     R2,#11
IM_3:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	    @R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_3
IM_4:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#11
    	MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
IM_41:
	lCALL	DELAY100MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_41
   	lCALL	CHECK_UP
        jnb	COMD_OK,im_4
;==================================
;SET PDU OR TEXT
;==================================
        MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_SETSMS0
        MOV     R2,#11
IM_7:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_7
IM_8:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#11
        MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
 IM_81:
	lCALL	DELAY100MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_81
   	lCALL	CHECK_UP
        jNb	COMD_OK,im_8

;=====================================
;波特率9600BPS
;=====================================
 	MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_SCOMRATE
        MOV     R2,#13
IM_9:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_9
IM_10:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#13
        MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
IM_101:
	lCALL	DELAY100MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_101
  	lCALL	CHECK_UP
        jNb	COMD_OK,im_10

;=====================================
;设置TXT MODEL UCS2
;=====================================
 	MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_STECHAR
        MOV     R2,#21
IM_11:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_11
IM_12:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#21
        MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
IM_121:
	lCALL	DELAY100MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_121
  	lCALL	CHECK_UP
        jNb	COMD_OK,im_12
        ;RET
        ;==============================
        ;设置短信中心号码
        ;==============================
SET_CENTER_NUMBER:
        MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_SETSMS1
        MOV     R2,#24

IM_5:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,IM_5
IM_6:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#24
       	MOV	R1,#BUF_DATA
	MOV	RDATE_LEN,#0
        SETB    TI
IM_61:
	lCALL	DELAY100MS
	MOV     A,RDATE_LEN
        CJNE    A,#6,IM_61
  	lCALL	CHECK_UP
        jnb	COMD_OK,im_6
        CLR     EA
        CLR     READYLED
        ret

;**************************************
;======================================
;SEND SMS
;======================================
sms_send:
        SETB    EA
        CLR     SMSLED
        MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_msglen
        MOV     R2,#11
SS_1:
        CLR     A
        MOVC    A,@A+DPTR
        MOV	@R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,SS_1
SS_2:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#11
        MOV	R1,#BUF_DATA
        MOV     RDATE_LEN,#0
        SETB    TI
SS_DELAY:
        LCALL   DELAY100MS
        MOV     A,RDATE_LEN
        CJNE    A,#4,SS_DELAY
        LCALL   CHECK_UP
        JNB     READ_OK,SS_2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        MOV     R0,#BUF_SEND
        MOV     DPTR,#TABLE_MSGDATE
        MOV     R2,#69
SS_3:
        CLR     A
        MOVC    A,@A+DPTR
        MOV     @R0,A
        INC     DPTR
        INC     R0
        DJNZ    R2,SS_3
SS_4:
        MOV     R0,#BUF_SEND
        MOV     SDATE_LEN,#69
        MOV	R1,#BUF_DATA
        MOV     RDATE_LEN,#0
        SETB    TI
SS_41:
	LCALL   DELAY100MS
        MOV     A,RDATE_LEN
        CJNE    A,#13H,SS_41
        LCALL   CHECK_UP
        JNB     SEND_OK,SS_4
        CLR     EA
        SETB    SMSLED
        ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;串口中断
;IN      R0,R1
;OUT     RDATE_LEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT_232:
    	               ;关闭串口中断
	PUSH 	ACC			;保护现场
	PUSH 	PSW
	PUSH	DPL
	PUSH	DPH

        JBC 	RI,I_232_RCV
I_232_SEND:
        CLR     TI
        MOV     A,SDATE_LEN
        JZ      I_232_EOF
        MOV     A,@R0
        MOV     SBUF,A
        INC     R0
        dec     SDATE_LEN
        LJMP   I_232_EOF
I_232_RCV:
        CLR     RI
	MOV	A,SBUF

⌨️ 快捷键说明

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