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

📄 多机通信汇编.asm

📁 采用汇编加C语言书写的LED程序
💻 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 + -