当前位置: 首页 > news >正文

【微机原理与汇编语言】并行接口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)。

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

相关文章:

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

一、实验目的 掌握可编程并行接口芯片8255的工作原理及初始化方法掌握8255在实际应用中的硬件连接及编程应用 二、实验要求 根据实验室现有条件,针对实验任务,设计实验方案并进行实现。 三、实验内容 启动0#计数器,每计5个数&#xff08…...

Oracle表分区的基本使用

什么是表空间 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称为表空间 什么是表分区 表分区就是把一张大数据的表,根据分区策略进行分区,分区设置完成之后,…...

6月5号作业

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数 ​ #include <iostream>using namespace std; class Slu { priv…...

中继器、集线器、网桥、交换机、路由器和网关

目录 前言一、中继器、集线器1.1 中继器1.2 集线器 二、网桥、交换机2.1 网桥2.1.1 认识网桥2.1.2 网桥的工作原理2.1.3 生成树网桥 2.2 交换机2.2.1 交换机的特征2.2.2 交换机的交换模式2.2.3 交换机的功能 三、路由器、网关3.1 路由器的介绍3.2 路由器的工作过程3.2.1 前置知…...

揭秘相似矩阵:机器学习算法中的隐形“纽带”

在机器学习领域&#xff0c;数据的处理和分析至关重要。如何有效地从复杂的数据集中提取有价值的信息&#xff0c;是每一个机器学习研究者都在努力探索的问题。相似矩阵&#xff0c;作为衡量数据之间相似性的数学工具&#xff0c;在机器学习算法中扮演着不可或缺的角色。 相似矩…...

攻防世界—webbaby详解

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

MySQL中:cmd下输入命令mysql -uroot -p 连接数据库错误

目录 问题cmd下输入命令mysql -uroot -p错误 待续、更新中 问题 cmd下输入命令mysql -uroot -p错误 解决 配置环境变量&#xff1a;高级系统设置——环境变量——系统变量——path编辑——新建——MySQL.exe文件路径&#xff08;如下图所示&#xff09; phpstudy2018软件下&am…...

【开发利器】使用OpenCV算子工作流高效开发

学习《人工智能应用软件开发》&#xff0c;学会所有OpenCV技能就这么简单&#xff01; 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; OpenCV实验大师Python SDK 基于OpenCV实验大师v1.02版本提供的Python SDK 实现工作流导出与第三方应用集…...

基础数学-求平方根(easy)

一、问题描述 二、实现思路 1.题目不能直接调用Math.sqrt(x) 2.这个题目可以使用二分法来缩小返回值范围 所以我们在left<right时 使 mid (leftright)/21 当mid*mid>x时&#xff0c;说明right范围过大&#xff0c;rightright-1 当mid*mid<x时&#xff0c;说明left范…...

c语言项目-贪吃蛇项目2-游戏的设计与分析

文章目录 前言游戏的设计与分析地图&#xff1a;这里简述一下c语言的国际化特性相关的知识<locale.h> 本地化头文件类项setlocale函数 上面我们讲到需要打印★&#xff0c;●&#xff0c;□三个宽字符找到这三个字符打印的方式有两种&#xff1a; 控制台屏幕的长宽特性&a…...

力扣2831.找出最长等值子数组

力扣2831.找出最长等值子数组 思路&#xff1a;用二维数组存每个数字的出现下标 遍历所有数字求结果当前子数组大小&#xff1a;pos[i] - pos[j] 1;当前相同数个数&#xff1a;i - j 1;需要删去的数的个数&#xff1a;pos[i] - pos[j] - i j; class Solution {public:int…...

17K star,一款开源免费的手机电脑无缝同屏软件

导读&#xff1a;白茶清欢无别事&#xff0c;我在等风也等你。 作为程序员&#xff0c;在我们的工作中经常需要把手机投票到电脑进行调试工作&#xff0c;选择一款功能强大的投屏软件是一件很必要的事情。今天给大家介绍一款开源且免费的投屏软件&#xff0c;极限投屏&#xff…...

正则表达式二

修饰符 i&#xff1a;将匹配设置为不区分大小写&#xff0c;即A和a没有区别 var str"Google Runoob taobao runoob"; var n1str.match(/runoob/g); //runoob var n2str.match(/runoob/gi); //Runoob&#xff0c;runoobg&#xff1a;重找所有匹配项&#xff0…...

我的创作纪念日--我和CSDN一起走过的1825天

机缘 第一次在CSDN写文章&#xff0c;是自己在记录学习Java8新特性中Lambda表达式的内容过程中收获的学习心得。之前也有记录工作和生活中的心得体会、难点的解决办法、bug的排查处理过程等等。一直都用的有道笔记&#xff0c;没有去和大家区分享的想法&#xff0c;是一起的朋…...

递归书写树形图示例

大叫好&#xff0c;今天书写了一个扁型转换为树型的例子&#xff0c;使用的是递归&#xff0c;请大家食用&#xff0c;无毒 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" conte…...

【python】IndexError: Replacement index 1 out of range for positional args tuple

成功解决“IndexError: Replacement index 1 out of range for positional args tuple”错误的全面指南 一、引言 在Python编程中&#xff0c;IndexError: Replacement index 1 out of range for positional args tuple这个错误通常发生在使用str.format()方法或者f-string&am…...

Spring自带定时任务@Scheduled注解

文章目录 1. cron表达式生成器2. 简单定时任务代码示例&#xff1a;每隔两秒打印一次字符3. Scheduled注解的参数3.1 cron3.2 fixedDelay3.3 fixedRate3.4 initialDelay3.5 fixedDelayString、fixedRateString、initialDelayString等是String类型&#xff0c;支持占位符3.6 tim…...

代码随想录算法训练营第二十九天|LeetCode491 非递减子序列、LeetCode46 全排列、LeetCode47 全排列Ⅱ

题1&#xff1a; 指路&#xff1a;491. 非递减子序列 - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 对于这个题我们应该想起我们做过的子集问题&#xff0c;就是在原来的问题上加一个去重操作。我们用unordered_set集合去重&#xff0c;集合中使用过的元…...

初识C++ · 优先级队列

目录 前言&#xff1a; 1 优先级队列的使用 2 优先级队列的实现 3 仿函数 前言&#xff1a; 栈和队列相对其他容器来说是比较简单的&#xff0c;在stl里面&#xff0c;有一种容器适配器是优先级队列&#xff08;priority_queue&#xff09;&#xff0c;它也是个队列&#…...

php反序列化入门

一&#xff0c;php面向对象。 1.面向对象&#xff1a; 以“对象”伪中心的编程思想&#xff0c;把要解决的问题分解成对象&#xff0c;简单理解为套用模版&#xff0c;注重结果。 2.面向过程&#xff1a; 以“整体事件”为中心的编程思想&#xff0c;把解决问题的步骤分析出…...

OpenClaw汽车保养助手:Qwen2.5-VL-7B解析故障灯照片生成检修指南

OpenClaw汽车保养助手&#xff1a;Qwen2.5-VL-7B解析故障灯照片生成检修指南 1. 为什么需要汽车故障灯智能助手 上周我的车突然亮起了发动机故障灯&#xff0c;黄色警示图标在仪表盘上闪烁。作为一个非专业车主&#xff0c;我面临两个选择&#xff1a;要么花半天时间排队去4S…...

OpenClaw邮件处理方案:Qwen2.5-VL-7B自动分类与回复

OpenClaw邮件处理方案&#xff1a;Qwen2.5-VL-7B自动分类与回复 1. 为什么需要邮件自动化助手 每天早晨打开邮箱时&#xff0c;面对堆积如山的未读邮件总让人心生畏惧。作为技术从业者&#xff0c;我的收件箱里混杂着技术订阅、会议邀请、账单通知和各种推广信息&#xff0c;…...

前端首屏性能指标(FP/FCP/LCP/TTI)测量全攻略

在前端开发中&#xff0c;首屏加载性能直接决定了用户的第一体验&#xff0c;而FP、FCP、LCP、TTI作为衡量首屏性能的核心指标&#xff0c;是面试和项目优化中绕不开的话题。很多开发者只知道指标的定义&#xff0c;却不清楚如何实际测量&#xff0c;本文将从开发调试、代码埋点…...

Servo_TCA:基于AVR TCA硬件PWM的零抖动伺服控制库

1. Servo_TCA 库概述&#xff1a;面向现代 AVR 架构的硬件 PWM 伺服控制方案Servo_TCA 是一个专为新一代 8 位 AVR 微控制器设计的高性能伺服驱动库&#xff0c;其核心目标是彻底消除传统软件定时伺服库中普遍存在的脉冲抖动&#xff08;jitter&#xff09;问题。该库并非对 Ar…...

React生态框架全解析,如何在 Apache 中启用 HSTS 以增强网络安全性 ?。

React前端框架概述 React是由Facebook开发并维护的开源JavaScript库&#xff0c;主要用于构建用户界面。尽管React本身是一个库&#xff0c;但其生态系统包含众多框架和工具&#xff0c;能够帮助开发者构建复杂的单页应用&#xff08;SPA&#xff09;或移动应用。以下是一些基于…...

Windows内核级游戏控制器模拟驱动实战指南

Windows内核级游戏控制器模拟驱动实战指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在Windows平台上实现游戏控制器完美模拟一直是技术爱好者和游戏玩…...

共享单车智能通信系统架构与技术解析

1. 共享单车通信系统架构解析共享单车的智能通信系统主要由四大核心模块构成&#xff1a;智能车锁、供电系统、通信模块和云端平台。这套系统设计最精妙之处在于&#xff0c;它完美结合了移动通信技术、蓝牙短距传输和GPS定位技术&#xff0c;构建了一个稳定可靠的物联网应用场…...

RT-Thread 4.1.0内核更新与静态HOOK机制解析

1. RT-Thread 4.1.0内核更新概览RT-Thread作为国内领先的物联网实时操作系统&#xff0c;其4.1.0版本的发布标志着内核稳定性和功能性又迈上了一个新台阶。作为一名长期使用RT-Thread进行嵌入式开发的工程师&#xff0c;我发现这次更新虽然看似改动不大&#xff0c;但每个特性都…...

og3x-shtc3:ESP32/ESP8266平台SHTC3温湿度传感器驱动库

1. 项目概述og3x-shtc3是一个面向 ESP32/ESP8266 平台、专为og3&#xff08;Open Gateway 3&#xff09;固件生态设计的轻量级传感器驱动扩展库&#xff0c;核心目标是为 SHTC3 数字温湿度传感器提供完整、可靠且低功耗的 Arduino 框架兼容支持。该库并非独立运行的传感器 SDK&…...

Redis RDB Tools错误排查终极指南:10个常见问题与解决方案清单

Redis RDB Tools错误排查终极指南&#xff1a;10个常见问题与解决方案清单 【免费下载链接】redis-rdb-tools Parse Redis dump.rdb files, Analyze Memory, and Export Data to JSON 项目地址: https://gitcode.com/gh_mirrors/re/redis-rdb-tools Redis RDB Tools是解…...