当前课程知识点:微机原理与接口技术 > 第12周 可编程并行数字接口 > 第50讲 可编程并行接口 > 可编程并接口8255_01
好 大家好
在我们学完了可编程定时计数器8253之后
这一讲我们来学习另外一片
可编程的接口芯片8255
8253我们说它是一个非通道型的接口
因此昵它的主要工作
就是实现对外部设备的控制
而8255了是一个通道型的接口
因此了它可以用来做数据的输入或者输出
和8253一样
8255的内部也有三个独立的
并行输入输出端口
这三个端口总体上来讲
它们都是8位的
但是其中有一个
也就是我们称为PC口的这个端口昵
它实际上
可以被拆分为两个四位的端口
这样子的一个设计
它的主要的好处
就是因为我们前面看到
看到过就会有一些外部设备在
我们利用查询方式
进行输入输出控制的时候
我们需要获取外部设备的
当前的工作状态
而这些状态信息
通常都只有一位
两位或者三位等等
很少有8位状态位的这样子的一种情况
因此了把这样的C端口
采用这样可以拆分的这种设计方案
我们就可以用C端口的比如第四位
用来去获取某一个外部设备的状态信息
用高4位去获取另外一个
外部设备的状态信息
这样也就相当于扩大了它的应用范围
和我们第6章讲的三态门接口
和锁存器接口相比
8255的这三个独立的输入输出端口
它们都具有数据的控制能力
也具有数据的锁存能力
因此了
它们都可以作为输入端口
也可以作为输出端口
我们回忆一下我们前面讲过
我们说三态门接口昵
因为它只有数据的控制能力
而没有数据的锁存能力
所以它只能作为输入口
而锁存器接口
我们讲过那个8D锁存器
因为它有数据的锁存能力
所以它可以作为输出口
但是它没有数据的控制能力
所以它不能作为输入口
而8255这三个端口ABC
它们都具有这两者的能力
也就是相当于
我们前面一章里头内容
第6章里头设计到的那种
74LS373或者374
这样就带控制能力的锁存器接口
因此昵
它两者都具有
所以它可以作为输入
也可以作为输出
但是昵
我们第6章学过的那个74LS373
就说带控制能力的锁存器接口
虽然它既有控制能力
也有锁存能力
理论上讲
它也可以作为输入口
也可以作为输出口
但是了因为
它不可能接收软件命令
因此昵
它一旦在线路上接好了
在系统中设置它为输入
它就只能做输入
设计它为输出
它就只能做输出
不可能改变
但是昵8255作为一个可编程的接口
它是可以通过软件命令的形式
来改变这3个端口
它的数据传输方向的
所以在这一点上
要比我们前面学的那种简单接口芯片
要好用的多
8255的内部昵
这是它的内部的结构图
虽然它内部有ABC三个独立的端口
但是了它在控制上昵
它分了两组来控制
A组了它负责控制A端口
和C端口的高4位
而B组昵
负责控制B端口
和C端口的第4位
另外昵
它们也同样它内部具有一个
接收控制字或者控制命令的控制寄存器
当然在这个结构图里头
这个控制寄存器没有显示的画出来
但是它是有的
因此昵
这ABC三个端口以及控制寄存器
同样就跟8253一样了
也占用4个端口地址
所以它在片内的引线上
也有A0和A1两根片内地址
同样的作为这样子的
通道型的输入输出接口昵
它也可以对它进行读操作或者写操作
因此在这个引脚上
它也有RD和WR两个写信号和读允许
这个就是8255和系统连接这一端
它的主要的一些引线信号
我们看到CS是片选信号
D0到D7是数据信号
这些都是没有问题的
读和写允许
大家也是很熟悉的
A0和A1就是刚才我们说了
它是片内地址信号
这里只有一个
我们之前的芯片中都没有看到过的
就是REAST
但是这个信号我想
所有的学习者都应该很清楚
它就是一个复位信号
所以和系统连接的时候
REAST信号可以直接
跟CPU的REAST端连接
那么区分这内部的4个端口
它也同样靠A1和A0这两个低位地址
来区分
这两位地址信号位0 0的时候
表示现在是A端口的地址
为1 1的时候
就表示内部控制寄存器
和8253相同
就是说它内部的这4个端口
都在同样的一片芯片上
因此它们都具有同样的高位地址
这三个端口和外部设备的连接
是通过PA0到PA7
PB0到PB7
PC0到PC7
这样子分别的8根引线
也就是说一共是24根引线
这三个这
这三组8位的引线
就用来可以连接
分别连接三个外部设备
我们用这个图先大家先示意一下
这个就是8255其中
它的和系统这边的连接线
我们看到
它的数据总线
当然和系统的数据总线是直接连接的
数据是可以输入也可以输出的
所以这个数据总线的方向是双向的
对于读和写允许
当然和我们这个系统总线这边的写允许
和读允许分别进行连接
它的片内地址
和系统总线这边的低两位地址
进行直接的连接
唯一的就是这个移码电路
也就说我们片选信号
是需要连接到移码器的输出端
而移码器的输入端
就是我们的高位地址信号
那么这边昵
是A口B口和C口可以分别连接
三个外部设备
当然它们也可以协同工作
连接一个更复杂的外部设备
这个我们后面通过练习来说明它
8255有3种工作方式
这一点跟8253比较起来
听上去减少了一半
我们前面讲8253一共有6种工作方式
不同的工作方式下
它的OUT端
输出的波形的形式是不一样的
那么8255昵
这三种工作方式
它们分别也可以叫做方式0
方式1和方式2
当然它们有更具体的名字
方式0我们称为基本输入输出方式
而方式1
叫做选通工作方式
方式2叫双向工作方式
那么我们先来看方式0
它既然是基本输入输出方式
意思就是说
它是作为简单接口的一种运用的
所以方式0完全相当于三个独立的
或者三个简单接口
集成在一片芯片上
我们可以想象一下
想象它就是我们第6章学过的那个
带控制能力的锁存器接口
把这三个接口
集成在这样一片硅片上
用一套控制逻辑去控制它
然后通过软件命令
可以去设置它们三个接口
分别工作在不同的这种方式下
就说它们可以工作在输入
或者输出这样子的模式下
这就是工作在方式0
因为我们简单接口我们说
它通常作为一个简单的接口芯片
它就实现一个简单的数据的输入
或者输出
那么方式0昵
也可以既然是这样
它也就是类似于这样子的工作方式了
因此昵方式0在方式0下
每一个端口
它们都可以设置它为输入口
当然你也可以通过软件命令
设置它为输出口
或者再过一段时间修正它
再作为输入口都没有问题
那么这个时候昵
那么这个时候昵
C端口可以是一个8位的简单接口
也可以分为两个4位的端口
用来传输状态信息
对于这种基本输入输出方法
如果工作在这种方式下
那么经常用来就是连接简单的外部设备
他们所使用的L控制方法
就是无条件的传输或者查询的工作方式
因此昵我们后面用的例子里
对于这种方式
我们会有一个具体的事例
来给大家介绍
这种事例用的比较简单
也适合我们前面第6章所学习的内容
可以是一脉相承的
那么所以方式0原则上
我们有一个习惯
因为A端口和B端口
它都是一个完整的8位端口
所以我们通常可以使用A口
或者B口来进行数据的传输
刚才我们说了
C端口它是可以拆分成两个4位端口的
所以C端口经常用来作为状态信息的输入
这个不是真理
这只是一种应用的习惯
而且这种习惯是基于这个
芯片本身它的一种构造
来得出来的
请大家注意一下
如果C端口的第4位中
我们选择一位作为状态信息的输入
那么C端口的整个第4位
就必须都作为输入了
即使其他的位没有用
它也是处于输入端口这样的一个状态
因为它们不能够再拆分了
如果这个时候
你希望在C端口中找一位作为输出
来用的话
你只能在C端口的高4位中选一位来用
反过来也是一样的
我们也同样给出一个8255
工作在方式0下的一个连接示意
假设我们这里有一个外部设备
它是可以提供状态信息的外部设备
我们简单的说假设它是个打印机
那么打印机那个缓冲区到底有没有空
能不能向打印机传输数据
我们需要确定打印机缓冲区的状态
所以这个时候缓冲区就会
提供一个状态信息
假设这个状态信息
我们连接到C0位的话
那么通过C0位
我们就可以知道目前打印机的状态
是不是符合往外传输数据的
好 如果符合
那么我们可以通过A端口
输出我们要打印的字符或者是一大块字符
那么这个时候B端口并没有使用
那么如果我们还要使用的话我们
B端口可以用来连接另外一个外部设备
来实现数据的输入
当然我们也可以用B端口作为输出
那么这个时候
C口的高位没有用到
这个时候如果我们B端口
连接的这个外部设备也需要有状态信息
也能够提供状态信息的话
那么我们可以用C口的高位的某一位
来读取第二个外部设备它的状态信息
那么它当然跟系统这边的连接
我们刚才已经看过了
这个没有问题
这个数据总线都是双向的
所有的控制信号线
地址信号线都是单向的
而片选端显然就是连接到移码器的输出
好 这就是我们总个的一个框架
有关方式0下的应用
我们在这一讲的最后
我们会通过一个具体的事例
来帮助大家理解
-第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讲 结束语
--结束语