【微机原理与汇编语言】并行接口8255实验

一、实验目的

  1. 掌握可编程并行接口芯片8255的工作原理及初始化方法
  2. 掌握8255在实际应用中的硬件连接及编程应用

二、实验要求

根据实验室现有条件,针对实验任务,设计实验方案并进行实现。

三、实验内容

启动0#计数器,每计5个数(计数时钟用脉冲源产生),产生一次中断,在中断服务程序中,启动1#计数器工作,用其输出控制灯按照10HZ的频率闪烁。同时检测开关状态,当某一开关合上时将对应编号的指示灯点亮,开关断开时将对应的指示灯熄灭。控制灯闪烁5秒钟(用软件延时实现定时)后,停止1#计数器工作,普通中断结束。

四、实验线路图

五、实验程序清单

CSEG SEGMENT
ORG 100H
ASSUME CS:CSEG
START:CLI;关中断
;8259初始化MOV DX,04A0H MOV AL,13H;0001 0011,边沿触发方式,单片方式,要写入ICW4OUT DX,AL;ICW1MOV AL,20H;0010 0000,设置中断向量号ADD DX,2OUT DX,AL;ICW2MOV AL,01H;0000 0001OUT DX,AL;ICW4
;中断向量设置PUSH DSMOV AX,0MOV DS,AXMOV SI,27h*4MOV AX ,offset INTP MOV [SI],AXINC SIINC SIMOV AX,100HMOV [SI],AXPOP DS
;开放IR7中断
MOV AL,7FHOUT DX,AL;OCW1;8255初始化MOV AL,10000010B;A方式0,输出,B方式0,输入,C方式0,输出MOV DX,04C6HOUT DX,AL
;8253初始化
mov al,00010101b;计数器0,只读写低字节,方式二,十进制mov dx,04b6hout dx,alMov al,05hMov dx,04b0hOut dx,alMOV AL,00HMOV DX,04C0HOUT DX,ALmov al,01110110b;计数器1,先低后高,方式三,二进制mov dx,04b6hout dx,alMov ax,37500Mov dx,04b2hout dx,almov al,ahout dx,alSTI;开中断
WAITI:JMP WAITI;等待中断
INTP:mov al,01hmov dx,04C0hout dx,alMOV DX,04C2HIN AL,DXMOV DX,04C4HOUT DX,ALMov bx,10
dey:	mov cx,0
agn:	dec cxjnz agndec bxjnz deymov al,00hmov dx,04C0hout dx,alMOV AL,20HMOV DX,04A0HOUT DX,ALIRET
CSEG ENDS
END START

六、实验结论及总结

通过此次实验,我对8253,8255,8259的理解更加深刻了:8255提供了三个端口A,B,C,我们可以利用简单的方式0工作方式实现对端口输入输出的控制,在本次实验中,我利用8255来读取开关状态,并反映到对应的灯的状态上,8255还起到了对8253的计时器1的门控信号的控制作用。8253定时计数器有6种工作方式,在本次实验中,我利用了方式2与方式3,分别实现了对产生中断的控制与灯闪烁频率的控制。8259是中断控制器,一片8259A可以管理8级中断,每一级中断都可单独被屏蔽或允许。三者配合使用,能完成许多基本功能。

在实验一开始,心里还是有点没底的,因为无法使用试验台验证,只能凭自己的逻辑进行判断。但在温习ppt过后,自己开始动手写程序的过程中,随着问题被一一克服,我对实验的认识逐渐深刻,对程序的书写与修改逐渐熟练起来。

在本次实验中,我对遇到的问题总结如下:

1.一开始对于8253计数器的工作方式确定不下来,有考虑到方式0的使用,但是对于两个计数器:计数器0要不断地产生脉冲,进而产生中断,不能只产生一次中断就结束了,否定。计数器1控制灯的闪烁频率,同样也不能只闪一下就结束,这样也不好观察,否定。最后决定计数器0采用方式2,计数器1要控制灯闪烁的频率,所以采用方波发生器——方式3。

2.第二个问题是如何控制计数器开始与结束计数的时间。对于计数器0,因为计数器0的功能其实就是对中断产生的控制,所以可以不用门控信号操控计数器0,而利用开关中断实现。对于计数器1,我们可以在一开始给GATE1低电压,并在中断子程序开始处给其高电压使其开始工作,在中断子程序结尾处给低电压结束其工作。

3.关于中断,在程序一开始处cli关中断,在中断子程序前sti开中断,以此来完成对中断的控制。在8259初始化后记得要开放IR7中断(OCW1),在中断子程序结束时写入中断结束字(OCW2)。

经过反复的思考最终设计出了实验线路图与实验程序,它们完成的功能并不复杂,也可以说是很基础。但正是由这些基础的内容互相配合,交互进行,才得以完成更复杂的功能。我们需要对这些知识理解并加以掌握,才能为我们去研究更复杂的内容奠定牢固的基础。

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

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

相关文章

攻防世界—webbaby详解

1.ssrf注入漏洞 ssrf(服务端请求伪造)是一种安全漏洞,攻击者通过该漏洞向受害服务器发出伪造的请求,从而访问并获取服务器上的资源,常见的ssrf攻击场景包括访问内部网络的服务,执行本地文件系统命令&#…

Linux基础指令磁盘管理002

LVM(Logical Volume Manager)是Linux系统中一种灵活的磁盘管理和存储解决方案,它允许用户在物理卷(Physical Volumes, PV)上创建卷组(Volume Groups, VG),然后在卷组上创建逻辑卷&am…

双指针: 盛水最多的容器

目录 描述 解法 盛水最多的容器_牛客题霸_牛客网 描述 给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水 1.你不…

【python】ModuleNotFoundError: No Module Named ‘openyxl’

成功解决“ModuleNotFoundError: No Module Named ‘openyxl’”错误的全面指南 在Python编程中,遇到ModuleNotFoundError: No Module Named openyxl这样的错误通常意味着Python解释器无法找到名为openyxl的模块。然而,这里存在一个常见的拼写错误&#…

计算机发展史 | 从起源到现代技术的演进

computer | Evolution from origins to modern technology 今天没有参考资料哈哈 PPT:(评论区?) 早期计算工具 算盘 -算盘是一种手动操作的计算辅助工具,起源于中国,迄今已有2600多年的历史,是…

实验9 静态路由配置

实验9 静态路由配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 网络中的每个路由器都会维护一张路由表或转发表。路由表的表项记录着目的网络信息以及下一跳I 地址。路由表可以手动配置,也可以通过路由算法动态生成。静态…

使用 MDC 实现日志链路跟踪,包教包会!

在微服务环境中,我们经常使用 Skywalking、Spring Cloud Sleut 等去实现整体请求链路的追踪,但是这个整体运维成本高,架构复杂,本次我们来使用 MDC 通过 Log 来实现一个轻量级的会话事务跟踪功能,需要的朋友可以参考一…

官宣!2024 MongoDB Developer Day来了!北上深三场等你集结!

北上深开发者 专为你们打造的 MongoDB Developer Day 来了! 动手实操工作坊➕模型设计优化专场 学习 NoSQL 数据建模的最佳实践 深入探索 MongoDB 的各种可能性 和开发者同行和 MongoDB 技术专家 一起度过充实的一天! 北京(6/22&…

HBuilderx uniapp启动微信小程序报错[error] Error: Fail to open IDE

1、打开微信呢开发者工具,添加项目 创建小程序--目录(目录选择自己小程序项目下的dist/dev/mp-weixin)点击确定之后微信开发者工具会自己去编译,等待一会便好,查看微信开发者工具控制台是否有报错日志 如果发现[插件 w…

Vue05-数据绑定

一、数据绑定 1-1、v-bind指令 1-2、v-model指令 1、单项数据绑定: 2、双向数据绑定 注意: 表单元素,必须要有属性:value!!! 1-3、小结

电拖基础JIAOXUE

1.最简单的TT马达,实际就是一个减速电机: 减速箱的内部包含了一组齿轮。在实际的使用中,绝大部分的电动机都要和减速箱配合使用,因为一般的电机转速都在每分钟几千转甚至1万转以上,而在实际的使用中并不需要这么快的转…

PSO-LSSVM-Adaboost分类模型,粒子群算法优化基于最小二乘支持向量机结合Adaboost的数据分类-附代码

PSO-LSSVM-Adaboost是一种结合PSO-LSSVM和AdaBoost两种机器学习技术的方法,旨在提升模型的性能和鲁棒性。具体来说,AdaBoost是一种集成学习方法,通过组合多个弱分类器来形成一个强分类器,每个分类器针对不同的数据集和特征进行训练…

测试记录3:WLS2运行Linux界面

1.WLS1转到WLS2 (1)根据自己的平台,下载WLS2安装包 x64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi arm64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi (2&…

音频数据上的会话情感分析

情感分析,也被称为观点挖掘,是自然语言处理(NLP)中一个流行的任务,因为它有着广泛的工业应用。在专门将自然语言处理技术应用于文本数据的背景下,主要目标是训练出一个能够将给定文本分类到不同情感类别的模型。下图给出了情感分类器的高级概述。 例如,三…

2025 QS 世界大学排名公布,北大清华跻身全球前20

一年一度,2025 QS 世界大学排名公布! QS(Quacquarelli Symonds)是唯一一个同时将就业能力与可持续发展纳入评价体系的排名。 继去年 2024 QS 排名因为“墨尔本超耶鲁,新南悉尼高清华”而荣登微博热搜之后&#xff0c…

Jmeter的几种参数化方式

1.为什么要做参数化? 在用jmeter脚本进行压测的时候,为了更真实的模拟起到更好的效果,我们需要让参数动态变化起来,也就是参数化。通过参数化我们也可以更好、更灵活的维护我们的测试脚本。 2.参数化的方式 能够实现参数化的方式有…

使用freebsd-update 升级FreeBSD

为了学习使用AppJail,升级FreeBSD,从14.1-BETA3升级到14.1-RELEASE 当前最新的发布版本是14.1-RELEASE,所以upgrade后面跟了-r 版本号。 使用命令freebsd-update upgrade -r 14.1-RELEASE: freebsd-update upgrade -r 14.1-R…

彻底吃透A*算法的最优性

下面的博客将主要介绍A*算法在扩展结点(这对于寻路时间很重要)和总代价(这对于保证最后解的最优性很重要)上的最优性,并将淡化对A *完备性的介绍。 A* 算法流程 A*算法的流程如下[1]: 并定义 f ( n ) f(n…

DNS解析与Bond

一、DNS 1、DNS概念 DNS是域名系统的简称:域名和ip地址之间的映射关系互联网中IP地址是通信的唯一标识,逻辑地址访问网站,有域名,ip地址不好记,域名朗朗上口,好记。 域名解析的目的:实现访问…

LeetCode 算法:最大子数组和c++

原题链接🔗:最大子数组和 难度:中等⭐️⭐️ 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 …