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

📄 ex8-2aa.asm

📁 《增强型8051单片机实用开发技术》例程代码
💻 ASM
字号:
$include (STC12C5A.INC) 	;包含STC12C5A60S2单片机寄存器定义文件
ADDRT	EQU	0100H
	ORG	 	0000H
	LJMP	MAINT		;跳至主程序入口地址
	ORG		0023H		;串行口中断服务程序入口
	LJMP	INTSET
MAINT:MOV	SP,#60H
	MOV		PCON,#80H	;波特率加倍
	MOV		SCON,#10010000B	;置工作方式2,并允许接收
	MOV		DPTR,#ADDRT	;设置数据块首址ADDRT的地址指针
	MOV		R0,#00H		;设置发送字节初值
	SETB	ES			;允许串行口中断
	SETB	EA	    	;CPU开中断
	MOVX	A, @DPTR	;取第一个发送数据
	MOV		C,P			;数据补偶
	MOV		TB8,C
	MOV		SBUF,A		;启动串行口,发送数据
	SJMP 	$
;中断服务程序
INTSET:JB	RI,LOOPT1	;判断是否接收中断,若RI=1,则转接收乙机发送的应答信息
	CLR    	TI			;因RI=0,则TI=1,表明是甲机发送数据的中断请求
	LJMP	ENDT		;甲机发送一数据完毕跳至中断返回程序
LOOPT1:CLR	RI			;清接收中断标志
	MOV		A,SBUF		;取乙机的应答数据
	SUBB   	A,#01H		;若乙机应答信息为"00H",数据传送正确,则转LOOPT2
	JC		LOOPT2
	MOVX   	A,@DPTR 	;若乙机应答信息为"0FFH",数据传送不正确,要求重新发送
	MOV		C,P
	MOV		TB8,C
	MOV		SBUF,A		;启动串行口,重发一次数据
	LJMP	ENDT		;跳至中断返回程序
LOOPT2:INC	DPTR		;修改地址指针
	INC	R0				;修改发送字节数计数值
	MOVX	A,@DPTR		;下一个数据补偶
	MOV		C,P
	MOV		TB8,C		;不能直接使用MOV TB8,P
	MOV		SBUF,A		;启动串行口,发送新的数据
	CJNE   	R0,#80H,ENDT;判断128B数据是否发送完,若没有发送完,则中断返回
   	CLR		ES			;全部发送完毕,禁止串行口中断
ENDT:RETI			    ;中断返回
	END

⌨️ 快捷键说明

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