📄 多机通信汇编.asm
字号:
通过C51单片机品行口能够实现一台主机与多台从机通信,主机和从机之间能够相互发送和接收信息。但从机与从机之间不能通信。
ORG 0000H
JMP MAIN
MAIN: MOV TH1,#78H
MOV TL1,#78H
SETB TR1
MOV SCON,#D8H
MOV PCON,0
MOV TMOD,#20H
MAIN1:MOV A,R2 ;用R2传地址
MOV SBUF,A
JNB TI,$
CLR TI
JNB RI
CLR RI
MOV A,SBUF
XRL A,R2
JZ LOOP1
CLR TB8
MOV SBUF,#FFH
JNB TI,$
CLR TI
SETB TB8
JMP MAIN1
LOOP1: CLR TB8
MOV SBUF,R3 ;R3 SHI MING LING
JNB TI,$
CLR TI
JNB RI,$
CLR RI
MOV A,SBUF
CJNZ A,#2H,LOOP2
JMP LOOP1
LOOP2:DJNZ R3,RECEIV ; R3减一不为0则跳转到主机接收处,否则主机准备发送
SEND: MOV SBUF,@R3; ;R3用来保存发送或接收数据的起始地址
JNB TI,$
CLR TI
INC R3
DJNZ R4,SEND ;R4用来保存发送或接收的字节数
RENT
RECEIV:JNB RI,$
CLR RI
MOV A,SBUF
MOV @R3,A
INC R3
DJNZ R4,RECEIV
RENT
乙机接受程序:
MOV TMOD,#20H
MOV TH1,#E6H
MOV TL1,#E6H
SETB TR1
MOV PCON,0
MOV SCON,#FOH
MAIN: JNB RI,$
CLR RI
MOV A,SBUF
XRL A,#SLAVE
JZ LOOP1
JMP MAIN
LOOP1: CLR SM2
MOV SBUF,#SLAVE
JNB TI,$
CLR TI
JNB RI,$
CLR RI
JB RB8,NEXT
SETB SM2
JMP MAIN
NEXT:MOV A,SBUF
CJNZ A,#2H,LOOP2
JC LOOP3
LOOP2: MOV SBUF,OXFFH
JNB TI,$
CLR TI
JNB RI,$
CLR RI
JMP NEXT
LOOP3:JB PSW.5,LOOP1
MOV SBUF,#2H
JNB TI
CLR TI
JMP CHUJI
CHUJI: CJNZ A,1,SEND
RECEIVE:JNB RI,$
CLR RI
MOV @R3,SBUF
INC R3
DJNZ R4,RECEIVE
RENT
SEND: MOV SBUF,@R3
JNB TI
CLR TI
INC R3
DJNZ R4,SEND
RENT
乙机的中断接收程序:RO接收数据缓冲,R1发送数据缓冲,R2接收或发送数据量
ORG OOOOH
JMP MAIN
ORG 0X23H
JMP SSIO
MAIN: MOV TMOD,#20H
MOV TH1,#E6H
MOV TL1,#E6H
SETB TR1
MOV PCON,0
MOV SCON,#FOH
SETB PSW.3
SETB F0 ; 发送就绪标志
SETB PSW.1; 接收就绪标志
SET ES
SET EA
SJMP $
SSIO:
CLR RI
CLR ES
PUSH ACC
PUSH PSW
SETB RSO
SETB RS1
MOV A,SUBF
XRL A,#SLAVE
JZ SSIO1
RETURN: SET ES
POP PSW
POP ACC
RET
SSIO1: CLR SM2
MOV SBUF,#SLAVE
JNB TI,$
CLR TI
JNB RI,$
CLR RI
JNB RB8,SSIO2
SETB SM2
JMP RETURN
SSIO2: MOV A,SBUF
DJNZ A,#2,LOOP
LOOP: JC SSIO3
MOV SBUF,#FFH
JNB TI,$
CLR TI
JNB RI,$
CLR RI
JMP SSIO2
SSIO3: JZ RECEIVE
JB F0,SSIO4
UNREADY:MOV A,0XFF
JNB TI,$
CLR TI
JNB RI,$
CLR RI
SJMP SSIO2
SSIO4: CLR F0
MOV A,OX02H
JNB TI,$
CLR TI
SEND: MOV SBUF,@R1
JNB TI,$
CLR TI
INC R1
DJNZ R2,SEND
SETB SM2
SJMP RETURN
RECEIVE: JB PSW.1,RECE
SJMP UNREADY
RECE: CLR PSW.1
MOV A,OX02H
JNB TI,$
CLR TI
SSIO5: JNB RI,$
CLR RI
MOV @R0,SBUF
INC RO
DJNZ R2,SSIOT
SETB SM2
SJMP RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -