📄 sms11.asm
字号:
ORG 0000H
LJMP START
ORG 000BH
LJMP INT0
ORG 0030H
START:
MOV SP,#90H
MOV SCON,#50H
MOV PCON,#00H
MOV TMOD,#21H
MOV TL1,#0FDH
MOV TH1,#0FDH
MOV TL0,#0B0H
MOV TH0,#3CH
MOV 30H,#0B4H
MOV 31H,#50H
CLR EA
SETB TR1
AT_TEST:
MOV A,#41H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#54H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
AT_OK:
CLR RI
ACALL RECEPORT
CJNE A,#4FH,AT_OK
ACALL RECEPORT
CJNE A,#4BH,AT_OK
ATE0_CLOSE:
MOV R2,#14H
MOV R3,#04H
ATE0_SEND:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,ATE0_SEND
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
ATE0_OK:
CLR RI
ACALL RECEPORT
CJNE A,#4FH,ATE0_OK
ACALL RECEPORT
CJNE A,#4BH,ATE0_OK
MODE_SET:
MOV R2,#00H
MOV R3,#09H
MODE_SEND:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,MODE_SEND
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
MODE_OK:
CLR RI
ACALL RECEPORT
CJNE A,#4FH,MODE_OK
MOV R2,A
ACALL RECEPORT
CJNE A,#4BH,MODE_OK
MOV R3,A
DEL_SMS:
MOV R2,#09H
MOV R3,#0BH
DEL_SEND:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,DEL_SEND
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
CLR RI
;DEL_OK:
; CLR RI
; ACALL RECEPORT
; CJNE A,#4FH,DEL_OK
; MOV R3,A
; ACALL RECEPORT
; CJNE A,#4BH,DEL_OK
; MOV R2,A
START1:
MOV 32H,#0FAH
MOV 33H,#64H
MOV 34H,#28H
MOV 09H,#24H
MOV 0AH,#4FH
MOV 0BH,#4BH
MOV 0CH,#25H
MOV 39H,#23H
MOV 3AH,#4FH
MOV 3BH,#4BH
MOV 3CH,#26H
SETB ET0
CLR ES
SETB EA
SETB TR0
WAIT_SMS:
;CLR RI
JNB RI,$
CLR RI
CLR EA
CLR TR0
CLR ET0
MOV A,SBUF
;ACALL RECEPORT
CJNE A,#2BH,START1;"+"
ACALL RECEPORT
CJNE A,#43H,START1;"C"
ACALL RECEPORT
CJNE A,#4DH,START1;"M"
ACALL RECEPORT
CJNE A,#54H,START1;"T"
ACALL RECEPORT
CJNE A,#49H,START1;"I"
GET_SMS_NO:
;ACALL RECEPORT
DJNZ 32H,NEXT11
MOV 32H,#0FAH
DJNZ 33H,NEXT11
MOV 33H,#64H
DJNZ 34H,NEXT11
LJMP START1
NEXT11: JNB RI,GET_SMS_NO
CLR RI
MOV A,SBUF
CJNE A,#22H,GET_SMS_NO;"""
ACALL RECEPORT
CJNE A,#53H,WAIT_SMS;"S"
ACALL RECEPORT
CJNE A,#4DH,WAIT_SMS;"M"
ACALL RECEPORT
CJNE A,#22H,WAIT_SMS;"""
ACALL RECEPORT
CJNE A,#2CH,WAIT_SMS;","
ACALL RECEPORT
MOV 40H,A
READ_DATA:
MOV 32H,#0FAH
MOV 33H,#64H
MOV 34H,#28H
MOV R2,#2BH
MOV R3,#08H
READ_SEND:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,READ_SEND
MOV A,40H;send the sms nunmber
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
DATA_RAM:
;40H is the nummber of reached sms
MOV 41H,#7EH;from 41H,put the data from pc
MOV R0,#42H
MOV R4,#01H
CLR RI
HEAD_DATA:
; CLR RI
; ACALL RECEPORT
DJNZ 32H,NEXT21
MOV 32H,#0FAH
DJNZ 33H,NEXT21
MOV 33H,#64H
DJNZ 34H,NEXT21
LJMP START1
NEXT21: JNB RI,HEAD_DATA
CLR RI
MOV A,SBUF
CJNE A,#37H,SETSIM
LJMP NEXT221
SETSIM: CJNE A,#24H,SETTRUN
LJMP SIMPROC
SETTRUN: CJNE A,#23H,HEAD_DATA
LJMP TRUNPROC
NEXT221: LCALL RECEPORT
CJNE A,#45H,HEAD_DATA
MOV 08H,#10H
GET_DATA:
LCALL RECEPORT
MOV @R0,A
INC R0
INC R4
CJNE A,#25H,GET_DATA
DEC R0
DEC R0
DEC R0
MOV @R0,#0DH
DEC R4
DEC R4
LJMP DATA_PROCESS
SIMPROC: MOV R0,#0DH
MOV 08H,#11H
SIMGET: LCALL RECEPORT
MOV @R0,A
INC R0
CJNE A,#25H,SIMGET
LJMP DATA_PROCESS
TRUNPROC:MOV R0,#1AH
MOV 08H,#12H
TRUNGET: LCALL RECEPORT
MOV @R0,A
INC R0
CJNE A,#26H,TRUNGET
DATA_PROCESS:
MOV 32H,#0FAH
MOV 33H,#64H
MOV 34H,#28H
MOV R2,#09H
MOV R3,#08H
SMS_DEL:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,SMS_DEL
MOV A,40H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
CLR RI
SMS_DEL_OK:
;CLR RI
;ACALL RECEPORT
DJNZ 32H,NEXT31
MOV 32H,#0FAH
DJNZ 33H,NEXT31
MOV 33H,#64H
DJNZ 34H,NEXT31
LJMP START1
NEXT31: JNB RI,SMS_DEL_OK
CLR RI
MOV A,SBUF
CJNE A,#4FH,SMS_DEL_OK
ACALL RECEPORT
CJNE A,#4BH,SMS_DEL_OK
; LJMP CHUCK_ADR
;JUMP_SMS:
; LJMP WAIT_SMS
;CHUCK_ADR:
; MOV A,38H;'0'
; CJNE A,44H,JUMP_SMS
; MOV A,39H;'1'
; CJNE A,45H,JUMP_SMS
TO_PC_RAM:
MOV 60H,#37H
MOV 61H,#45H
MOV 62H,#39H
MOV 63H,#48H
MOV 64H,#30H
MOV 65H,#44H
; CALL DELAY
MOV A,08H
CJNE A,#10H,SIM_DATA
MOV R0,#0DH
MOV 3DH,#0BH
MOV R1,#60H
MOV R5,#06H
LCALL SEND_DATA
LJMP BACK
SIM_DATA:CJNE A,#11H,TRU_DATA
MOV R0,#0DH
MOV 3DH,#0BH
MOV R1,#09H
MOV R5,#04H
LCALL SEND_DATA
LJMP BACK
TRU_DATA:MOV R0,#0DH
MOV 3DH,#0BH
MOV R1,#39H
MOV R5,#04H
LCALL SEND_DATA
BACK: LJMP START1
SEND_DATA:
MOV 32H,#0FAH
MOV 33H,#64H
MOV 34H,#0C8H
MOV R2,#18H
MOV R3,#08H
SEND_COMMAND:
MOV A,R2
MOV DPTR,#COMMAND
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R2
DJNZ R3,SEND_COMMAND
SEND_SIM:;MOV R0,#0DH
;MOV R2,#0BH
SIM_SEND:MOV A,@R0
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
DJNZ 3DH,SIM_SEND
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$
CLR TI
CLR RI
;wait for ">" and send the data to pc
SEND_WAIT:
;CLR RI
DJNZ 32H,NEXT41
MOV 32H,#0FAH
DJNZ 33H,NEXT41
MOV 33H,#64H
DJNZ 34H,NEXT41
LJMP OUT_SEDT
NEXT41: JNB RI,SEND_WAIT
CLR RI
MOV A,SBUF
; ACALL RECEPORT
CJNE A,#3EH,SEND_WAIT
;receive the ">" then send the data to pc
; MOV R1,#60H
; MOV R3,#06H
SEND_TO_PC:
MOV A,@R1
MOV SBUF,A
JNB TI,$
CLR TI
INC R1
DJNZ R5,SEND_TO_PC
; MOV A,#25H;'%' as end mark
; MOV SBUF,A
; JNB TI,$
; CLR TI
;send the finish command
MOV A,#1AH
MOV SBUF,A
JNB TI,$
CLR TI
;send data to pc,finished
;return to the waiting state
;wait for next command
OUT_SEDT:
RET
DELAY: MOV 35H,#05H
LOOP1: MOV 36H,#0FFH
LOOP2: MOV 37H,#0FFH
LOOP3: MOV 38H,#0FFH
LOOP4: NOP
DJNZ 38H,LOOP4
DJNZ 37H,LOOP3
DJNZ 36H,LOOP2
DJNZ 35H,LOOP1
RET
RECEPORT:
JNB RI,$
CLR RI
MOV A,SBUF
RET
COMMAND:
DB 'AT+CMGF='
DB '1'
DB 'AT+CMGD='
DB '1,4'
DB 'ATE0'
DB 'AT+CMGS='
DB '13459209'
DB '249'
DB 'AT+CMGR='
INT0: PUSH PSW
PUSH A
MOV A,R1
PUSH A
MOV A,R2
PUSH A
MOV A,R3
PUSH A
MOV A,R4
PUSH A
PUSH 32H
PUSH 33H
PUSH 34H
PUSH DPH
PUSH DPL
CLR TR0
CLR ET0
CLR EA
DJNZ 30H,OUTINT0
MOV 30H,#0B4H
DJNZ 31H,OUTINT0
MOV 31H,#0C8H
MOV R0,#0DH
MOV 3DH,#0BH
MOV R1,#60H
MOV R5,#06H
LCALL SEND_DATA
MOV R0,#1AH
MOV 3DH,#0BH
MOV R1,#60H
MOV R5,#06H
LCALL SEND_DATA
MOV R0,#25H
MOV 3DH,#0BH
MOV R1,#60H
MOV R5,#06H
LCALL SEND_DATA
OUTINT0:
POP DPL
POP DPH
POP 34H
POP 33H
POP 32H
POP A
MOV R4,A
POP A
MOV R3,A
POP A
MOV R2,A
POP A
MOV R1,A
POP A
POP PSW
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB ET0
SETB EA
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -