【微机原理及接口技术】可编程并行接口芯片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位输出端口控制
硬件上用公用的驱动电路来驱动各数码管
软件上用扫描方法实现数码显示
段控制端口电路

位控制端口电路

控制哪个(位)数码管显示
共阴极时,当位控制端口的控制码某位为高电平时,经反相驱动,便在相应数码管的阴极加上了低电平,这个数码管就可以显示数据
段控制端口作用
控制一个数码管显示什么数码
段控制端口送给数码管要显示字形的段码
段控制端口由所有数码管共用

通过位、段控制端口的共同作用才能确定哪个数码管显示什么数码

总结
到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!
相关文章:
【微机原理及接口技术】可编程并行接口芯片8255A
【微机原理及接口技术】可编程并行接口芯片8255A 文章目录 【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口(数据端口)2.与处理器接口 二、8255A的工作方式三、8255A的编程1. 写入方式控制字:控制字…...
第3天 Web源码拓展_小迪网络安全笔记
1.关于web源码目录结构 #数据库配置文件 后台目录 模板目录 数据库目录 1.1数据库配置文件: 1.1就拿wordpress来说,先到官网下载源码:Download – WordPress.org,解压源码之后: 2.2找到目录下名为 wp-config-sample.php的文件,这就是数据库配置文件: 设想: 我们在渗透…...
基于物联网技术的智能家居实训教学解决方案
引言 随着信息技术的飞速发展,,物联网(IoT)已深入至我们生活的每一个角落,从智能家居、智能健康、智能交通到智慧城市,无所不在。物联网技术已成为推动社会进步和产业升级的重要力量。智能家居作为物联网技…...
K-近邻算法(KNN)基础详解
K-近邻算法(K-Nearest Neighbors,简称KNN)是机器学习中一种简单而有效的监督学习方法,用于分类和回归任务。其核心思想基于“物以类聚,人以群分”的原则,通过计算待分类对象与已知数据集中的样本点之间的距离,找出距离最近的K个邻居,然后根据这些邻居的类别或数值来预测…...
spring aop 内部引用失效分析
背景 用了spring retry 发现在有些场景下失效,也让我想起了之前看spring 事务时会有一些场景下失效的这个问题 代码 接口public interface UserService {public void start() ;public void stop(); }实现类 Service public class UserServiceImpl implements User…...
IEDA常用快捷键(后续更新ing)
1. 快速生成语句 1.快速生成main()方法 psvm或者main回车 2.快速生成输出语句 sout,回车 3.快速生成for循环 fori或者itar,回车 2.快捷键 含义操作查找文本CtrlF替换文本CtrlR单行注释Ctrl/多行注释CtrlShift/格式化CtrlAltL复制当前内容至下一行CtrlD补全代码Alt/快速生成…...
Day03—flask与react实现交互(解决跨域问题)
flask :默认的端口为 http://127.0.0.1:5000 react :默认端口为 http://localhost:3000 两个项目运行起来之后,没有实现前后端交互调用 弄了半天,是因为没有给flask 配置跨域 解决办法: pip install flask-cors from …...
JavaScript中的闭包
闭包 闭包是什么 内部函数(嵌套函数)能够访问其外部函数(父函数)的变量,即使外部函数执行完毕后,这些变量仍会保留在内存中,因为内部函数保持着对它们的引用,从而防止了垃圾回收机制回收这些变量。闭包是函数与其词法环境(包括外…...
python画图:matpolt,设置图片尺寸,字体大小,副坐标轴,保存
文章重心: 写论文的时候,图片的大小,字体的大小,副坐标轴,这些都是很重要的因素,保存一下之前用过的画图代码单图多图(两个子图)堆叠柱状图两个Y轴的图问题: python保存的时候,我选择的是svg,但是这样图片会比较大,查重什么的需要把图片都删了(一般有文件大小限制…...
如果突然失业,靠这个项目也能养活自己,6天收入3K
在前两天,我与两位好友相约外出就餐。当时正值雨天,我们便选择了一家大排档,边品尝美食边畅谈人生。聊得尽兴,直到凌晨一点多才回到家中。其中一位朋友最近刚刚遭遇裁员,为了寻找新的工作机会,他已经经历了…...
【OpenCV 基础知识 13】高斯平滑处理图像
函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvLaplace相似)…...
web安全渗透测试工具篇(二):sqlmap常用命令和nmap常用命令
web安全渗透测试工具篇 1. web安全渗透测试-工具使用-sqlmap1.1 SQLMap 的详细使用1.1.1 SQLMap 支持五种不同的注入模式1.2.SQLmap的模块划分1.2.1.Target目标1.2.2.Request请求1.2.3.Optimization(优化):1.2.4.Injection(注入):1.2.5.Detection(检测):1.2.6.Techniques…...
STM32 USART的字符编码(发送器的实现逻辑)
目录 概述 1 字符编码 1.1 USART 字符说明 1.2 字长编程 2 发送器 2.1 字符发送 2.2 可配置的停止位 2.3 配置停止位方法 3 单字节通信 4 中断字符 5 空闲字符 概述 本文主要讲述STM32 USART的发送端功能实现的原理,包括字节编码长度,发送器…...
[市赛2024-X2]自习室
Description 临近期末考试,自习室的学生来来往往。 这可忙坏了管理自习室的大爷,他随时准备开关灯。 自习室只要有学生来,就需要开灯。一开始没有学生来之前灯是关闭的。 周日这一天共有 n 位同学来自习,第 i 个同学将在时间 …...
Spring ----> IOC
文章目录 一、 Spring 是一个包含众多工具的IoC容器二、 什么是IOC以及好处三、 如何实现loc思想四、Spring提供的实现loC的方法 --- 类注解方法注解4.1 类注解类注解概念介绍类注解的使用 4.2 方法注解Bean 一、 Spring 是一个包含众多工具的IoC容器 场景解析:首先…...
AI重塑保险业未来:机器学习在风险评估、欺诈检测与客户服务中的深度应用
🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...
某某某加固系统分析
某某某加固系统内核so dump和修复: 某某某加固系统采取了内外两层native代码模式,外层主要为了保护内层核心代码,从分析来看外层模块主要用来反调试,释放内层模块,维护内存模块的某些运行环境达到防止分离内外模块&am…...
嵌入式之音频基础知识
声音特性 1、响度:人主观上感觉声音的大小(俗称音量),由“振幅”和人离声源的距离决定,振幅越大响度越大,人和声源的距离越小,响度越大; 2、音调:声音的高低࿰…...
如何做好软件项目的沟通管理
如何做好软件项目的沟通管理 软件项目的沟通管理是确保项目信息在团队成员、利益相关者和相关群体之间有效流通的过程。良好的沟通是项目成功的关键,在项目开始时,需要制定详细的沟通计划,包括沟通的目的、对象、内容、频率和渠道等信息。 …...
linmux
了了了了了了了了了了了了了了...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

