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

📄 fasong.asm

📁 多个仿真例子
💻 ASM
字号:
;一个以89C51为核心构成的数据采集系统,要求每分钟向上位机发送32字节的采集数据
;通讯波特率9600波特,系统晶振11.0592MHz,数据采用校验和方式进行校验。
;当接收方接收的数据出错时,向发送方发送ASCII码"E",否则发送"R"。
;若发现接收错误,发送方应该重发数据。
S_END	BIT	00H
ACK	BIT	01H
OK	BIT	02H
MIN	BIT	03H
CR2	EQU	0AH
CR3	EQU	0BH	;1区R2,R3
BR0	EQU	10H
BR2	EQU	12H	;2区R0,R2
LEN	EQU	32	;数据块长度
ADDR1	EQU	30H	;数据块首地址
	ORG	0
	LJMP	START
	ORG	0BH
	LJMP	TS
	ORG	23H
	LJMP	TR
	ORG	30H
START:	MOV	SP,#60H
;===============================
;向发送数据缓冲区赋值
;===============================
	MOV	R0,#ADDR1
	MOV	R2,#26
	MOV	A,#'A'
LL1:	MOV	@R0,A
	INC	A
	INC	R0
	DJNZ	R2,LL1
	MOV	R2,#4
	MOV	A,#'0'
LL2:	MOV	@R0,A
	INC	A
	INC	R0
	DJNZ	R2,LL2
	MOV	@R0,#0AH	;存换行符
	INC	R0
	MOV	@R0,#0DH	;存回车符
;=================================
	MOV	TMOD,#21H
	MOV	TH0,#4CH
	MOV	TL0,#0
	MOV	TH1,#0FDH
	MOV	TL1,#0FDH
	SETB	PT0
	SETB	ET0
	ANL	PCON,#7FH	;SMOD=0
	MOV	SCON,#50H
	SETB	ES
	SETB	EA
	SETB	TR0
	SETB	TR1
	MOV	CR2,#20
	MOV	CR3,#60
	CLR	S_END
	CLR	ACK
	CLR	OK
	CLR	MIN
LOOP:	JNB	MIN,$
	CLR	MIN
	MOV	R2,#LEN
	MOV	R0,#ADDR1
	CLR	A
L1:	ADD	A,@R0
	INC	R0
	DJNZ	R2,L1
	MOV	@R0,A	;存检查和
L2:	MOV	BR2,#LEN+1
	MOV	BR0,#ADDR1
	MOV	A,ADDR1
	MOV	SBUF,A	;发送第一个字节
	JNB	S_END,$	;没有发送完毕就等待
	CLR	S_END
	JNB	ACK,$	;没有应答则等待
	CLR	ACK
	JNB	OK,L2	;接收方返回错误代码则重发
	SJMP	LOOP
TS:	PUSH	PSW
	SETB	RS0
	CLR	RS1	;选择1区R寄存器
	CLR	TR0
	MOV	TH0,#4CH
	MOV	TL0,#0
	SETB	TR0
	DJNZ	R2,TS1
	MOV	R2,#20
	DJNZ	R3,TS1
	MOV	R3,#60
	SETB	MIN	;一分钟到,置MIN标志
TS1:	POP	PSW
	RETI
TR:	PUSH	PSW
	PUSH	ACC
	CLR	RS0
	SETB	RS1	;选2区R寄存器
	JNB	TI,SR2
	CLR	TI
	DJNZ	R2,SR1
	SETB	S_END
	SJMP	SR2
SR1:	INC	R0
	MOV	A,@R0
	MOV	SBUF,A
	SJMP	SR4
SR2:	JNB	RI,SR4
	CLR	RI
	SETB	ACK
	MOV	A,SBUF
	CJNE	A,#'R',SR3
	SETB	OK
	SJMP	SR4
SR3:	CLR	OK
SR4:	POP	ACC
	POP	PSW
	RETI
	END




⌨️ 快捷键说明

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