#C0307


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题定为本集记录有谬,切勿深究


目录

引子:并行通信

一、并行接口芯片Intel 8255A

1、8255A的内部结构

2、8255A的引脚

3、8255A的数据传输与引脚关系

二、Inter 8255A的工作方式

1、方式0:基本输入输出方式

2、方式1:选通输入输出方式

3、方式1:输入过程

4、方式1:输出过程

5、方式2:双向应答式输入输出方式

三、Inter 8255A的初始化

1、端口工作方式控制字

2、C端口置位/复位控制字


引子:并行通信

并行通信就是把一个字符的各数位用几条线同时进行传输,并行通信的信息传输速度快,信息率高。用于数据传输要求较高,距离较短的场合。

  • 同步传输:CPU用一个时序信号来管理接口和设备的动作;
  • 异步传输:CPU和接口设备之间只用应答信号联系;

一、并行接口芯片Intel 8255A

1、8255A的内部结构

  • 端口A:8位,数据输入输出锁存;
  • 端口B:8位,数据输入缓冲、输出锁存;
  • 端口C:8位,数据输入缓冲、输出锁存;端口C也可分成2个4位端口,也可作为端口A和端口B的输入输出控制线和状态信号线,与端口A、端口B配合使用;
  • A组控制和B组控制:接受CPU对控制端口的控制字,设置8255A中三个端口的工作方式;
  • 读写控制逻辑电路:接受CPU发送的读写信号,其中A0、A1寻址8255A内部寄存器,共有三个数据端口,一个控制端口;
  • 数据总线缓冲器:双向三态8bit数据缓冲器,与CPU的数据总线相连,同时与8255A的内部数据总线相连,接受从CPU发出的控制字, 输入输出数据, 向CPU传输8255A的状态字;

Inter 8255A 内部结构

2、8255A的引脚

  • PA7~PA0,PB7~PB0,PC7~PC0:端口A,B,C的引脚,用于与外设相连的并行扩展口。
  • D7~D0:数据线,用于与CPU的数据总线相连,传输8255A的命令字或I/O数据。
  • A1、A0:地址引脚,用于内部端口地址的选择,信号的组合决定了对哪一个端口进行操作。
  • RESET:复位信号输入,高有效, 8255A内部寄存器清零, 3个端口均为输入。
  • CS*:片选信号,低电平有效。
  • RD*:读信号,低电平有效。
  • WR*:写信号,低电平有效。

3、8255A的数据传输与引脚关系

CS* RD* WR* A1 A0 操作
0 0 1 0 0 读A口
0 1 读B口
1 0 读C口
1 0 0 0 写A口
0 1 写B口
1 0 写C口
1 1 写控制口

二、Inter 8255A的工作方式

方式0

基本输入输出方式

方式1

应答式输入输出方式

方式2

双向应答式输出输出方式

端口A 可用 可用 可用
端口B 可用 可用 不可用
端口C 可用 不可用,做联络线 不可用,做联络线

1、方式0:基本输入输出方式

  • 控制方式:程序方式,是一种简单的输入 / 输出方式;

    • 无条件传输接口电路:由CPU用简单的I/O指令对三个端口进行读/写;
    • 查询式接口电路:可用任一(或多)位端口充当查询信号(但通常都是选用C口承担),由CPU用简单的I/O指令对三个端口进行读/写;

2、方式1:选通输入输出方式

  • 控制方式:查询方式 / 中断方式;
  • A口 / B口工作在方式1时,C口各位做联络应答信号线,有固定的定义与时序(自动进行,不可改变);
  • 在输入输出操作中,产生固定格式的状态字,供CPU查询或向CPU申请中断。CPU从端口C中读取状态字;
  • 单向传送,初始化后只能向一个方向上传送,反方向传送必须再次初始化;
  • 方式1时的状态字(通过C口查询):
D7 D6 D5 D4 D3 D2 D1 D0
输入 I/O I/O IBF_A INTE_A INTR_A INTE_B IBF_B INTR_B
输出 OBF_A INTE_A I/O I/O INTR_A INTE_B OBF_B INTR_B

注:输入PC4、输出PC6在物理上的连接是STB*信号,但通过软件方式设置/查询INTE信号。

3、方式1:输入过程

STB* 输入,选通信号(启动信号),与外设数据同时送入。
IBF

输出,输入缓冲器满,由8255发往外设。

高,表示8255收到数据但未被CPU取走,通知外设不可再送数据;

低,表示CPU已取走数据,允许外设送新的数据。

INTR

输出,中断请求。用于8255向CPU申请中断,请求CPU接收数据。

INTE 中断允许信号,置1允许中断,置0屏蔽中断。

方式1输入的工作时序
  1. 数据与STB*由外设进入8255,STB*为低,通知8255接受数据。
  2. 8255收到STB*信号,将IBF置为1,通知外设禁止再送入数据,同时接受数据。
  3. STB*信号是由外设发出,一般有效500ns,然后自动回高。
  4. 具备3个条件:STB*为高,IBF*为高,INTE*为高,8255向CPU发中断申请信号,通知CPU取走数据。(即数据已由外设打进8255,且8255接收到,并允许中断)
  5. CPU接到中断申请后,响应中断,向8255相应端口发读信号。
  6. 读信号的下降沿复位中断申请。
  7. 上升沿复位8255向外设发的IBF信号,外设得以向8255发送下一数据。

4、方式1:输出过程

ACK*

输入,应答信号,外设送入8255,持续一段时间后由外设撤销。

有效时表示外设已取走数据

OBF*

输出缓冲器满,8255A接到CPU送来的数据后,将数据和OBF*同时送往外设

相当于启动信号,通知外设开始接收数据

INTR 输出,中断请求,用于8255向CPU申请中断,请求CPU发送数据
INTE 中断允许信号,置1允许中断,置0屏蔽中断。

方式1输出的工作时序
  1. CPU在INTR为高的情况下WR*信号有效,通过DB向8255写入数据;
  2. WR*信号的上升沿使INTR为低,禁止CPU继续向8255发送数据;
  3. WR*信号的上升沿使OBF信号有效,通知外设取走8255端口的数据;同时,CPU输入的数据也出现在8255相应的端口上;
  4. 外设取走数据,向8255发送应答信号ACK*
  5. ACK*下降沿复位OBF,上升沿复位INTR,使中断申请信号有效,8255得以继续向CPU申请中断,输出下一个数据。

5、方式2:双向应答式输入输出方式

  • 控制方式:查询方式 / 中断方式;
  • A口工作在方式2时,C口高5位做联络应答信号线(实质是方式1的组合),有固定的定义与时序(自动进行,不可改变);
  • 在输入输出操作中,产生固定格式的状态字,供CPU查询或向CPU申请中断。CPU从端口C中读取状态字;
  • 方式2时的状态字(通过C口查询):
D7 D6 D5 D4 D3 D2 D1 D0
方式2 OBF_A INTE_1 IBF_A INTE_2 INTR_A × × ×

注:两个中断允许位INTE1和INTE2要分别设置。在中服中要查询OBF和IBF两位,看是哪个操作在申请中断。

三、Inter 8255A的初始化

1、端口工作方式控制字

2、C端口置位/复位控制字

D7 D6 D5 D4 D3 D2 D1 D1
0 × × × PC0 ~ PC7 位选择 置位 / 复位

敬谢诸君。


金陵钟山之阳。

【沧海拾昧】微机原理:并行接口电路8255芯片相关推荐

  1. 【沧海拾昧】微机原理:存储器系统

    #C0302 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  2. 【沧海拾昧】微机原理:可编程计数器/定时器8253芯片

    #C0303 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  3. 【沧海拾昧】微机原理:可编程中断控制器8259A芯片

    #C0306 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  4. 【沧海拾昧】微机原理:8086/8088中断系统

    #C0305 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  5. 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

    #C0104 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 [如有问题必是本集记录有谬 ...

  6. 【沧海拾昧】C# .Net 基本控件介绍

    #C0201 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  7. 【沧海拾昧】用MATLAB画一张简单的图

    #C0401 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  8. 【沧海拾昧】C# .Net SplitContainer(分割器)控件的使用笔记

    #C0202 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  9. 【沧海拾昧】Proteus8仿真stm32:ADC转换程序

    #C0102 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  10. 【沧海拾昧】Keil uVision5新建stm32工程并联合Proteus 8 Professional简单仿真

    #C0101 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

最新文章

  1. python 把集合转成字典的方法
  2. 买卖股票的最佳时机II
  3. linux目录下有斜杠,Windows和Linux路径中斜杠/和反斜杠\ 的区别
  4. python中类和对象_Python里的类和对象简介
  5. SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决
  6. Delphi天气预报查询
  7. [转]C# 中的常用正则表达式总结
  8. 项目: 基于Python socket模块实现的简单 ftp 项目:
  9. 可靠的Windows版Redis
  10. kubernetes视频教程笔记 (12)-容器探针
  11. 【转载】世界上最牛的编辑器: Vim 3 (原创动图演示所有例子!)
  12. 2022年化肥行业发展趋势
  13. Chrome浏览器乱码问题
  14. 基于51单片机的智能声控
  15. vlookup多项匹配_Excel 怎样用VLOOKUP匹配多列数据/excle全部筛选匹配
  16. cocos creator(12)
  17. antd 动态自定义表单验证失效
  18. 2021年中国海洋大学计算机及电子信息考研成绩分析
  19. Qt修改可执行程序的图标 生成的exe使用自定义的Ico文件
  20. Android的根证书颁发机构列表

热门文章

  1. 群辉 NAS 配置 iSCSI 存储
  2. wxid如何找到原始id,技术分享
  3. Docker核心概念与实战
  4. 意外的计算机音乐,富有灵魂的音乐 Realwav SVEN 意外发烧
  5. EndNote X9在Word插入参考文献时在工具来不显示,使用时显示服务器运行失败,和用国标GBT 7714遇到的错误
  6. html5课程总结500字,体育课心得体会500字(精选6篇)
  7. 只有你想不到的 看看这些另类的可穿戴设备
  8. 捷达vs7测试_抢先测试捷达VS7!你期待吗
  9. matlab 正交特征向量,关于左右特征向量的正交性问题 求助!!!!
  10. D碳社区周报:上海市:推进崇明世界级生态岛碳中和示范区建设,院士专家在论坛上提出建议