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

📄 text1.asm

📁 51单片机串口通信汇编语言源代码
💻 ASM
字号:
;功能:
;常数定义:
SFstAdd		EQU	40H	;发送数据区的首地址
;资源定义:
SBuf0		EQU	40H	;第0个发送数据存放的地址
SBuf1		EQU	41H	;第1个发送数据存放的地址
SBuf2		EQU	42H	;第2个发送数据存放的地址
SBuf3		EQU	43H	;第3个发送数据存放的地址
SBuf4		EQU	44H	;第4个发送数据存放的地址
SBuf5		EQU	45H	;第5个发送数据存放的地址
	ORG	0000H
	AJMP	INIT
	ORG	0023H
	AJMP	Serial
	ORG	0030H
;-------------------------------------- 
;初始化程序

INIT:
	MOV	SBUF0,#0	;待发送的数据初始化
	MOV	SBUF1,#1
	MOV	SBUF2,#2
	MOV	SBUF3,#3
	MOV	SBUF4,#4
	MOV	SBUF5,#5
	MOV	SCON,#50H	;串口初始化:方式1,允许接收
	MOV	TMOD,#20H	;T1初始化:方式2,计数初值:E8H
	MOV	TH1,#0E8H
	MOV	TL1,#0E8H
	SETB	ES		;开串行中断
	SETB	EA		;开全局中断
	SETB	TR1		;启动定时器
	MOV	R1,#SFstAdd	;发送地址指针初指向:指向第一个数据
	MOV	R7,#6		;发送数据计数器初始化:6个数据
	ACALL	Sent
;-------------------------------------- 
;主程序
MAIN:
	ORL	PCON,#01H
	SJMP	MAIN
;--------------------------------------
;发送数据子程序
;功能:对R1所指向单元的数据作偶校验后发送
Sent:
	MOV	A,@R1
	MOV	C,P
	MOV	ACC.7,C
	MOV	SBUF,A
	RET
 
;甲机串行中断服务子程序
Serial:
	JB	RI,SB1		;是接收中断,则转SB1
	CLR	TI		;是发送中断,则TI清0后返回
	RETI
SB1:	
	CLR	RI		;接收中断请求标志位清0
	MOV	A,SBUF		;接收乙机发来的应答信号
	CPL	A		;乙机接收数据正确(SBUF=FFH),则转SB3
	JZ	SB3
SB2:			;乙机接收数据有误,则重发
	ACALL	Sent	;调用Sent子程序,发送R1所指向单元的数据
	RETI
SB3:
	DJNZ	R7,SB4	;数据没发送完,则转SB4发送下一个数据
	CLR	ES		;已发送完毕,则关中断,停止发送
	RETI
SB4:
	INC	R1		;调整指针,使其指向下一个待发送数据
	ACALL	Sent	;调用Sent子程序,发送R1所指向单元的数据
	RETI 

	END

⌨️ 快捷键说明

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