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

📄 sms11.asm

📁 这是单片机程序
💻 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 + -