【接口技术】实验2:基本I/O实验

实验2 基本I/O实验

一、实验目的

1:掌握I/O端口地址译码电路的工作原理。

2:掌握简单并行接口的工作原理及使用方法。

二、实验内容

1:I/O端口地址译码实验

I/O地址译码电路不仅与地址信号有关,而且与控制信号有关。参加译码的控制信号有AEN、/IOR、/IOW。

其中AEN信号表示是否采用DMA方式传输,AEN=1时,为DMA方式,系统总线由DMA控制器占用;AEN=O时,为非DMA方式,系统总线由CPU占用。因此当采用查询和中断方式时,就要使AEN信号为逻辑0,并参加译码,作为译码有效选中 I/0端口的必要条件。

/IOR、/IOW可作为译码电路的输入线参加译码,来控制端口的读/写;也可不参加译码,而作为数据总线上的缓冲器74LS244/245的方向控制线,来控制端口的读/写。

实验电路如图所示,其中74LS74为D触发器,可直接使用实验台上的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址”输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、…),时间间隔通过软件延时实现。即实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平L7发光,CD端加低电平L7灭。

接线表如下所示:

待接线1

待接线2

I/O地址的Y2(290H——297H)

D触发器的CLK端

I/O地址的Y4(2A0H——2A7H)

D触发器的CD端

D触发器的D端

D触发器的SD端

D触发器的Q端

L7

D触发器的SD端

VCC(+5V)

流程图如下所示:

2:并行接口输入/输出实验

实验电路如图所示,简单并行输出接口电路图连接电路74LS273、74LS32。74LS273为八D触发器,8个D输入端分别接数据总线DO~D7,8个Q输出端接LED显示电路LO~L7。编程从键盘输入一个字符或数字,将其ASCII码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

实验电路如图所示,简单并行输入接口电路图连接电路74LS244、74LS32。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出KO~K7,8个数据输出端分别接数据总线DO~D7。用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。

 接线表如下所示:

待接线1

待接线2

I/O-in的接口

8位逻辑开关的接口

输入的CS端

I/O译码的Y4

I/O-out的接口

8位LED灯的接口

输出的CS端

I/O译码的Y5

流程图如下所示:

 

 

三、源程序(含注释)

实验内容1:

OUTPORT1 EQU 2A0H

OUTPORT2 EQU 2A8H

CODE SEGMENT

ASSUME CS:CODE

START:

  MOV DX,290H

  OUT DX,AL      ; DX (290H, CLK) 输出一个负脉冲,将触发器置 1

  CALL DELAY     ; 调延时子程序

  MOV DX,2A0H

  OUT DX,AL      ; DX (2A0H, CD) 输出一个负脉冲,将触发器复位

  CALL DELAY     ; 调延时子程序

  MOV AH,1       ; 功能 1:读取键盘

  INT 16H        ; 调用中断

  JE  START      ; if 没有读取到按键 goto START

  MOV AH,4CH     ; 功能 4CH:程序结束

  INT 21H        ; 调用中断,结束程序

DELAY PROC NEAR  ; 延时子程序

  MOV BX,200     ; BX <- 200

L1:

  MOV CX,0       ; CX <- 0

L2:

  LOOP L2        ; CX == 0,跳出循环,所以相当于 NOP

  DEC BX         ; BX--

  JNE L1         ; if BX != 0 goto 111

  RET            ; return

DELAY ENDP

CODE ENDS

END START

实验内容2:

简单输出接口

LS273 EQU 2A8H

CODE SEGMENT

ASSUME CS:CODE

START:

  MOV AH,0     ;调用0号功能

  INT 16H      ; 等待键盘输入

  DEC AH       ; AH--

  JZ EXIT      ; if AH == 0 goto EXIT

  ; 此时 AL 已经是输入的 ASCII

  MOV DX,LS273

  OUT DX,AL    ; ASCII 码输出到 LS273

  MOV AH,02    ; 调用2号功能

  MOV DL,AL

  INT 21H      ; 输出该字符

  JMP START    ; START

EXIT:

  MOV AH,4CH   ; 返回

  INT 21H

CODE ENDS

END START

简单输入接口

LS244 EQU 2A0H

CODE SEGMENT

ASSUME CS:CODE

START:

  MOV DX,LS244

  IN AL,DX     ; LS244 输入一个字符

  MOV AH,02    ; 调用2号功能

  MOV DL,AL

  INT 21H      ; 输出该字符

  MOV DL,0DH

  INT 21H      ; 输出回车

  MOV AH,1     ; 调用1号功能

  INT 16H      ; 检测键盘输入

  JE START     ; if 无输入 goto START

EXIT:

  MOV AH,4CH   ; 返回

  INT 21H

CODE ENDS

END START

四、遇到的问题和解决过程

问题1:实验1的参考代码中,代码段标签出现问题。汇编程序中不能使用数字作为标签名称,例如下图中的【111:】和【11:】。

解决1:将标签名称更改为字母组成的字符串,例如下图中的【L1:】和【L2:】。


问题2:在完成实验1的过程中,编译运行程序时出现写和读的报错。例如【An error occurred during tpca write at 290】。

解决2:一开始进行了电路连接的检查,我们并没有发现导线连接上的错误。接着我们怀疑是读写口处的接线存在接触不良的情况,因此重新更换了导线并插紧。后续编译运行不存在进一步的报错。

五、实验结果

实验内容1:


由上图可知,L7闪烁的程序成功编译并运行。

L7亮起状态如上图所示。

L7熄灭状态如上图所示。

随着时间的流逝,L7不断地进行亮起和熄灭状态之间的切换,直至用户按下键盘任意按键为止。

最终实验结果如视频附件2-1.mp4所示。

实验内容2:

【输出】

由上图可知,简单并行接口输出的程序成功编译并运行。

输入【0】字符后,LED灯的亮起情况如上图所示。

输入【1】字符后,LED灯的亮起情况如上图所示。

输入【2】字符后,LED灯的亮起情况如上图所示。

最终实验结果如视频附件2-2-out.mp4所示。


【输入】

由上图可知,简单并行接口输入的程序成功编译并运行。

如上图所示,先在拨码开关处输入【A】字符的ASCII码。

屏幕上显示出拨码开关处输入的字符,结果如上图所示。(后续我们增加了回车0dH,避免了字符的刷屏,结果如【输入】部分的第一张图所示)

最终实验结果如视频附件2-2-in.mp4所示。

六、体会与总结

1:使用试验箱时,需要断掉电源之后才能进行接口之间的插线工作,否则有可能会损坏实验箱及其功能部件。

2:如果环境出现读/写口处的报错,可以优先考虑是不是接线端存在接触不良的情况,选择换线或插紧。

3:学习了I/O地址译码的作用,并体会了其产生的实际效果。每个设备或端口都有一个特定的地址,译码器负责将CPU的指令定向到正确的地址。在此次实验的第一部分,我们通过Y2向CLK输出一个信号,使得D触发器工作且L7亮起,同时通过Y4向CD输出一个信号,使得D触发器复位且L7熄灭。

4:在进行接口连线时,不要完全依赖实验指导书的接线提示,需要自己理解各部分端口的关联内容,才能完成接线的工作。例如在此次实验的第二部分,我们需要理解逻辑开关处是与I/O的输入端口相连,LED显示处是与I/O的输出端口相连,而不是一味地寻找JP1接口和JP2接口的位置。

5:通过调用回车功能,可以消除字符刷屏的现象。

6:此次实验的第一部分中的参考代码给出了如何判断键盘按键是否按下,这块代码后续可以复用至第二部分中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217327.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MyBatis】MyBatis操作数据库

目录 一&#xff0c;准备工作 1.1 创建工程 1.2 准备数据 1.3 数据库连接字符串 1.4 创建持久层接口UserInfoMapper 1.5 单元测试 二&#xff0c;注解的基础操作 2.1 打印日志 2.2 参数传递 2.3 增&#xff08;Insert&#xff09; 2.4 删&#xff08;Delete&#x…

2023-11-25 LeetCode每日一题(二叉树中的伪回文路径)

2023-11-25每日一题 一、题目编号 1457.二叉树中的伪回文路径二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中…

Mindomo Desktop for Mac免费思维导图软件,助您高效整理思维

思维导图是一种强大的工具&#xff0c;可以帮助我们整理思维、提高记忆力、激发创造力。而Mindomo Desktop for Mac作为一款免费的思维导图软件&#xff0c;能够帮助我们更高效地进行思维整理和项目管理。在本文中&#xff0c;我们将介绍Mindomo Desktop for Mac的功能和优势&a…

【接口技术】实验1:简易汇编程序调试

实验1 简易汇编程序调试 一、实验目的 1&#xff1a;掌握在集成开发软件环境中汇编程序的编写、调试方法。 2&#xff1a;学会用DOS功能调用&#xff08;1号和2号&#xff09;完成输入和输出。 二、实验内容 1-1&#xff1a; 在以BUF为首地址的字节存储区存放有若干个无符…

web前端开发基础----标准流布局和非标准流布局

1&#xff0c;标准流布局 标准流&#xff0c;也称文档流或普通流&#xff0c;是所有元素默认的布局方式。 在标准流中&#xff0c;元素按照其在 HTML 中出现的顺序&#xff0c;自上而下依次排列&#xff0c;并占据其父容器内的可用空间。 标准流中的元素按照其自然尺寸和位置进…

如何将Postman API转换JMeter进行扩展

可扩展性 Postman测试无法扩展。如果您的集合中有很多请求&#xff0c;Postman / Newman将使用1个线程&#xff08;用户&#xff09;并按顺序执行这些请求&#xff0c;而不是使用多个线程并发执行。 性能测试能力 由于可扩展性限制&#xff0c;Postman不适合API性能测试。性…

AutoDL tensorboard实现可视化

1.在自己的代码中&#xff0c;writer SummaryWriter(../tf-logs)&#xff0c;具体位置看自己在哪个路径下 我的云服务器下event保存在这里&#xff0c;程序跑起来之后点开这个文件夹就能看见events 2.在容器实例中选择AutoPanel 3.选择tensorboard打开即可看见 4.出现问题 打…

你知道如何使用队列实现栈吗?(C语言)

这时一道非常经典的题型&#xff0c;因为栈和队列的性质是相反的&#xff0c;队列的数据是先入先出&#xff0c;栈的数据是后入先出&#xff0c;那么怎样使用两个队列实现栈呢&#xff1f; 225. 用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/ 这是…

PS去除图片上的文字。

问题描述&#xff1a;如何使用PS去除图片上的文字。 解决办法&#xff1a; 第一步&#xff1a;使用框选命令选中文字所在区域&#xff0c;如下图所示。 第二步&#xff0c;右键选择填充&#xff0c;选择内容填充即可。 第三步&#xff0c;文字去除效果如下。

Linux-基本指令(1.0)

Linux是一个非常流行的操作的知识&#xff0c;并提供实例帮助读者更好地理解。让我们一起来学习吧&#xff01;系统&#xff0c;也是云计算、大数据、人工智能等领域的重要基础。学习Linux命令是Linux系统管理的基础&#xff0c;也是开发过程中必不可少的技能。本博客将介绍Lin…

人工智能 -- 神经网络

1、什么是神经网络 什么是人工智能&#xff1f;通俗来讲&#xff0c;就是让机器能像人一样思考。这个无需解释太多&#xff0c;因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能&#xff1f; 从1956年夏季首次提出“人工智能”这…

[HCIE] IPSec-VPN (IKE自动模式)

概念&#xff1a; IKE&#xff1a;因特网密钥交换 实验目标&#xff1a;pc1与pc2互通 步骤1&#xff1a;R1与R3配置默认路由 R1&#xff1a; ip route-static 0.0.0.0 0.0.0.0 12.1.1.2 R2&#xff1a; ip route-static 0.0.0.0 0.0.0.0 23.1.1.2 步骤2&#xff1a;配ACL…