📄 master.sdi
字号:
,,, ORG 0000H
0000,02 00 30,, LJMP MAIN
,,, ORG 0030H
0030,75 81 70,MAIN,MAIN: MOV SP,#70H
,,,
0033,75 51 01,, MOV 51H,#01H ;从机1数据
0036,75 52 02,, MOV 52H,#02H
0039,75 53 03,, MOV 53H,#03H
003C,75 61 01,, MOV 61H,#01H ;从机2数据
003F,75 62 02,, MOV 62H,#02H
0042,75 63 03,, MOV 63H,#03H
0045,30 90 05,AGAIN,AGAIN: JNB P1.0,SET_NM1 ;K1键按下?
0048,30 91 19,, JNB P1.1,SET_NM2 ;K2键按下?
004B,80 F8,, SJMP AGAIN
004D,75 40 01,SET_NM1,SET_NM1:MOV 40H,#01H ;K1键按下,设定从机1地址
0050,D2 07,, SETB 20H.7
0052,7D 00,, MOV R5,#00H
0054,75 50 03,, MOV 50H,#03H ;数据块长度
0057,05 51,, INC 51H
0059,05 52,, INC 52H
005B,05 53,, INC 53H
005D,12 00 77,, LCALL TRS
0060,C2 07,, CLR 20H.7
0062,80 E1,, SJMP AGAIN
0064,75 40 02,SET_NM2,SET_NM2:MOV 40H,#02H ;K1键按下,设定从机2地址
0067,7D 00,, MOV R5,#00H
0069,75 50 03,, MOV 50H,#03H ;数据块长度
006C,05 61,, INC 61H
006E,05 62,, INC 62H
0070,05 63,, INC 63H
0072,12 00 77,, LCALL TRS
0075,80 CE,, SJMP AGAIN
,,,
0077,75 89 20,TRS,TRS: MOV TMOD, #20H ;设置T1工作方式
007A,75 8D FD,, MOV TH1,#0FdH ;设置时间常数,确定波特率
007D,75 8B FD,, MOV TL1,#0FdH
0080,D2 8E,, SETB TR1
0082,75 98 D8,, MOV SCON,#0D8H ;设置串行口工作方式
0085,75 87 00,, MOV PCON,#00H
0088,D2 AF,, SETB EA
008A,E5 40,TX_ADDR,TX_ADDR:MOV A,40H ;发送从机地址
008C,F5 99,, MOV SBUF,A
008E,30 99 FD,WAIT1,WAIT1: JNB TI,WAIT1 ;等待发送完
0091,C2 99,, CLR TI
0093,30 98 FD,RX_ADDR,RX_ADDR:JNB RI,RX_ADDR
0096,C2 98,, CLR RI
0098,E5 99,, MOV A,SBUF ;判断从机应答
009A,B4 00 F6,, CJNE A,#00H,RX_ADDR ;应答错误,重发
009D,C2 9B,, CLR TB8
009F,85 50 99,RDT,RDT: MOV SBUF,50H ;发送数据块长度
00A2,30 99 FD,WAIT2,WAIT2: JNB TI,WAIT2 ;等待发送完
00A5,C2 99,, CLR TI
00A7,30 98 FD,RX_DT1,RX_DT1: JNB RI,RX_DT1
00AA,C2 98,, CLR RI
00AC,E5 99,, MOV A,SBUF ;判断从机应答
00AE,B4 00 EE,, CJNE A,#00H,RDT ;应答错误,重发
00B1,20 07 04,, JB 20H.7,G51H
00B4,78 61,, MOV R0,#61H
00B6,80 02,, SJMP RTRS
00B8,78 51,G51H,G51H: MOV R0,#51H ;发送数据
00BA,E6,RTRS,RTRS: MOV A,@R0
00BB,F5 F0,, MOV B,A
00BD,F5 99,, MOV SBUF,A
00BF,30 99 FD,WAIT3,WAIT3: JNB TI,WAIT3 ;等待发送完
00C2,C2 99,, CLR TI
00C4,30 98 FD,RX_DT,RX_DT: JNB RI,RX_DT
00C7,C2 98,, CLR RI
00C9,E5 99,, MOV A,SBUF ;判断从机应答
00CB,B4 00 EC,, CJNE A,#00H,RTRS ;应答错误,重发
00CE,08,, INC R0
00CF,E5 F0,, MOV A,B
00D1,2D,, ADD A,R5 ;发送数据累加
00D2,FD,, MOV R5,A
00D3,D5 50 E4,, DJNZ 50H,RTRS
00D6,ED,RTRS1,RTRS1: MOV A,R5
00D7,F5 99,, MOV SBUF,A ;发送校验和
00D9,30 99 FD,WAIT4,WAIT4: JNB TI,WAIT4 ;等待发送完
00DC,C2 99,, CLR TI
00DE,30 98 FD,RX_PAR,RX_PAR: JNB RI,RX_PAR
00E1,C2 98,, CLR RI
00E3,E5 99,, MOV A,SBUF ;判断从机应答
00E5,B4 00 01,, CJNE A,#00H,ERR ;应答错误
00E8,22,, RET
00E9,80 FE,ERR,ERR: SJMP $
,,,
000E,,,end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -