汇编语言--8251串行接口应用试验

题目

自发自收试验:将3000H起始的10个单元中的起始数据发送到串口,然后自接自收保存到4000H起始的内存单元中

实验电路图

在这里插入图片描述

实验代码

;===========================================================
; 文件名: A82512.ASM
; 功能描述: 自收自发实验程序, 源地址4000H, 目的地址3000H
;===========================================================

IOY0         	EQU  0600H        ;IOY0起始地址
IOY1         	EQU  0640H        ;IOY1起始地址
M8251_DATA		EQU IOY0+00H*2
M8251_CON		EQU IOY0+01H*2
M8254_2			EQU IOY1+02H*2
M8254_CON		EQU IOY1+03H*2

SSTACK	SEGMENT STACK
		DW 64 DUP(?)
SSTACK	ENDS
CODE	SEGMENT
		ASSUME CS:CODE
START:	MOV AX, 0000H
		MOV DS, AX
		;初始化8254,得到收发时钟
		MOV AL, 0B6H
		MOV DX, M8254_CON
		OUT DX, AL
		MOV AL, 0CH
		MOV DX, M8254_2
		OUT DX, AL
		MOV AL, 00H
		OUT DX, AL
		;复位8251
		CALL INIT
		CALL DALLY
		;8251方式字
		MOV AL,7EH
		MOV DX, M8251_CON 
		OUT DX, AL
		CALL DALLY
		;8251控制字 
		MOV AL, 34H
		OUT DX, AL
		CALL DALLY
		MOV DI, 3000H
		MOV SI, 4000H
		MOV CX, 000AH
A1:		MOV AL, [SI]
		PUSH AX
		MOV AL, 37H
		MOV DX, M8251_CON
		OUT DX, AL 
		POP AX			
		MOV DX, M8251_DATA
		OUT DX, AL					;发送数据
		MOV DX, M8251_CON 
A2:		IN AL, DX					;判断发送缓冲是否为空
		AND AL, 01H
		JZ A2
		CALL DALLY
A3:		IN AL, DX					;判断是否接收到数据
		AND AL, 02H
		JZ A3
		MOV DX, M8251_DATA
		IN AL, DX					;读取接收到的数据
		MOV [DI], AL
		INC DI
		INC SI
		LOOP A1
		MOV AX,4C00H
		INT 21H					;程序终止
INIT:	MOV AL, 00H				;复位8251子程序
		MOV DX, M8251_CON
		OUT DX, AL
		CALL DALLY
		OUT DX, AL
		CALL DALLY
		OUT DX, AL
		CALL DALLY
		MOV AL, 40H
		OUT DX, AL
		RET
DALLY:	PUSH CX
		MOV CX,3000H
A5:		PUSH AX
		POP AX
		LOOP A5
		POP CX
		RET		
CODE	ENDS
		END START

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海轰Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值