微原实验三 基本IO口扩展

实验内容

本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连到发光二极管显示。具体实验内容如下:
1.开关Yi为低电平时对应的发光二极管亮,高电平时对应的发光二极管灭。
2.当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。
3.当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。
4.自主设计控制及显示模式,完成编程调试,演示实验结果。

思路

1.指定74LS244和74LS273的地址;
2.进入循环,从74LS244不断读入16个开关的状态,并根据开关状态进行分支跳转:若开关全为高电平,进入处理从右往左依次点亮二极管的分支;若开关全为低电平,进入处理从左往右依次点亮二极管的分支;若不是上述两种情况,则将由74LS244端口读入的开关状态值取反后送至B口,实现开关为低电平时,对应的发光二极管亮,开关为高电平时,对应的发光二极管灭。
3.在每次执行完OUT指令送出数据后,调用delay延时子程序延时一段时间等待硬件处理完毕,之后再进行下一轮的开关状态判断与相应的输出。
4.实现二极管从左往右和从右往左依次点亮的思路是每次OUT后对AX寄存器执行ROL或ROR使其循环左移或者右移一位,便于下一轮的输出。AX寄存器每循环左移一次,就对应了被点亮的发光二极管从右往左移动了一个位置;AX寄存器每循环右移一次,就对应了被点亮的发光二极管从左往右移动了一个位置。

实验源码

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

实验结果

当开关为低电平时对应的发光二极管亮,开关为高电平时对应的发光二极管灭;当16个开关均为高电平时,发光二极管Qi从左至右轮流点亮;当16个开关均为低电平时,发光二极管Qi从右至左轮流点亮。

  • 19
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Polaris_T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值