当前课程知识点:微机原理与接口技术 > 第12周 可编程并行数字接口 > 第50讲 可编程并行接口 > 可编程并行接口8255_02
那么方式1我们前面说它叫选通工作方式
所谓选通控制工作方式
就是需要有一组选通控制信号
在这组选通控制信号的控制下
才能够实现A端口
或者B端口的数据的输入
或者输出
为什么在这里没有提到的C端口昵
因为既然需要一组选通控制信号
这组控制信号一定要有一个端口
来进行传输
所以这种工作方式下
我们C端口的一部分的位
就被用来作为选通控制信号的传输了
那么C端口就不可能作为一个端口
来工作在方式1下
实现数据的输入输出
所以方式0下
ABC3个端口作为基本L端口
都是可以工作在方式0的
但是方式1昵
我们作为数据的LO
只能是A或者B
C端口这个时候被专用了
我们下面来看一下
A端口和B端口工作在方式1
作为输入或者输出的时候
它们所需要的选通控制信号是不一样的
而且它们的工作时序也有一些差别
下面我们来分别来看
我们先来说一下
A口和B口工作在方式1
作为输出端口的时候
它们的一种应用
它们的基本工作时序是完全一样的
所以下面的时序
我们只选一个来看就可以了
我们把这个方式1下
A口作为输出和B口作为输出的图
都打在这里
大家主要可以看到
A端口工作在方式1
作为输出口的时候
它所需要的C端口
作为选通控制信号的C口的位
是PC3PC6和PC7
而如果同时B端口
也工作在方式1作为输出口的话
这个时候C端口的C0C1C2
这3位用来作为
B端口方式1下的选通控制信号
而PC3PC6PC7昵
就作为A端口工作在方式1下
作为输出口时候的选通控制信号的传输
所以如果A口和B口同时工作在方式1下
作为输出口的话
那么C端口就只有C4和C5
是空余状态
那么这2位这个时候
如果你希望用来传输某一位
或者某2位数据信号
我们可以用C口的这2位
那么如果你这个时候要想传输更多的昵
就不可能了
好下面我们来看作为输出状态时候
它们的工作时序
在工作在方式1下
不论是A口还是B口
那么作为输出的时候
它们的工作时序是这样
这个时序昵我们现在先不讲
我们先来想象一下作为输出的时候
系统应该是一个什么样子的工作过程
我们朴素思维一下
我们假设这个是8255的A端口
我们假设就用A端口作为例子来说了
那么现在这边是系统
这边是外部设备
如果我们现在要用这个A端口
作为输出口的话
那么我们现在显然要做这样一件事
就是说CPU把数据写到A端口
再由A端口传输到外部设备
那么这个工作时序我们想应该就是这样
我们首先要在
CPU一个写周期的时间内
然后把数据写入到A端口
写到A端口以后干什么昵
作为A端口来讲
这个时候它要通知外部设备
我这里已经有数据在我这里了
你现在可以来取了
那么外部设备收到这个信息以后
它显然就要去把数据从A端口里读走
对吧 读走以后昵
那么现在我们就认为
A端口里头已经没有数据了
虽然这个传输出去
有可能它是一个COPE过去的过程
但是我们认为它已经没有了
没有了昵
我们现在就应该告诉CPU
我这里的数据已经被外部设备接收了
那么你如果还有数据要过来的话
你现在可以往里走了
这就是我们总个作为输出接口的时候
它的一个工作时序
好我们现在回来看那个时序图
这个时序图就反映了我们刚才
所描述的那个过程
首先在一个写允许的这样一个周期里头LW
CPU首先要产生一个LW的写读机
在这个周期内
数据被写入到了A端口
这里的箭头
表示着一种时序上的控制关系
也就说当写允许完了之后
这个数据已经在A端口了
那么这个时候A端口就要通知外部设备
这个通知的信号是什么昵
就叫OBF
这个信号通知外部设备以后
外部设备就开始来读取这个数据
当它把这个数据读取完了以后
它会发出一个应答信号
就是ACK
这个ACK信号同时会使OBF有效
并且它在读取完了以后
它会使得这个叫INTR的引脚产生高电频
我们已经知道INTR是什么东西昵
是外部可屏蔽的中断请求信号
意思就是说等它把数据读走之后
那么它会告诉CPU
我现在数据已经被读走了
你现在可以如果有数据的话
可以接着来了
所以这个就是它反映的一个
工作时序的一个关系
这是作为输出的时候的一个时序
那么如果这个时候
A端口或者B端口工作在方式1
并且作为输入接口的话
那么这个时候大家看
我们会用到C端口哪些位昵
这个A端口工作在方式1
作为输入的时候昵
会用到C3C4C5这3位
作为选通控制信号的这个传输
而B端口昵
依然是C0C1C2
我们同样的来分析一下作为输入的时候
它的一个工作过程
如果作为输入我们来看
假设还是我们用A端口作为例子
这是A端口
那么输入的时候
显然就是要把信息输入到系统里头
对吧
那么这边是外部设备
那么也就是说我们首先外部设备
要把数据写进A端口
写完了以后
因为我们在前面讲
LO系统中我们曾经讲过
外部设备跟接口之间一般来讲
它是专用的或者一一对应的
而外部设备的工作速度相对于系统来讲
或者相对于CPU来讲要慢的很多
所以它在往里写的时候
不管它写多长时间
CPU应该是不会被打扰的
它应该能够自己在做它自己的加减乘除
那么等你把这个外部设备
把这个数据写到A端口以后
好A端口再去产生一个中断请求
告诉CPU我的数据已经在这里
好CPU然后就用一个读周期
把数据读到它内部
这就是我们作为输入的时候
应该有的一个朴素的思维过程
那么现在我们看
这个过程如何反映在时序上
这就是我们8255这个A端口或者B端口
工作在方式1作为
输入端口时候的工作时序
首先昵
在STB这个有效期间
外部设备会将数据写入到
A端口或者B端口
当然这里头端口会同时产生一个IBF信号
作为和外部设备的应答信号
大家看当你这个STB无效的时候
也就说数据已经被写入端口之后
那么它会触发一个中断请求信号产生
在这个中断请求就是将它告诉CPU
我现在已经有数据在我这里了
那么这个时候CPU会产生一个IOR信号
在这个有效期间把数据读进来
而数据读完之后
它就和外部设备的这种
连通信号就会让它无效了
STB信号所对应的
正好是外部设备向
向端口写数据的这样的一个时序
这个是我们8255A和B口工作在方式1下
作为输入的一个时序图
那么我们总结下来
工作在方式1下的时候
主要就是通过需要通过中断请求信号
来实现数据的输入输出
因此昵方式1我们也称为
因此昵方式1主要用于
中断控制方式下数据的输入或者输出
那么这个时候C端口的8位中
除了用作选通信号外
其余的位当然可以工作在方式0下
作为基本输入输出端口
来实现数据的传输
方式1也好方式0也好我们说
不管是哪一种工作方式
它们的3个端口从它的原理上来讲
因为它们都具有控制能力
又具有锁存能力
所以昵它们都可以作为输入
也可以作为输出
但是昵
一旦设置它们作为输入
它们就只能作为输入
如果你希望改变它的传输方向
必须重新进行初始化的工作
也就需要重新给它发布软件命令
就这一点来讲
比简单接口当然要灵活很多
但是毕竟需要通过软件命令的方式
来修改它的传输方向
但是下面我们来看
这种方式2
叫做双向输入输出方式
是不需要通过软件命令
而只是需要通过时序脉冲
就能够实现它们
就能够改变他们的传输方向的一种工作
也就是说在这种情况下
才是真正的双向传输模式
因为在双向传输模式下
也需要很多的选通控制信号
而这个时候如果A口和B口
都同时工作在双向模式下
那么所需要的选通控制信号
就会比较多
我们等一下看到
这个时候实际上是方式1下
所有选通控制信号的一个集成
因此昵
没有办法让A与B都同时工作在方式2
或者说它分时也不可能
因此昵方式2下只有A端口
可以工作在方式2下
B端口是没有可能工作在方式2下的
在A端口工作在方式2下的时候
我们看我们用到了C端口的C3C7C6C4C5
这么5个位
用来作为选通控制信号的传输
大家看这些选通控制信号引
我们也可以发现
像OBFACK是刚才做为输出的
一组选通控制信号
STBIBF是作为输入的一组选通控制信号
当然INTR是刚才我们输出和输入
都需要用到的中断请求信号
那么在这里大家就合在一起了
因此昵它们这个时候
需要5位选通控制信号
我们看一下它们的工作时序
这个工作时序实际上就描述了
现在的A端口
到底先做了输入口
还是先做了输出口
我们讲过工作时序图的看法是
这边是原点
横坐标是时间轴
那么我们从这样一个原点
逐次的由左向右这样看下去
我们第一次出现的首先出现的有效信号
是这个IOW信号
IOW我们都知道是系统发出来的
写允许信号
也就说在它有效期间
CPU或者说系统
会把数据写入到端口里头
那么数据由系统写入到
端口的目的是什么昵
那显然是要端口把数据输出去
所以在这里首先有了IOW信号
说明这个A端口现在要做输出了
因此昵在这个LW
有效结束之后
那么就会出现OBF信号
告诉外部设备来取
跟刚才的过程一样
外部设备把数据取完
会有ACK信号
跟刚才一样
外部设备就会用ACK信号
作为一个应答信号并且把数据取走
当数据取走以后
会产生中断请求
那么如果在这个数据输出完了之后
我们接着又送
产生一个STB信号昵
那么STB信号是在干什么昵
我们看STB信号是我们刚才说是
由外部设备要把数据写入到A口里头来
所以在STB有效的时候
这个数据正好是
外部设备写入到A口的数据
所以这个时候就要做输入来用
因此昵这个时序图告诉我们
这个时候A端口是先做了输出口
接着又做了输入端口
这个就是通过LW和STB信号
先产生了LW就先做输出
先产生STB就先做了输入
也就说通过这2个信号
就可以来实现这个A端口
一会儿输出一会儿输入
这样一个真正的双向传输模式
因此昵方式2下
需要用到这么多的选通控制信号
所以只有A端口可以作为双向口
也就是只有A端口可以工作在方式2下
它同样需要采用中断控制方式
因此昵不论是方式1还是方式2
实际上都不会使用查询
或者无条件的传输
而都需要采用中断控制方式
来实现数据的输入输出
当A端口工作在方式2的时候
B端口可以工作在方式1
当然B端口也可以工作在方式0
如果B端口这个时候工作在方式1
那么细心的同学会看到
这个时候C端口的所有的位
都被用来作为选通控制信号的传输
也就是说C端口没有一个空余位了
我们作为A端口工作方式2
我们刚才看到C口有5位
来作为选通控制信号传输
那么B口如果这个时候同时工作在方式1
那么不论它做输入也好输出也好
C端口的C0C1C2位都要用来
做支持B端口来进行数据传输
所以C口的所有位都没有空闲了
那么如果这个时候
B口可以又工作在方式0
而不是工作在方式1的话
那么C端口就有3位作为空闲位
那么它也可以用来做数据的传输了
总之8255的ABC3个端口
它们都可以工作在方式0
但是A端口和B端口可以工作在方式1
而只有A端口可以工作在方式2
方式0作为基本输入输出口
它们采用的输入输出工作方式
基本上都是无条件传输方式
或者查询工作方式
而方式1和方式2下
只能工作于中断控制方式
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语