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

📄 gsmsms.asm

📁 实现短消息发送报警功能
💻 ASM
字号:
org   0000h
        ljmp  main
        ;======================
        reset   equ   p1.1
        ;======================
        rega     equ   30h
        rimod    equ   31h
        sendnum  equ   32h
        sicon    equ   33h
        datacount equ  34h

        ;======================
        r_sp     equ   60h

        recbuff  equ   80h
        sendbuff equ   90h


        baud     equ   0dch;




        org   0023h
        push  psw
        push  acc
        push   00h
       ; push  dph
        ;push  dpl




        jbc ri,r_ceive

r_send: clr ti              ;发送数据
        mov  a,sendnum
        jz r_send0
        mov r0,sicon
        mov a,@r0
        mov sbuf,a

        inc sicon
        dec sendnum
        ljmp r_send1

r_send0:nop
r_send1:ljmp d_reti





;**********************************
;多机通信下的接受数据状态
;**********************************

r_ceive:
        mov rega,sbuf
        clr ri
        mov a,rimod
        anl a,#07h
        rl a
        add a,rimod

	mov dptr,#ritab
	jmp @a+dptr
ritab:  ljmp r_mod0
        ljmp r_mod1
        ljmp r_mod2


r_mod0: mov  @r1,rega
        inc  r1
        inc  datacount
r_mod1:
r_mod2:

d_reti: pop 00h
       ; pop dpl
       ; pop dph
        pop acc
        pop psw
        reti



main:  mov   sp,#r_sp
       mov   rimod,#0
       lcall  iniall
       ;sjmp   $
       lcall modelon



       ;===================
       ;reset  the  model
       ;===================
       mov    r0,#sendbuff
       mov    r6,#6
       mov    dptr,#atz0db
get_atz0db:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_atz0db
       mov    sendnum,#6
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       mov    datacount,#0
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       ;sjmp   $

;================================
;发送设置数据格式AT+CMGF=1
;================================
       mov    r0,#sendbuff
       mov    r6,#11
       mov    dptr,#formatedb
get_formatedb:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_formatedb
       mov    sendnum,#11
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       mov    datacount,#0
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       ;SJMP   $
;==================================
;==================================
;==================================
;SEND  AT+COPS=0
;==================================
       mov    r0,#sendbuff
       mov    r6,#11
       mov    dptr,#copsdb
get_copsdb:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_copsdb
       mov    sendnum,#11
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       mov    datacount,#0
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150MS
;==============================
;SET CENTER NUMBER
;==============================
       mov    r0,#sendbuff
       mov    r6,#24
       mov    dptr,#centerdb
get_centerdb:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_centerdb
       mov    sendnum,#24
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       mov    datacount,#0
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
;==============================
;send tonum data
;AT+CMGS=13815041807
;==============================
       mov    r0,#sendbuff
       mov    r6,#20
       mov    dptr,#tonumdb
get_tonumdb:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_tonumdb
       mov    sendnum,#20
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       mov    datacount,#0
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       ;SJMP   $

;=============================
;send  data
;=============================
       mov    r0,#sendbuff
       mov    r6,#19
       mov    dptr,#datadb
get_datadb:
       mov    a,#0
       movc   a,@a+dptr
       mov    @r0,a
       inc    r0
       inc    dptr
       djnz   r6,get_datadb
       mov    sendnum,#19
       mov    sicon,#sendbuff
       mov    r1,#recbuff
       setb   ti
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       lcall  delay150ms
       sjmp   $



;***************************
;cpu install
;***************************
iniall:     mov th0,#15h
            mov tl0,#0a0h

            mov th1,#0ffh
            mov tl1,#00h


            mov tmod,#11h


            mov th2,#0ffh
            mov tl2,#baud
            mov rcap2h,#0ffh
            mov rcap2l,#baud
            mov t2con,#00110100b  ;tf2 exf2 rclk tclk exen2 tr2 c/t2 cp/rl2
            mov scon,#01010000b   ;sm0 sm1 sm2 ren tb8 rb8 ti ri
            mov ip,#00010000b     ;*   *  pt2  ps pt1 px1 pt0 px0
            mov tcon,#00000000b   ;tf1 tr1 tf0 tr0 ie1 it1 ie0 it0
            mov ie,#00010000b     ;ea   *   *  es  et1 ex1 et0 ex0

            setb ea
            ret


modelon:
           setb   reset
           lcall  delay10ms
           clr    reset
           lcall  delay150ms
           lcall  delay150ms

           setb   reset
           lcall  delay10ms
           ret
delay1ms:  mov   r6,#1ah
dl0:       mov   r7,#18h
dl1:       nop
           nop
           djnz  r7,dl1
           djnz  r6,dl0
           ret

delay10ms: mov   r5,#10
dl2:       lcall delay1ms
           djnz  r5,dl2
           ret
delay150ms:mov   r4,#15
dl3:       lcall delay10ms
           djnz  r4,dl3
           ret
atz0db:   db  'A','T','Z','0',0DH,0AH
formatedb:db  'A','T''+','C','M','G','F','=','1',0DH,0AH
copsdb:   db  'A','T','+','C','O','P','S','=','0',0DH,0AH
tonumdb:  db  'A','T','+','C','M','G','S','=','1','3','8','6','1','1','9','8','4','5','4',0DH
datadb:   db  4Ah,51h,4Ah,26h,47h,4Dh,53h,20h,54h,45h,53h,54h,20h,4Fh,4Bh,21h,1Ah,5eh,5ah
centerdb: db  'A','T','+','C','S','C','A','=','+','8','6','1','3','8','0','0','5','1','9','5','0','0',0DH,0AH
          end

⌨️ 快捷键说明

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