slave1.asm

来自「《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘」· 汇编 代码 · 共 75 行

ASM
75
字号
	ORG 0000H
	LJMP MAIN
	ORG 0023H
	LJMP  SERVE
	ORG 0030H
MAIN:	MOV SP,#60H
	MOV R5,#0
	MOV R1,#51H
 	MOV TMOD, #20H 		;设置T1工作方式
	MOV  TH1,#0FdH          ;设置时间常数,确定波特率
	MOV  TL1,#0FdH
	MOV  SCON,#0F0H         ;设置串行口工作方式
	MOV  PCON,#00H
	SETB TR1
	SETB EA
	SETB ES                 ;允许串行口中断
LP2:	MOV R7,#3
	MOV R0,#51H
LP1:	MOV A,@R0
	MOV P0,A
	LCALL DELAY
	INC R0
	DJNZ R7,LP1
	JB 2FH.0,ERR
	SJMP LP2
ERR:    MOV P0,#0FFH
	SJMP $

SERVE:	
	JBC RI,REV1		;串行口中断服务程序
	RETI
REV1:	JNB RB8,REV3
	MOV A,SBUF
	CJNE A,#01H,REV2
	CLR SM2
	SETB F0
	MOV SBUF,#00H
REV2:	RETI
REV3:	JNB F0,REVDT
	MOV A,SBUF		;接收数据块长度
	INC A
	MOV 50H,A
	CLR F0
	MOV SBUF,#00H
	RETI
REVDT:  DJNZ 50H,RT
	MOV A,SBUF		;接收校验和
	XRL A,R5
	JZ RIGHT
	MOV SBUF,#0FFH
	SETB 2FH.0
	RETI
RIGHT:  MOV SBUF,#00H
	CLR 2FH.0
	SETB SM2
	MOV R5,#0
	MOV R1,#51H
	RETI
RT:	MOV A,SBUF		;接收数据
	MOV @R1,A
	ADD A,R5
	MOV R5,A
	INC R1
	MOV SBUF,#00H
	RETI

DELAY:  MOV   	R2,#0FFH		;延时子程序
AA1:	MOV   	R3,#0FFH
AA:	NOP
    	NOP   
	DJNZ    R3,AA
	DJNZ    R2,AA1
	RET

end

⌨️ 快捷键说明

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