?? 多機(jī)通信匯編.asm
字號(hào):
通過(guò)C51單片機(jī)品行口能夠?qū)崿F(xiàn)一臺(tái)主機(jī)與多臺(tái)從機(jī)通信,主機(jī)和從機(jī)之間能夠相互發(fā)送和接收信息。但從機(jī)與從機(jī)之間不能通信。
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則跳轉(zhuǎn)到主機(jī)接收處,否則主機(jī)準(zhǔn)備發(fā)送
SEND: MOV SBUF,@R3; ;R3用來(lái)保存發(fā)送或接收數(shù)據(jù)的起始地址
JNB TI,$
CLR TI
INC R3
DJNZ R4,SEND ;R4用來(lái)保存發(fā)送或接收的字節(jié)數(shù)
RENT
RECEIV:JNB RI,$
CLR RI
MOV A,SBUF
MOV @R3,A
INC R3
DJNZ R4,RECEIV
RENT
乙機(jī)接受程序:
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
乙機(jī)的中斷接收程序:RO接收數(shù)據(jù)緩沖,R1發(fā)送數(shù)據(jù)緩沖,R2接收或發(fā)送數(shù)據(jù)量
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 ; 發(fā)送就緒標(biāo)志
SETB PSW.1; 接收就緒標(biāo)志
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -