【微机原理及接口技术】可编程并行接口芯片8255A

【微机原理及接口技术】可编程并行接口芯片8255A


文章目录

  • 【微机原理及接口技术】可编程并行接口芯片8255A
  • 前言
  • 一、8255A的内部结构和引脚
    • 1.与外设接口(数据端口)
    • 2.与处理器接口
  • 二、8255A的工作方式
  • 三、8255A的编程
    • 1. 写入方式控制字:控制字格式
    • 2. 读写数据端口
    • 3. 读写端口C
  • 四、8255A的应用
    • 1.开关量的检测
    • 2.LED数码管的驱动
    • 3.多个LED数码管的显示
  • 总结


前言

本篇文章就8255芯片展开,包括8255A的内部结构和引脚,8255A的工作方式,8255A的编程,8255A的应用等展开详细介绍。


并行数据传输方式
以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据
适合于外部设备与微机之间进行近距离、大量和快速的信息交换
例如:微机与并行接口打印机、磁盘驱动器
微机系统中最基本的信息交换方法
例如:系统板上各部件之间,接口电路板上各部件之间

8255A简介
包括四个端口——1个控制端口,3个数据端口
还包括端口的译码和控制电路、中断控制电路
包括三种输入输出工作方式

一、8255A的内部结构和引脚

在这里插入图片描述

1.与外设接口(数据端口)

端口A:PA0~PA7
A组,支持工作方式0、1、2
端口B:PB0~PB7
B组,支持工作方式0、1
端口C:PC0~PC7
仅支持工作方式0
A组控制高4位PC4~PC7
B组控制低4位PC0~PC3

端口A:PA0~PA7
常作数据端口,功能最强大
端口B:PB0~PB7
常作数据端口
端口C:PC0~PC7
可作数据、状态和控制端口
分两个4位,每位可独立操作
控制最灵活,最难掌握

2.与处理器接口

在这里插入图片描述


二、8255A的工作方式

  • 方式0:基本输入输出
    端口A、端口B、端口C高4位和低4位——输入口或输出口
    适用于无条件传送和查询方式的接口电路
  • 方式1:选通输入输出
    端口A、端口B——输入口或输出口
    端口C——端口A和端口B的联络信号输入口或输出口
    适用于查询和中断方式的接口电路
  • 方式2:双向选通输入输出
    端口A——输入口和输出口
    端口C——一部分作为端口A的联络信号
    适用于双向传送数据的外设
    适用于查询和中断方式的接口电路

方式1输入引脚:A端口
在这里插入图片描述
方式1输入引脚:B端口
在这里插入图片描述

方式1输入联络信号
方式1需借用端口C用做联络信号同时还具有中断请求和屏蔽功能

STB——选通信号,低电平有效*
由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器
IBF——输入缓冲器满信号,高电平有效
8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器
INTR——中断请求信号,高电平有效
8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据

方式1中断控制
8255A的中断由中断允许触发器INTE控制
置位允许中断,复位禁止中断
对INTE的操作通过写入端口C的对应位实现,只要对那一位置位/复位就可以控制INTE触发器
选通输入方式下
端口A的INTEA对应PC4
端口B的INTEB对应PC2

方式1输出引脚:A端口
在这里插入图片描述

方式1输出引脚:B端口
在这里插入图片描述
方式1输出联络信号
OBF——输出缓冲器满信号,低有效*
8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走
ACK——响应信号,低有效*
外设的响应信号,指示8255A的端口数据已由外设接收
INTR——中断请求信号,高有效
当输出设备已接收数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据


三、8255A的编程

初始化过程中:写入方式控制字
利用控制端口地址,A1A0=11
工作过程中:
通过数据端口来读写外设数据:
利用端口A、B和C的地址,A1A0依次等于00、01、10
通过控制端口来写入端口C的位控制字
利用控制端口地址,A1A0=11
通过端口C来读取状态信息:
利用端口C的地址,A1A0=10
在这里插入图片描述

1. 写入方式控制字:控制字格式

在这里插入图片描述

2. 读写数据端口

初始化编程后:
当数据端口作为输入接口时,CPU执行IN指令将从输入设备得到外设数据
当数据端口作为输出接口时,CPU执行OUT指令将把CPU的数据送给输出设备
8255A具有锁存输出数据的能力
对输出方式的端口同样可以输入
不是读取外设数据
读取的是上次CPU给外设的数据

读写数据端口:示例
利用8255A的输出锁存能力,可实现按位输出控制
对输出端口B的PB7位置位的程序段:
mov DX,FFFDH ;设B端口地址为FFFDH
in AL,DX ;读出B端口原输出内容
or AL,80H ;使PB7=1
out DX,AL ;输出新的内容

3. 读写端口C

归纳1
C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出
在控制上,C端口高4位和A端口编为A组,C端口低4位和B端口编为B组

归纳2
当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用
其余引脚仍可设定工作在方式0

归纳3
对端口C的数据输出有两种办法
利用端口C的地址:
向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效——字节操作
利用控制端口地址:
向控制端口写入端口C的位控制字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器——位操作
端口C的位控制字
在这里插入图片描述
归纳4
读取的C端口数据有两种情况
未被A和B端口征用的引脚:
将从定义为输入的部分(上半部或下半部)读到引脚输入信息;
将从定义为输出的部分(上半部或下半部)读到输出锁存器中的信息
被A和B端口征用作为联络线的引脚:
将读到反映8255A状态的状态字


四、8255A的应用

作为通用的并行接口电路芯片,8255A具有广泛的应用
应用在IBM PC/XT微机上
应用于打印机接口电路
连接简易键盘
驱动LED数码管
……

1.开关量的检测

例:在工业控制过程中,经常需要检测某些开关的状态。例如,在某一系统中,有8个开关K7~K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示。通过8255A的端口A读入开关状态信息,使端口B、端口C连接的发光二极管的状态与端口A开关状态相呼应,并重复执行。假设8255A在系统中端口A、B、C及控制口的地址分别为100H,101H,102H,103H,试设计出硬件电路图,并编写初始化程序。
(1) 硬件电路
在这里插入图片描述
(2) 相应的8255A程序为:
MOV DX,103H ;控制端口地址送给DX
MOV AL, 10010000B ;控制字
OUT DX,AL ;写入控制字
L1: MOV DX,100H ;端口A地址送给DX
IN AL,DX ;从端口A读入开关状态
MOV DX,101H ;端口B地址送给DX
OUT DX,AL ;从端口B输出,控制LED
XOR AL, 0FFH ;AL← AL取反
MOV DX,102H ;端口C地址送给DX
OUT  DX, AL ;从端口C输出
JMP L1 ;循环

2.LED数码管的驱动

发光二极管LED是最简单的显示设备
由7段LED就可以组成的LED数码管
LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中
LED数码管可以显示内存地址和数据等
(1) LED数码管的工作原理
主要部分是7段发光管
顺时针分别称为a、b、c、d、e、f、g
有的产品还附带有一个小数点h
通过7个发光段的不同组合
主要显示0~9
也可以显示A~F(实现16进制数的显示)
还可以显示个别特殊字符,如-、P 等
在这里插入图片描述
LED数码管的结构
在这里插入图片描述
(2) 单个LED数码管的显示
在这里插入图片描述
在这里插入图片描述

3.多个LED数码管的显示

8个数码管:用2个8位输出端口控制
硬件上用公用的驱动电路来驱动各数码管
软件上用扫描方法实现数码显示

段控制端口电路
在这里插入图片描述
位控制端口电路
在这里插入图片描述
控制哪个(位)数码管显示
共阴极时,当位控制端口的控制码某位为高电平时,经反相驱动,便在相应数码管的阴极加上了低电平,这个数码管就可以显示数据

段控制端口作用
控制一个数码管显示什么数码
段控制端口送给数码管要显示字形的段码
段控制端口由所有数码管共用
在这里插入图片描述
通过位、段控制端口的共同作用才能确定哪个数码管显示什么数码
在这里插入图片描述


总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

想转行程序员的朋友,有什么想问的在评论区随便问,我知道的都告诉你。

你想转行程序员吗? 我自己是法学院毕业后,通过2年的努力才转行程序员成功的。 我发现对于一个外行来说,找不到一个适合自己的方向,光靠努力在一个新的行业里成功异常艰难。即使你非常努力,但方向错了也会做大量的无用…

向npm发布自己写的vue组件,使用vite创建项目

向npm发布自己写的vue组件,使用vite创建项目 创建项目 pnpm create vite输入项目名称 由于我的组件是基于 ant-design-vue和vue的,需要解析.vue文件,我又安装了下面4个。 然后执行 pnpm i安装依赖 vite.config.ts import { defineC…

太狠了,凌晨5点面试。。

(关注数据结构和算法,了解更多新知识) 网上看到一网友发文说收到面试邀请,面试时间竟然是早晨5点,这是要猝死的节奏。有的网友说应该是下午 5 点,如果是下午 5 点直接写下午 5 点就行了,或者写 17 点也行,直…

C语言系列文章 | 函数 (共 10209 字)

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 目录 函数的概念库函数自…

从关键新闻和最新技术看AI行业发展(2024.5.6-5.19第二十三期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术,同时Rocky会对这些关键信息进行解读,力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky的公众号&…

近期阅读论文

Exploring Hybrid Active-Passive RIS-Aided MEC Systems: From the Mode-Switching Perspective abstract 移动边缘计算(MEC)被认为是支持延迟敏感和计算密集型服务的有前途的技术。 然而,随机信道衰落特性导致的低卸载率成为制约MEC性能的…

Java 异步编程——Java内置线程调度器(Executor 框架)

文章目录 Java多线程的两级调度模型Executor 框架Executor 框架的组成概念Executor 框架中任务执行的两个阶段:任务提交和任务执行 在 Java1.5 以前,开发者必须手动实现自己的线程池;从 Java1.5 开始,Java 内部提供了线程池。 在J…

VMware虚拟机如何与主机共享文件夹

本机:WIN10 VMware虚拟机:WIN7 因为每次配置都爱忘记操作,目标是为了在WIN7虚拟机中可以访问本机文件 首先本机操作 新建一个共享文件夹,不带中文目录(最好不要) 点击共享 选择everyone,记得权限"读取和写入" 然后到虚拟机里面 添加一个网络位置 点击浏览,选择网…

C++面向对象程序设计-北京大学-郭炜【课程笔记(十一)】

C面向对象程序设计-北京大学-郭炜【课程笔记(十一)】 1、string(重要知识点)1.2、string的赋值和链接1.3、比较string1.4、子串1.5、交换string1.6、寻找string中的字符1.7、删除string中的字符1.8、替换string中的字符1.9、在str…

【C++】---多态

【C】---多态 一、多态的概念二、多态的定义及实现1、构成多态的2个必要条件2、什么叫做虚函数的重写?3、虚函数重写的3个例外4、建议把 析构函数 都定义为:虚函数 三、C11的两个关键字:final override1、final:修饰虚函数&#x…

k8s集群中pod的容器资源限制和三种探针

一、资源限制 总结: requests表示创建pod时预留的资源,limits表示pod能够使用资源的最大值。requests值可以被超,limits值不能超过,如果是内存使用超过limits会触发oom然后杀掉进程,如果是cpu超过limits会压缩cpu的使用…

Hudi 多表摄取工具 HoodieMultiTableStreamer 配置方法与示例

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

【Linux初探】:解锁开源世界的神秘钥匙

文章目录 🚀一、了解Linux🔥二、Linux 的发行版❤️三、Linux应用领域💥四、Linux vs Windows & mac 🚀一、了解Linux Linux是一种自由、开放源代码的操作系统,它的内核由芬兰计算机科学家Linus Torvalds在1991年创…

【九十四】【算法分析与设计】练习四蛮力法练习,排列问题和组合问题,求解最大连续子序列和问题,求解幂集问题,求解0/1背包问题,求解任务分配问题

求解最大连续子序列和问题 给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。 例如: 序列(-2,11,-4,13,-5,-2)的最大子序列和为20…

机器人支持回调接口配置(详细教程)

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 一、前言 今天,给大家介绍一下,如何在机器人中配置回调地址和接口编写。很多时候我们可能有这样的场景,收到消息后,想自己处理一下消息的内…

用Python一键生成PNG图片的PowerPoint幻灯片

在当今的商业环境中,PowerPoint演示是展示和传递信息的常用方式。然而,手动将大量图像插入到幻灯片中往往是一项乏味且耗时的工作。但是,通过Python编程,我们可以轻松自动化这个过程,节省时间和精力。 C:\pythoncode\new\folderTOppt.py 在本文中,我将介绍如何使用Python、wx…

Rust开源Web框架Salvo源码编译

1.克隆源码: https://github.com/salvo-rs/salvo.git 2.进入salve目录并运行cargo build编译 编译成功 3.编译生成的库 4.安装salve-cli git clone --recursive https://github.com/salvo-rs/salvo-cli.git 编译salve-cli

人工智能万卡 GPU 集群的硬件和网络架构

万卡 GPU 集群互联:硬件配置和网络设计 一、背景 自从 OpenAI 推出 ChatGPT 以来,LLM 迅速成为焦点关注的对象,并取得快速发展。众多企业纷纷投入 LLM 预训练,希望跟上这一波浪潮。然而,要训练一个 100B 规模的 LLM,通常需要庞大的计算资源,例如拥有万卡 GPU 的集群。以…

Google Play 提示 “您的设备与此版本不兼容“ 解决方案

一、 问题概述Google Play提示“您的设备与此版本不兼容”,无法安装应用。 遇到问题的设备为Xiaomi Mi A3,查了下这台手机的基本信息,Android One系统,版本分为9.0、10.0、11.0。 二、 问题分析Google Play的过滤器 通常有以下5种…

【Nginx <末>】Nginx 基于 IP 地址的访问限制

目录 👋前言 📫一、限制 IP 可以实现哪些功能 👀二、 项目实现 2.1 访问控制实现 2.2 Nginx 配置中指定 IP 地址 💞️三、章末 👋前言 小伙伴们大家好,前面一段时间学习了 Nginx 的相关知识&#xff0c…