51单片机GPRS模块(LT8030)汇编通讯程序
stack segment para stack stack db 256 dup(0) DB 16:123456abcdefghij,0DH,0AH,00H assume cs: code,ds:data,ss:stack mov ax, data mov ds, ax push dx mov ax, 0 mov bx, 0 push ax mov al, 80h out dx, al mov dx, 3f8h mov AL, 00CH OUT DX, AL MOV AX, 0H OUT DX, AL MOV DX, 3FBH MOV AL, 00000011B OUT DX, AL MOV AL, 00000011B OUT DX, AL MOV DX, 3F9H MOV AL, 0H OUT DX, AL MOV BX, OFFSET WEN20+80 MOV AL, 0 MOV [BX], AL ; IN AL, DX TEST AL, 1EH JNZ ERR01 MOV DX, 0019 ;send many CALL TSCHR CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ TSDOK MOV CX, 22 CALL MKCHR MOV DX, 25 ;send many CALL TSCHR MOV CX, 30 ;receive many CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IDNS1 MOV CX, 21 CALL MKCHR MOV DX, 14 ;send many CALL TSCHR MOV CX, 18 ;receive many CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IUSRN MOV CX, 20 CALL MKCHR JMP TSDOK2 MOV DX, 13 ;send many CALL TSCHR MOV CX, 20 ;receive many CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ TSDOK2 MOV CX, 20 CALL MKCHR MOV DX, 33 CALL TSCHR MOV CX, 22 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IMIS MOV CX, 20 CALL MKCHR MOV DX, 10 CALL TSCHR MOV CX, 15 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IXRC MOV CX, 13 CALL MKCHR MOV DX, 12 CALL TSCHR MOV CX, 18 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IMTYP MOV CX, 18 CALL MKCHR MOV DX, 26 ;send many CALL TSCHR MOV CX, 22 CALL RECVCHR MOV CX, 24 CALL KCHR CALL SCAR MOV CX, 1 CALL MKCHR NOP NOP NOP NOP MOV DX, OFFSET WEN30 INT 21H MOV BX, AX MOV AH, 3FH MOV CX, 30360 MOV DX, OFFSET WEN31 INT 21H MOV AH, 3EH INT 21H NOP NOP NOP NOP MOV DI, OFFSET WEN31 MOV CX, 0012 MOV [DI], AL INC SI INC DI DEC CX JNZ BUZAB NOP NOP MOV DX, 33 CALL TSCHR MOV CX, 18 CALL RECVCHR MOV CX, 6 CALL MKCHR MOV DX, 26 CALL TSCHR MOV CX, 20 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ SNDHSR MOV CX, 18 CALL MKCHR MOV DX, 15 CALL TSCHR MOV CX, 20 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ SNDSTR MOV CX, 18 CALL MKCHR NOP MOV DX, 11 CALL TSCHR MOV CX, 20 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ ISTYP MOV CX, 18 CALL MKCHR MOV DX, 21 CALL TSCHR MOV CX, 22 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ ISNSI MOV CX, 18 CALL MKCHR MOV DX, 11 CALL TSCHR MOV CX, 22 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ IMCBF MOV CX, 18 CALL MKCHR NOP MOV DX, 9 CALL TSCHR MOV CX, 22 CALL RECVCHR MOV BX, OFFSET WEN20+80 MOV AL, [BX] SUB AL, 4BH JNZ ISNMD MOV CX, 18 CALL MKCHR NOP NOP MOV CX, 1 NOP MOV DX, 33 CALL TSCHR NOP POP CX LOOP RSNDB NOP MOV DX, 28096 CALL TSCHR NOP NOP NOP NOP MOV DX, 5 CALL TSCHR NOP NOP NOP LOOP BNM NOP MOV CX, 10 MOV BX, OFFSET WEN58 MOV DX, 3 CALL TSCHR MOV CX, 10 MOV CX, 60000 NOP LOOP RRR1 NOP LOOP RRR POP CX LOOP SNDCLS MOV BX, OFFSET WEN60 CALL TSCHR MOV CX, 11 MOV BX, OFFSET WEN20 CALL RCVCHR MOV CX, 12 MOV BX, OFFSET WEN20 CALL MKCHR NOP JMP KEY NOP JMP KEY IN AL, DX TEST AL, 20H JZ TSO MOV DX, 3F8H MOV AL, [BX] OUT DX, AL MOV CX, 200 NOP LOOP YES INC BX POP DX DEC DX JNE TS RET NOP MOV BX, OFFSET WEN20 IN AL, DX TEST AL, 01H JZ RECV2 MOV DX, 3F8H IN AL, DX MOV [BX], AL INC BX POP DX DEC DL JZ PP SUB AL, 4BH JZ PP0 LOOP RECV1 JMP PP MOV BX, OFFSET WEN20+80 MOV [BX], AL PUSH bx PUSH DX PUSH BX AND AL, 7FH MOV BX, 0 MOV AH, 14 INT 10H POP BX INC BX LOOP MK2 MOV CX, 85 MOV BX, OFFSET WEN20 MOV AL, 2EH INC BX LOOP MAD MOV AL, 0AH MOV AH, 14 MOV BX, 0 INT 10H POP DX POP BX POP AX RET INT 16H JZ KEY MOV AH, 0 INT 16H CMP AL, 0DH JNZ RDSTS1 MOV AL, 0AH MOV BX, 0 MOV AH, 14 INT 10H MOV AX, 4C00H INT 21H RET NOP IN AL, DX MOV AL, "?" MOV AH, 14 MOV BX, 0 MOV CX, 1 MOV DX, 3FDH IN AL, DX INT 10H LOOP YS MOV AL, 0AH MOV AH, 14 MOV BX, 0 INT 10H JMP RDSTS PUSH BX MOV BX, 0 MOV AH, 14 INT 10H POP BX RET PUSH BX MOV CX, 40 MOV BX, OFFSET WEN20 MOV AL, [BX] SUB AL, 49H JZ SCA2 INC BX LOOP SCA1 JMP SCA9 XCHG SI, BX MOV DI, OFFSET WEN16 MOV [DI], AL INC SI INC DI DEC CX JNZ SCA3 MOV SI, OFFSET WEN16+2 MOV DI, OFFSET WEN9+10 CLD MOV [DI], AL INC SI INC DI DEC CX JNZ SCA5 MOV SI, OFFSET WEN16+2 MOV DI, OFFSET WEN11+8 MOV [DI], AL INC SI INC DI DEC CX JNZ SCA61 MOV SI, OFFSET WEN16+2 MOV DI, OFFSET WEN12+9 MOV [DI], AL INC SI INC DI DEC CX JNZ SCA71 MOV SI, OFFSET WEN16+2 MOV DI, OFFSET WEN13+9 MOV [DI], AL INC SI INC DI DEC CX JNZ SCA81 POP BX PUSH bx PUSH DX PUSH BX AND AL, 7FH MOV BX, 0 MOV AH, 14 INT 10H POP BX INC BX LOOP K2 MOV AL, 0AH MOV AH, 14 MOV BX, 0 INT 10H POP DX POP BX POP AX RET IN AL, DX TEST AL, 20H JZ TSO1 MOV DX, 3F8H MOV AL, [BX] OUT DX, AL MOV CX, 8 NOP LOOP YES1 INC BX POP DX DEC DX JNE TS1 RET NOP NOP MOV BX, OFFSET WEN20 IN AL, DX TEST AL, 01H JZ RCV2 MOV DX, 3F8H IN AL, DX MOV [BX], AL INC BX POP DX DEC DL JZ RPP SUB AL, 45H JZ RPP0 LOOP RCV1 JMP RPP MOV BX, OFFSET WEN20+80 MOV [BX], AL NOP
stack ends
DATA SEGMENT PARA PUBLIC DATA
WEN1 DB AT+IISP1=*99***1#,0DH,0AH,00H
WEN2 DB AT+IDNS1=211.136.18.171,0DH,0AH,00H
WEN3 DB AT+IUSRN=WAP,0DH,0AH,00H
WEN4 DB AT+IPWD=WAP,0DH,0AH,00H
WEN5 DB AT+IMIS="AT+CGDCONT=1,IP,CMNET",0DH,0AH,00H
WEN6 DB AT+IXRC=0,0DH,0AH,00H
WEN7 DB AT+IMTYP=2,0DH,0AH,00H
WEN8 DB AT+ISTCP:203.93.5.55,1024,0DH,0AH ;open a socket
WEN9 DB AT+ISSND%:,00H,00H,00H,, ;send data to a socket
WEN11 DB AT+ISST:XXX,0DH,0AH,00H ;socket stued
WEN12 DB AT+ISRCV:XXX,0DH,0AH,00H ;recived data
WEN13 DB AT+ISCLS:XXX,0DH,0AH,00 ;close socket
WEN16 DB I/, 00H,00H,00H,, ;XXX
WEN20 DB 256 DUP(0)
WEN30 DB d:MASMlink.EXE
WEN31 DB 30360 DUP(?)
WEN32 DB 8096:
WEN38 DB D120D120D120
WEN50 DB AT+IHSRV=203.93.5.55:1024,0DH,0AH
WEN51 DB AT+IDSTR=EEEEE,0DH,0AH,00H
WEN52 DB AT+ISTYP=0,0DH,0AH,00H
WEN53 DB AT+ISNSI="5,8,N,1,0",0DH,0AH,00H
WEN54 DB AT+IMCBF=1,0DH,0AH,00H
WEN55 DB AT+ISNMD,0DH,0AH,00H
WEN56 DB EEEEE,0DH,0AH,00H
WEN58 DB 2BH,2BH,2BH,0DH
WEN60 DB AT+I,0DH
DATA ENDS
code segment para public code
start proc far
tart: mov dx, 3fbh
INC DX
INC DX
NOP
NOP
NOP
NOP
NOP
RDSTS: MOV DX, 3FDH
TSDOK: MOV BX, offset WEN1 ;AT+IISP
TSDOK1: MOV CX, 22 ;receive many
IDNS1: MOV BX, OFFSET WEN2 ;AT+IDNS1
IUSRN: MOV BX, OFFSET WEN3 ;AT+IUSRN
ERR01: JMP ERR0
TSDOK2: MOV BX, OFFSET WEN4 ;AT+IPWD
IMIS: MOV BX, OFFSET WEN5 ;AT+IMIS
IXRC: MOV BX, OFFSET WEN6 ;AT+IXRC
IMTYP: MOV BX, OFFSET WEN7 ;AT+IMTYP
SNDTCP: MOV BX, OFFSET WEN8
READF: MOV AX, 3D00H
BUZADD: MOV SI, OFFSET WEN38
BUZAB: MOV AL, [SI]
SND1234:MOV BX, OFFSET WEN9
SNDHSR: MOV BX, OFFSET WEN50 ;AT+IHSRV
SNDSTR: MOV BX, OFFSET WEN51 ;AT+IDSTR
ISTYP: MOV BX, OFFSET WEN52 ;AT+ISTYP
ISNSI: MOV BX, OFFSET WEN53 ;AT+ISNSI
IMCBF: MOV BX, OFFSET WEN54 ;AT+IMCBF
ISNMD: MOV BX, OFFSET WEN55 ;AT+ISNMD
RSNDB: PUSH CX
RSND1: MOV BX, OFFSET WEN9
SNDMAP: MOV BX, OFFSET WEN31
SNDEEE: MOV BX, OFFSET WEN56
;ISST: MOV BX, OFFSET WEN11
; MOV DX, 12
; CALL TSCHR
; MOV CX, 18
; CALL RECVCHR
; MOV CX, 20
; CALL MKCHR
; NOP
;LKLK: MOV DX, 3FDH
; IN AL, DX
; TEST AL, 1EH
; JNZ LKLK
ANM: MOV CX, 40000
BNM: NOP
SNDCLS: PUSH CX
RRR: PUSH CX
RRR1: NOP
RRR2: POP CX
SNDAT: MOV DX, 5
ERR0: JMP ERR3
TSCHR PROC NEAR
TS: PUSH DX
TSO: MOV DX, 3FDH
YES: NOP
TSCHR ENDP
ERR3: JMP ERR1
RECVCHR PROC NEAR
RECV: MOV DL, CL
RECV1: PUSH DX
RECV2: MOV DX, 3FDH
PP0: MOV AL, 4BH
PP: RET
RECVCHR ENDP
RDSTS1: JMP RDSTS
ERR1: JMP ERR
MKCHR PROC NEAR
MK: PUSH AX
MK1: MOV BX, OFFSET WEN20
MK2: MOV AL, [BX]
MAD: MOV [BX], AL
MKCHR ENDP
KEY: MOV AH, 01
ERR: JMP ERROR
RDS: JMP RDSTS
;FS: MOV CX, 0200H
; MOV DX, [0082h]
; MOV AH, 3CH
; INT 21H
; MOV BX, AX
; MOV CX, 1024H
; MOV DX, data-seg MNMN
; mov ah, 3fh
; INT 21H
; NOP
; MOV CX, AX
; MOV BX, data-seg MNMN
;FS1: MOV DX, 3FDH
; IN AL, DX
; TEST AL, 1EH
; JNZ ERROR
;FS2: TEST AL, 01H
; NOP
; TEST AL, 02H
; JZ RDS
;FS3: MOV DX, 3F8H
; MOV AL, [BX]
; OUT DX, AL
; DEC BX
; LOOP FS1
; JMP RDSTS
ERROR: MOV DX, 3F8H
INT 10H
YS: MOV AH, 14
DISPCHR PROC NEAR
DISPCHR ENDP
SCAR PROC NEAR
SCA1: XOR AX, AX
SCA2: MOV CX, 5
SCA3: MOV AL, [SI]
SCA4: MOV CX, 3
SCA5: MOV AL, [SI]
SCA6: MOV CX, 3
SCA61: MOV AL, [SI]
SCA7: MOV CX, 3
SCA71: MOV AL, [SI]
SCA8: MOV CX, 3
SCA81: MOV AL, [SI]
SCA9: RET
SCAR ENDP
KCHR PROC NEAR
K: PUSH AX
K1: MOV BX, OFFSET WEN20
K2: MOV AL, [BX]
KCHR ENDP
TS1CHR PROC NEAR
TS1: PUSH DX
TSO1: MOV DX, 3FDH
YES1: NOP
TS1CHR ENDP
RCVCHR PROC NEAR
RCV: MOV DL, CL
RCV1: PUSH DX
RCV2: MOV DX, 3FDH
RPP0: MOV AL, 45H
RPP: RET
RCVCHR ENDP
START ENDP
CODE ENDS
END START
关键词: 51单片机GPRS模块LT8030汇编通

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码