并行IO接口8255
文章目录
- 8255A
- 芯片组成
- 外设接口
- 三个端口
- 两组端口
- 关于C口(★)
- 内部逻辑
- CPU接口
- 8255A的控制字(★)
- 位控字(D7=0)
- 方式选择控制字(D7=1)
- 8255A的工作方式
- 工作方式0(基本输入/输出方式)(★)
- 工作方式1(选通输入/输出方式)
- 工作方式2(双向传输方式)
- 补充(★)
8255A
8255A包含3个带锁存或缓冲的数据端口,可与外设并行进行数据交换。
- 含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力,即A端口(通道)、B端口(通道)、C端口(通道)
- 也可联合使用,构成单线、双线或三线联络信号的并行接口,此时,C端口完全服务于A、B端口。
- 可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
芯片组成

外设接口
三个端口
- 端口A:PA0~PA7(8位)
A组,工作方式0、1、2
常作数据端口,功能最强大。 - 端口B:PB0~PB7(8位)
B组,工作方式0、1
常作数据端口 - 端口C:PC0~PC7(8位)
A组控制高4位PC4~PC7,B组控制低4位PC0~PC3,仅支持工作方式0
可作数据、状态和控制端口;分两个4位,每位可独立操作
两组端口
A组:
- 端口A(PA0~PA7)
- 端口C的高4位(PC4~PC7)
B组:
- 端口B(PB0~PB7)
- 端口C的低4位(PC0~PC3)
关于C口(★)
-
C端口被分成两个4位端口,两个4位端口只能以方式0工作,可分别选择输入或输出
-
在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组
-
当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被用来为A、B端口输出控制信号或输入状态信号。
内部逻辑
三个端口在内部分成两组控制
A组控制电路控制A端口和端口C的上半部分
B组控制电路控制B端口和端口C的下半部分
- 根据CPU的命令字控制8255A的工作方式,每组控制电路从读写控制逻辑接受各种命令,从内部数据总线接受控制字并发出命令到各自相应的端口。
- 根据CPU的命令字对端口C的每一位实现按位置位(1)或复位(0)。
CPU接口

连接系统端的主要引线:
D0~D7——控制字输入端口CS——片选信号RD、WR——决定内外部总线上信息传送的方向A0、A1——端口寻址RESET——复位信号,接系统总线的RESET,使8255A复位
| A1 | A0 | 选择 |
|---|---|---|
| 0 | 0 | 端口A |
| 0 | 1 | 端口B |
| 1 | 0 | 端口C |
| 1 | 1 | 控制寄存器 |
8255A的控制字(★)
2个控制字:
- 方式选择控制字(方式控制字):确定三个端口的工作方式,给出标识位。
- 通道C置位复位控制字(位控字):控制C口的某一位的输出,或用于设置
INTE位。
两个控制字共用一根地址线,即A0、A1选择是控制器还是端口。
使用D7位判断控制字,即选择方式控制字和位控字。
D7=1表示为方式选择控制字(方式控制字)
D7=0表示为通道C置位/复位控制字(位控字)
位控字(D7=0)
-
通道C 置位 / 复位控制字用于对单个位的操作。
-
端口C的每一位都可以通过控制寄存器写入 置位 / 复位控制字,使之置位(输出为1)或复位(输出为0)。
-
C口的控制靠写入控制字,而不是直接写入C口。
-
D6,D5,D4——未用 -
D3,D2,D1——选择C口某一位 -
D0——置位 / 复位

方式选择控制字(D7=1)

| 位 | 功能 |
|---|---|
| D7 | 必须是1 |
| D6,D5 | A组方式选择(0、1、2) |
| D4 | (PA0~PA7)输入、输出 |
| D3 | (PC4~PC7)输入、输出 |
| D2 | B组方式选择(0、1) |
| D1 | (PB0~PB7)输入、输出 |
| D0 | (PC0~PC3)输入、输出 |
8255A的工作方式
- 方式0:基本输入输出方式,适用于无条件传送和查询方式的接口电路。
- 方式1:选通输入输出方式,适用于查询和中断方式的接口电路。
- 方式2(仅A口):双向选通传送方式,适用于与双向传送数据的外设。适用于查询和中断方式的接口电路。
链接1
链接2
工作方式0(基本输入/输出方式)(★)
-
A口、C口的高4位,B口、C口的低4位 可分别定义为输入或输出,各端口互相独立,故共有16种不同的组合。
-
8255相当于三个独立的8位简单接口。
-
各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。
-
定义为输出的口均有锁存数据的能力,而定义为输入的口则无锁存能力。
-
在方式0下,C口还可以通过位控字按位进行置位和复位。
-
C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口。
时序:
- A0 = 1、A1 = 1,D0~D7写入控制字
- 改变RD#和WR#,选择读写
- 对于输出:通过A0、A1选择A、B、C端口,通过D0~D7写入数据
- 对于输入:通过A0、A1选择A、B、C端口,通过D0~D7读出数据
应用:
- 用于连接简单外设。
- 适用于:无条件输入输出方式。查询输入输出的方式:把A、B口作为8位数据的输入或输出口,C口的高/低4位分别定义为A、B口的控制位和状态位。
工作方式1(选通输入/输出方式)
-
A、B口作输入或输出口,C口的部分位固定用作A、B口的选通控制信号。
-
每一个8位数据端口(A、B)均可设置为输入、输出方式,且两种工作方式均可锁存,而且可以进行中断控制。
-
输入时
PC3(INTR)、PC4(STB#)、PC5(IBF),输出时PC3(INTR)、PC6(ACK#)、PC7(OBF#)三位控制端口A状态。 -
输入时
PC2(STB#)、PC1(IBF)、PC0(INTR), 输出时PC2(ACK#)、PC1(OBF#)、PC0(INTR)三位控制端口B状态。 -
未被用到的C端口,都可用位控字随便设置输入输出。
-
A、B口的
INTR可输出中断到CPU,INTE可控制中断使能失能。 -
对
INTE的可通过写入端口C的对应位。输入时端口A的INTE对应PC4,端口B的INTE对应PC2。输出时端口A的INTE对应PC6,端口B的INTE对应PC2。
| 数据输入 | |
|---|---|
| STB# | 数据选通信号,表示外设已经准备好数据。将输入设备送来的数据锁存在输入锁存器中。 |
| IBF | 输入锁存器满,表示已经接收到数据,由STB的前沿产生,CPU的IN指令清除此信号。 |
| INTR | 中断请求信号,由STB后沿产生,要求CPU读取数据。 |
| INTE | 中断允许位,允许INTR发出中断请求。当INTE = 1和IBF位高电平时允许INTR请求。 |
| 数据输出 | |
|---|---|
| OBF# | 输出缓冲器满信号,通知外设取走数据 。 |
| ACK# | 外设响应信号,表示已从数据段口取走数据。会使OBF变成无效的高电平。 |
| INTR | 通知CPU输出下一个数据,ACK上升沿产生(常接到8259A)。 |
| INTE | 中断允许位,INTE = 1和OBF为高电平时,允许产生INTR信号。 |
| 输入 | |
|---|---|
![]() | ![]() |
| 输出 | |
|---|---|
![]() | ![]() |
时序:
应用:
- 主要用于中断控制方式下的输入输出。
- C口除部分位用作选通信号外,其余位可工作在方式0下,作为输入或输出线。特别是A、B均为方式1时仅使用C口的6条线,余下二条线可作为单独的输入输出线,用程序指定其数据传送方向。
工作方式2(双向传输方式)
-
外设通过端口A即可向CPU发送数据,又能从CPU接收数据。
-
工作方式2只适用于端口A,端口B仍按方式0或方式1工作。
-
端口A可工作于双向方式,端口C的PC7~PC3位作为端口A的控制/状态信号端口,PC2~PC0用于B组。
-
端口A的输入/输出均有锁存功能。在方式2工作状态下,端口A既可工作于查询方式,又可工作于中断方式。
-
读数据时,WR的下降沿使得中断信号intr关闭,屏蔽外界中断,对应的是箭头1
-
读数据的上升沿2,将数据送入到OBF中,OBF处于下降沿,表示数据已经保存到输出缓存区,即输出缓存区已经满了。OBF的下降沿使得ACK的成功接收数据,处于下降沿,处于有效位,对应箭头3
-
ack的上升沿,会打开intr的中断,使得中断有效。可以继续接受外部的数据。
-
写数据时,stb低电平有效,送来的数据已经保存在锁存器中,其下降沿使得IBF,输入数据缓冲区产生上升沿,对应的是箭头7
-
stb上升沿,打开中断,使得intr高电平有效,同之cpu调用中断处理程序,中断处理程序发出读指令RD,低电平有效,读出IBF中的数据,使得IBF从高电平变为低电平,数据清空,对应箭头9

时序:

-
地址在读数据以前就一定要稳定,并且前后都要有一定的保险时间,对应的就是CS,A1,A0
-
D0~D7表示的是总线上获取的数据,紧紧跟在RD后,RD是在下降沿写入,在上升输出到总线上
-
主要分清两种情况,一种是有外界事件引起的,一种是由当前的状态变化引起的。
应用:
- 可用于中断控制输入输出方式。
- 当A口工作于方式2时,B口可工作于方式1(此时C口的剩余位都用作B口选通控制线);B口也可工作于方式0(此时C口的剩余位也只能用作方式0下的输入输出线)。
补充(★)
对端口C的数据输出有两种办法:
-
通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效
-
通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器
相关文章:
并行IO接口8255
文章目录 8255A芯片组成外设接口三个端口两组端口关于C口(★) 内部逻辑CPU接口 8255A的控制字(★)位控字(D70)方式选择控制字(D71) 8255A的工作方式工作方式0(基本输入/输…...
Level DB --- SkipList
class SkipList class SkipList 是Level DB中的重要数据结构,存储在memtable中的数据通过SkipList来存储和检索数据,它有优秀的读写性能,且和红黑树相比,更适合多线程的操作。 SkipList SkipList还是一个比较简单的数据结构&a…...
第二十二周机器学习笔记:动手深度学习之——线性代数
第二十周周报 摘要Abstract一、动手深度学习1. 线性代数1.1 标量1.2 向量1.3 矩阵1.4 张量1.4.1 张量算法的基本性质 1.5 降维1.5.1 非降维求和 1.6 点积1.6.1 矩阵-向量积1.6.2 矩阵-矩阵乘法 1.7 范数 总结 摘要 本文深入探讨了深度学习中的数学基础,特别是线性代…...
leetcode 50个简单和中等难度的题
简单难度题目(25个) 两数之和 (Two Sum)有效的括号 (Valid Parentheses)罗马数字转整数 (Roman to Integer)最长公共前缀 (Longest Common Prefix)合并两个有序链表 (Merge Two Sorted Lists)移除链表元素 (Remove Linked List E…...
多模态大模型(5)--LLaVA
人类通过如视觉、语言、听觉等多种渠道与世界互动,每个单独的渠道在表示和传达某些概念时都有其独特的优势,人工智能(AI)的一个核心愿景是开发一个能够有效遵循多模态视觉和语言指令的通用助手,与人类意图一致…...
Vue实训---3-element plus的使用与布局
1.引入ElementPlus ElementPlus官网指南:快速开始 | Element Plus 在我们的项目main.js文件中,加入红框里的内容: import { createApp } from vue import App from ./App.vue // 引入全局样式,是对样式的初始化 import "/a…...
TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型
TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型 一、TritonServer中加载模型1.1 搭建本地仓库1.2 配置文件1.3 服务端代码1.4 启动TritonServer二、Gunicorn上启动Web服务2.1 安装和配置Gunicorn2.2 启动Gunicorn三、调用模型四、性能优化与监控五、总结在深度学习…...
快速删除 node_modules 目录的集中方法
要快速删除 node_modules 目录,可以使用以下几种方法: 方法 1: 使用 rimraf 如果你在 Windows 上或者想要一个跨平台的解决方案,可以使用 rimraf 这个工具,它是 Node.js 版本的 rm -rf。 安装 rimraf: npm install …...
shell编程--if判断与for循环
shell编程与其他编程语言一样都有if判断与循环,今天了解一下if判断语句和for循环语句。 if判断语句讲解 我们写出一个if判断 a 1 b 2if [ "$a" -eq "$b" ]; thenecho "相等" elseecho "不相等" fi 在shell中-eq是表示…...
Makefile基础应用
1 使用场景 在Linux环境下,我们通常需要通过命令行来编译代码。例如,在使用gcc编译C语言代码时,需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力,每次调试代码都需要重新在命令行下重新编译,重复…...
计算机网络基础全攻略:探秘网络构建块(1/10)
一、计算机网络基础概念 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…...
SpringMVC-Day1
SpringMVC 1.SpringMVC介绍 springMVC是一种基于Java实现MVC模型的轻量级Web框架 优点: 使用简单,开发便捷(相较于Servelt) 灵活性强 使用SpringMVC技术开发web程序流程 创建web工程(Maven结构) 设置…...
【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题
VMware 虚拟机因为笔记本突然断电故障了,开机提示“Entering emergency mode. Exit the shell to continue.”,如下图所示: 解决方法:输入命令: xfs_repair -v -L /dev/dm-0 注:报 no such file or direct…...
探索 RocketMQ:企业级消息中间件的选择与应用
一、关于RocketMQ RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统&…...
vue中v-if和v-for优先级
在Vue中,v-for的优先级高于v-if。这意味着在同一个元素上使用v-if和v-for时,v-for将首先被解析,然后是v-if。 下面是一个代码示例: <template><div><div v-for"item in items" v-if"item.isDispl…...
使用Kotlin写一个将字符串加密成short数组,然后可以解密还原成原始的字符串的功能
文章目录 一、运行效果1.1 单个字符串加解密1.2 多个字符串数组加解密二、源代码2.1 控制流图2.2 实现的源代码一、运行效果 1.1 单个字符串加解密 待加密的单个字符串: 测试字符串转化成short数组-----字节卷动 单个字符串加密后的数据: [19914, -21676, 31702, 23463, 2833…...
windows C#-取消任务列表(上)
如果不想等待异步控制台应用程序完成,可以取消该应用程序。 通过遵循本文的示例,可将取消添加到下载网站内容的应用程序。 可通过将 CancellationTokenSource 实例与每个任务进行关联来取消多个任务。 如果选择 Enter 键,则将取消所有尚未完成…...
Linux---ps命令
Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名,运行此进程的用户名。PID: 进程ID(Process ID),每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…...
解决k8s拉取私有镜像401 Unauthorized 问题
拉取镜像时未指定账户和密码通常是因为需要访问的镜像仓库启用了认证,但 Kubernetes 默认配置中未提供访问凭据。要解决此问题,可以按照以下步骤配置镜像仓库的认证信息: 1. 创建 Kubernetes Secret 为镜像仓库配置访问凭据,使用…...
Ruby 模块(Module)
Ruby 模块(Module) 概述 Ruby 是一种动态、开放源代码的编程语言,以其简洁明了的语法和强大的功能而闻名。在 Ruby 中,模块(Module)是一个重要的概念,它用于封装一组相关的方法和常量。模块提…...
如何用HsMod解锁炉石传说60+项隐藏功能:终极优化指南
如何用HsMod解锁炉石传说60项隐藏功能:终极优化指南 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx开发的炉石传说功能增强插件,为玩家提供…...
学了几天 Web 安全,终于搞懂什么是 XSS 了
xss的详细介绍最近开始正式学习 Web 安全。前面陆续学了:HTTPCookieSessionJWT RBAC然后发现很多地方都会提到一个东西:XSS以前一直感觉这个漏洞很抽象。网上很多文章一上来就是:<script>alert(1)</script>然后说:“弹…...
掌握Umi-OCR:5分钟上手开源免费离线文字识别工具
掌握Umi-OCR:5分钟上手开源免费离线文字识别工具 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。…...
DSP、FPGA、STM32大对决:谁才是嵌入式开发的“天选之子”?
在嵌入式开发的广阔天地里,DSP、FPGA 和 STM32(作为通用 MCU 的典型代表)可以说是三款绕不开的核心处理器。很多初学者甚至有一定经验的工程师在选择时都会陷入纠结:我的项目到底该选哪一个?为了帮你彻底理清思路&…...
3分钟终极指南:用ncmdump轻松解密网易云音乐NCM格式文件
3分钟终极指南:用ncmdump轻松解密网易云音乐NCM格式文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump正是解决这个问题的神器&…...
从无人机到自动驾驶:一文读懂ROS中ENU、NED、相机坐标系到底怎么用
从无人机到自动驾驶:ROS中ENU、NED与相机坐标系实战指南 当你在无人机上安装Realsense相机时,是否遇到过相机数据与飞控数据"对不上"的情况?或者在自动驾驶项目中,GPS的北东地坐标如何与激光雷达的东北天坐标对齐&#…...
拒绝延迟与黑屏:向日葵控制端 局域网直连 P2P 穿透与无头服务器(Headless)虚拟显示器优化指南
拒绝延迟与黑屏:向日葵控制端 局域网直连 P2P 穿透与无头服务器(Headless)虚拟显示器优化指南 在远程开发、分布式部署及日常运维场景中,我们经常需要远程连接到公司的高配工作站、机房服务器或家中的调试开发机。 作为国内普及…...
终极指南:使用MuSiC单细胞反卷积工具解密组织细胞组成
终极指南:使用MuSiC单细胞反卷积工具解密组织细胞组成 【免费下载链接】MuSiC Multi-subject Single Cell Deconvolution 项目地址: https://gitcode.com/gh_mirrors/music2/MuSiC 还在为复杂的组织样本分析而困惑吗?想要从批量RNA测序数据中精确…...
3分钟学会:如何在浏览器中零服务器依赖将HTML转为Word文档
3分钟学会:如何在浏览器中零服务器依赖将HTML转为Word文档 【免费下载链接】html-docx-js Converts HTML documents to DOCX in the browser 项目地址: https://gitcode.com/gh_mirrors/ht/html-docx-js 还在为HTML内容导出Word文档而烦恼吗?html…...
抖音批量下载工具:高效获取用户主页全作品的专业解决方案
抖音批量下载工具:高效获取用户主页全作品的专业解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...








