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

📄 master.asm

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 ASM
字号:
	ORG 0000H
	LJMP MAIN
	ORG 0030H
MAIN:	MOV SP,#70H

	MOV 51H,#01H		;从机1数据
	MOV 52H,#02H
	MOV 53H,#03H
	MOV 61H,#01H		;从机2数据		
	MOV 62H,#02H
	MOV 63H,#03H            
AGAIN:	JNB P1.0,SET_NM1	;K1键按下?
	JNB P1.1,SET_NM2	;K2键按下?
	SJMP AGAIN
SET_NM1:MOV 40H,#01H		;K1键按下,设定从机1地址
	SETB 20H.7
	MOV R5,#00H
	MOV 50H,#03H		;数据块长度
	INC 51H
	INC 52H
	INC 53H
	LCALL TRS
	CLR 20H.7
	SJMP AGAIN
SET_NM2:MOV 40H,#02H		;K1键按下,设定从机2地址
	MOV R5,#00H
	MOV 50H,#03H		;数据块长度
	INC 61H
	INC 62H
	INC 63H
	LCALL TRS
	SJMP AGAIN

TRS:	MOV TMOD, #20H 		;设置T1工作方式
	MOV  TH1,#0FdH          ;设置时间常数,确定波特率
	MOV  TL1,#0FdH
	SETB TR1
	MOV  SCON,#0D8H         ;设置串行口工作方式
	MOV  PCON,#00H
	SETB EA
TX_ADDR:MOV  A,40H		;发送从机地址
	MOV SBUF,A
WAIT1:  JNB TI,WAIT1		;等待发送完
	CLR TI
RX_ADDR:JNB RI,RX_ADDR
	CLR RI
	MOV  A,SBUF             ;判断从机应答
	CJNE A,#00H,RX_ADDR	;应答错误,重发
	CLR TB8
RDT:	MOV SBUF,50H		;发送数据块长度
WAIT2:  JNB TI,WAIT2		;等待发送完
	CLR TI
RX_DT1: JNB RI,RX_DT1
	CLR RI
	MOV  A,SBUF             ;判断从机应答
	CJNE A,#00H,RDT		;应答错误,重发
	JB  20H.7,G51H		
	MOV R0,#61H
	SJMP RTRS
G51H:	MOV R0,#51H		;发送数据
RTRS:	MOV A,@R0
	MOV B,A
	MOV SBUF,A
WAIT3:  JNB TI,WAIT3		;等待发送完
	CLR TI	
RX_DT:  JNB RI,RX_DT
	CLR RI
	MOV  A,SBUF             ;判断从机应答
	CJNE A,#00H,RTRS	;应答错误,重发	
	INC R0
	MOV A,B
	ADD A,R5		;发送数据累加
	MOV R5,A
	DJNZ 50H,RTRS
RTRS1:	MOV A,R5
	MOV SBUF,A		;发送校验和
WAIT4:  JNB TI,WAIT4		;等待发送完
	CLR TI	
RX_PAR: JNB RI,RX_PAR
	CLR RI
	MOV  A,SBUF             ;判断从机应答
	CJNE A,#00H,ERR		;应答错误
	RET
ERR:    SJMP $
		
end

⌨️ 快捷键说明

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