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

📄 被叫测试程序.asm

📁 用来MCU控制
💻 ASM
字号:


;以下是pc机所接modem呼叫mcu所接modem的程序
   CHARNUM0   EQU    6H             ;要发送字符串0的数量;
   CHARNUM1   EQU    8H             ;要发送字符串1的数量;
   CHARNUM2   EQU    3H             ;要发送字符串2的数量;
   CHARNUM3   EQU    5H             ;要发送字符串3的数量;
   COMMBUF    EQU   30H             ;接收AT命令执行后返回的结果码的区域首址;
   TIME1      EQU  0FAH             ;延时程序中用到的两个变量
   TIME2      EQU  0F9H
  ;******************主程序
             ORG   0000H
             LJMP  MAIN
             ORG   0023H
             LJMP  ZD               ;转至中断服务程序
             ORG   0030H
MAIN:        MOV   SCON,#50H        ;将串行口设置为方式1,REN=1
             MOV   SP,#10H
             MOV   TMOD,#20H        ;定时器1设为模式2
             MOV   TL1,#0F4H        ;定时器初值,晶振为11.0592Mhz,波特率为2400bps
             MOV   TH1,#0F4H        ;8位重装值
             SETB  TR1              ;启动定时器1
             SETB  ES               ;允许串行中断
             CLR   EA               ;关中断
             CLR   P0.0
             SETB  P0.1
             SETB  P0.2
;***************发送AT0 命令
 FSAT0:	     MOV   R2,#CHARNUM0	    ;要发送字符的数量
	     MOV   R0,#0H
             MOV   DPTR,#CODE0      ;CODE0为发送字符的地址
             MOV   R1,#COMMBUF
             MOV   R4,#0H
             CLR   RI
             ACALL LOOP
     BRR1:   JBC   RI,SUN0        ;查询接收标志位
             SJMP  BRR1
      SUN0:  ACALL LIN
             CJNE  R4,#7,BRR1
             CLR   RI
             MOV   R1,#COMMBUF          ;结果码的校验
JIAOYAN0:    MOV   A,@R1
             CJNE  A,#4FH,JXJIAOYAN0
             DEC   R4
             INC   R1
  PDK2:      MOV   A,@R1
             CJNE  A,#4BH,PDK
             AJMP  DELY
JXJIAOYAN0:  DJNZ  R4,JUMPER0
             AJMP  ZHONGJI0
JUMPER0:     INC   R1
             AJMP  JIAOYAN0
ZHONGJI0:    LJMP  FSAT0
PDK:         DJNZ  R4,PDK1
             AJMP  ZHONGJI0
PDK1:        INC   R1
             AJMP  PDK2
DELY:        ACALL DELY0
             MOV   R1,#COMMBUF

             ACALL NEXT
;***************发送AT1 命令
FSAT1: 	     MOV   R2,#CHARNUM1	    ;要发送字符的数量
	     MOV   R0,#0H
             MOV   DPTR,#CODE1      ;CODE0为发送字符的地址
             MOV   R1,#COMMBUF
             MOV   R4,#0H
             ACALL LOOP
      BRR3:  JBC   RI,SUN1
             SJMP  BRR3
      SUN1:  ACALL LIN
             CJNE  R4,#7,BRR3
             CLR   RI
             MOV   R1,#COMMBUF          ;结果码的校验
JIAOYAN1:    MOV   A,@R1
             CJNE  A,#4FH,JXJIAOYAN1
             DEC   R4
             INC   R1
    PDK5:    MOV   A,@R1
             CJNE  A,#4BH,PDK3
             AJMP  COMMA
JXJIAOYAN1:  DJNZ  R4,JUMPER1
             AJMP  ZHONGJI1
JUMPER1:     INC   R1
             AJMP  JIAOYAN1
ZHONGJI1:    LJMP  FSAT1
   PDK3:     DJNZ  R4,PDK4
             AJMP  ZHONGJI1
PDK4:        INC   R1
             AJMP  PDK5
COMMA:       ACALL NEXT
COMMA1:      CLR   RI
             MOV   R4, #0
             MOV   R1,#20H
             SETB  EA
             SETB  ES
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             CLR   EA
             CLR   ES
             MOV   R1,#20H         ;结果码的校验

JIAOYAN01:   MOV   A,@R1
             CJNE  A,#43H,JXJIAOYAN01
             DEC   R4
             INC   R1
             MOV   A,@R1
             CJNE  A,#4FH,JXJIAOYAN01
             CLR   EA
             CLR   ES
             AJMP  GOHOME
JXJIAOYAN01: DJNZ  R4,JUMPER01          ;*要标志第一行命令发送不成功
             AJMP  COMMA1
JUMPER01:    INC   R1
             AJMP  JIAOYAN01
   GOHOME:   ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             ACALL  DELAY
             

             CLR   P0.1
             CLR   RI
             MOV   R1,#40H
    BBC  :   JBC   RI,SUN011        ;查询接收标志位
             SJMP  BBC
      SUN011:ACALL LIN
             CLR   P0.2
             SJMP  BBC











;****************中断服务程序

 ZD :        CLR   EA
             JB    RI,JUST          ;RI=1,为接收中断
             SJMP  OVER
 JUST:       MOV   A,SBUF
             MOV   @R1,A
             INC   R1
             INC   R4               ;记录接收到字符的数量
             CLR   RI
 OVER:       SETB  EA
             RETI                   ;中断返回





 NEXT:       MOV   R1,#COMMBUF
 NEXT1:      MOV   @R1,#0
             INC   R1
             CJNE  R1,#40H,NEXT1
             RET
;***********************************
LOOP:        CLR   TI
             MOV   A,R0
             MOVC  A,@A+DPTR
	     MOV   SBUF,A
             JNB   TI,$
             INC   R0
             DJNZ  R2,LOOP
             CLR   TI
             RET
;************************
     LIN:    CLR   RI
             MOV   A,SBUF
             MOV   @R1,A
             INC   R1
             INC   R4
             RET
;*****************延时子程序
DELY0:       MOV   R0,#100
DELY1:       MOV   R2,#100
DELY2:       DJNZ  R2,DELY2
             DJNZ  R0,DELY1
             RET
DELAY:       MOV  R3,#TIME1
LOOP2:       MOV  R5,#TIME2
             NOP
             NOP
LOOP1:       DJNZ R5,LOOP1
             DJNZ R3,LOOP2         ;延时时间等于(4+10*TIME2+20*TIME1)*机器周期
             RET

CODE0:  DB      'A','T','&','F',0AH,0DH                 ;恢复出厂设置
CODE1:  DB      'A','T','S','0','=','1',0AH,0DH         ;
CODE2:  DB      '+','+','+'                             ;由on-line状态返回到command状态
CODE3:  DB      'A','T','H',0AH,0DH                     ;挂机,结束通话
             END

⌨️ 快捷键说明

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