实验三 基本IO口扩展实验

一、实验目的

      1. 了解TTL芯片扩展简单I/O口的方法。

      2. 掌握数据输入输出程序编制的方法。

二、实验内容说明

    本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连到发光二极管显示。具体实验内容如下:

    1.开关Yi为低电平时对应的发光二极管亮,Yi为高电平时对应的发光二极管灭。

    2.当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。

    3.当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。

    4.自主设计控制及显示模式,完成编程调试,演示实验结果。

三、实验原理

    74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态;

   74LS273是一种带清除功能的8D触发器, 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

74LS244与74LS273扩展I/O口原理图

实验三 基本IO口扩展实验_第1张图片实验三 基本IO口扩展实验_第2张图片实验连线图

四、实验步骤

    1.按照实验连线图连接:

        244的CS接到ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。

        273的CS接到ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。

        该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

        该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。

    2.编写实验程序,编译链接,运行程序

    3. 拨动开关,观察发光二极管的变化。

五、实验源码

IO244	EQU	0230H	;74LS244端口地址
IO273	EQU	0230H	;74LS273端口地址

_STACK	SEGMENT	STACK
		DW	100	DUP(?)
_STACK	ENDS

_DATA	SEGMENT WORD	 PUBLIC 'DATA'
_DATA	ENDS

CODE		SEGMENT
ASSUME CS:CODE, DS:_DATA, SS:_STACK
START	PROC	 NEAR
		MOV	AX, _DATA
        	MOV DS, AX
INPUT:	
		MOV	DX, IO244
		IN	AX, DX
		CMP	AX, 0FFFFH	;若开关全为低电平
		JZ Q1			;从右往左依次点亮	
		CMP	AX, 0		;若开关全为高电平
		JZ Q2			;从左往右依次点亮
		MOV	DX, IO273
		NOT	AX			;AX取非送给273,点亮对应的二极管
		OUT	DX, AX
		JMP	INPUT
Q1:
		MOV	AX, 7FFFH
		MOV	DX, IO273
R2L:
		CALL	 DELAY		;延时
		OUT	DX, AX		;送给273,点亮对应的二极管
		ROL	AX, 1
		CMP	AX, 7FFFH
		JNE	R2L			;若相等,说明一轮从右往左已经完成,若不等,则继续循环
		JMP	INPUT
		
Q2:
		MOV	AX, 0FFFEH
		MOV	DX, IO273
L2R:
		CALL	 DELAY
		OUT	DX, AX
		ROR	AX, 1
		CMP	AX, 0FFFEH
		JNE	L2R			;若相等,说明一轮从左往右已经完成,若不等,则继续循环
		JMP	INPUT		;继续读入开关状态
Delay 	PROC NEAR		;延时子程序
Delay1:	
XOR	CX,CX		;做一个异或操作将CX清零,仅循环一次
		LOOP	$
		RET
Delay	ENDP
START	ENDP		
CODE		ENDS		
END		START

你可能感兴趣的:(微机原理实验,java,开发语言)