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

📄 7-1.asm

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 ASM
字号:
; 多机通信,主机和从机通信程序

M10:		MOV SCON,#0D8H		;设置串行口方式3,允许接收,TB8设置为1
M101:	MOV A,R2			;发送地址帧
		MOV SBUF,A
		JNB RI,$		;等待从机应答
		CLR RI
		MOV A,SBUF
		XRL A,R2		;判断应答地址是否符合
		JZ M103
M102:	SETB TB8
		MOV SBUF,#0FFH		;不相符时重新通信
		JNB TI,$
		CLR TI
		SJMP M101
M103:	CLR TB8				;地址符合时,准备发送命令
		MOV SBUF,R3		;发送命令
		JNB RI,$		;等待从机应答
		CLR RI
		MOV A,SBUF
		JNB ACC.7,M104		;判断命令是否出错
		SJMP M102		;若从机接收命令出错,重新通信
M104:	CJNE R3,#00,M105		;判断是否要求从机接收数据
		JNB ACC.0,M102		;从机是否已经准备接收数据
SEND:	MOV SBUF,@R0			;主机发送数据
		JNB TI,$		;发送数据
		CLR TI
		INC R0			;修改地址
		DJNZ R4, SEND		;判断数据是否发送完成
		RET			;返回主程序
M105:	JNB ACC.1,M102			;从机发送数据准备就绪
REC:	JNB RI, REC			;等待接收完毕
		CLR RI
		MOV A,SBUF
		MOV @R1,A
		INC R1
		DJNZ R4, REC
		RET
S10:		CLR RI
		PUSH A			;保护现场
		PUSH PSW
		MOV A,SBUF
		XRL A,#SLAVE		;比较接收到的地址与本机地址
		JZ SI01			;判断两个地址是否相同
RETU:	POP PSW				;恢复现场
		POP A
		RETI
SI01:		CLR SM2			;地址相同,与主机继续通信,准备接收主机发送的数据
		MOV SBUF,#SLAVE		;从机地址返回给主机
		JNB RI,$		;等待接收完数据
		CLR RI
		JNB RB8,SI02		;是数据帧,跳转
		SETB SM2		;是复位信号,把SM2设置为1
		SJMP RETU
SI02:		MOV A,SBUF
		CJNE A,#02, ERR
ERR:	JC SI03
		MOV SBUF,#80H		;非法命令,发送错误字节。
		SJMP RETU
SI03:		JZ CMD0			;A = 00H,准备接收数据
CMD1:	JB F0,SI04			;发送准备就绪了吗?
		MOV SBUF,#00H		;发送准备未完成,回复主机
		SJMP RETU
SI04:		MOV SBUF,#02H		;发送准备就绪,发送准备字节给主机
		CLR F0			;清除准备发送标志
SSEND:	MOV SBUF,@R0			;发送数据
		JNB TI,$
		CLR TI
		INC R0
		DJNZ R2, SSEND
		SETB SM2		;发送完成,设置SM2 = 1
		SJMP RETU
CMD0:	JB F1,SI05			;接收准备完成了吗?
		MOV SBUF,#00H		;接收准备未完成
		SJMP RETU
SI05:		MOV SBUF,#01H		;接收准备就绪,发送准备字节给主机
		CLR F1
SREC:	JNB RI, SREC			;接收数据
		CLR RI
		MOV @R1,SBUF
		INC R1
		DJNZ R2,LP2
		SETB SM2		;接收完数据,设置SM2=1
		SJMP RETU		

⌨️ 快捷键说明

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