当前位置: 首页 > news >正文

《微机原理与接口技术》第 8 章 常用接口芯片

8.1 可编程定时/计数器8253/8254

8.1.1 8253的外部引脚及内部结构

8.1.2 8253的工作方式

8.1.3 8253的方式控制字和读/写操作

8.1.4 8253的初始化编程及应用

8.1.5 可编程定时/计数器8254

……

8.2 可编程并行接口8255

8.2.1 并行通信的概念

(1)并行通信与串行通信

数据通信:随着多计算机系统的应用和计算机网络的发展,计算机与外部设备之间,计算机与计算机之间常常要进行数据交换,这些数据交换可称为数据通信。

数据通信方式有两种:并行通信、串行通信

并行通信:指数据的各位同时进行传送的通信方式,可以字或字节为单位并行进行。

并行通信速度快,但所用的通信线多、成本高,故不宜进行远距离通信。计算机内部各种总线都是以并行方式传送数据的。(近距离、大量、快速数据通信

串行通信:指数据逐位顺序传送的通信方式。

串行传送的速度低,但只需要很少的通信线,适用于长距离而速度要求不高的场合。在网络中传送数据纯大多数采用串行方式。

(2)并行接口

无论是并行通信还是串行通信,它们在I/O接口与CPU之间的通信而言,均是以并行通信方式传送数据的

并行通信由并行接口完成,它以字节(或字)为单位与I/O设备或被控对象进行数据交换,以同步方式传输。

例如打印机接口,A/D、D/A转换器接口,IEEE 488接口,开关量接口,控制设备接口等。

从并行接口的电路结构来看,它有硬连线接口可编程接口之分。

硬连线接口的工作方式及功能用硬连线的不同方式来设定,不能用软件编程的方法加以改变;

可编程接口的工作方式及功能可以用软件编程的方法加以改变。

本节将对可编程并行接口8255进行讨论。

一个并行接口中包括状态信息、控制信息和数据信息,这些信息分别存放在状态寄存器、控制寄存器和数据缓冲寄存器中。

① 状态寄存器

状态寄存器用来存放外设的信息,CPU通过访问这个寄存器来了解某个外设的状态,进而控制外设的工作,以便与外设进行数据交换。

② 控制寄存器

并行接口中有一个控制寄存器和一个状态寄存器,CPU对外设的操作命令都寄存在控制寄存器中,状态寄存器主要是用来提供外设的各种状态位,以供CPU来查询。

③ 数据缓冲寄存器

在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器是用来暂存数据的。这是因为外设与CPU交换数据时,CPU的速度远远高于外设的速度。例如,打印机的打印速度与CPU的速度相差的远不止一个数量级。在并行接口中设置缓冲器,把要传送的数据先放入缓冲器中,打印机按照安排好的打印队列进行打印,这样可以保证输入、输出数据的可靠性。

图8.1是一个典型的并行接口与CPU、外设的连接图。

(3)数据输入过程

数据输入过程是指外设向CPU输入数据的过程。

① 当外设将数据通过数据输入线送给接口时,先使状态线“输入数据准备好”为高电平,然后通过接口把数据送到输入缓冲寄存器中,同时把“输入应答”信号置成高电平1发给外设。

② 外设接到应答信号后,将撤销“输入数据准备好”信号。在接口收到数据后,它会在状态寄存器中设置“准备好输入”状态位,以便CPU对其进行查询。

③ 接口向CPU发出一个中断请求信号,这样CPU可以用软件查询方式或中断的方式将接口中的数据输入到CPU中。

④ CPU在接收到数据后,将“准备好输入”的状态位自动清除,并使数据总线处于高阻状态,准备外设向CPU 输入下一个数据。

(4)数据输出过程

数据输出过程是指CPU向外设输出数据的过程。

① 当外设从接口接收到一个数据后,接口的输出缓冲寄存器“空”,使状态寄存器的“输出数据准备好”状态位置成高电平1,这表示CPU可以向外设接口输出数据,这个状态位可供 CPU查询。

② 此时接口也可向CPU发出一个中断请求信号,同上面的输入过程相同,CPU可以用软件查询方式或中断的方式将CPU中的数据通过接口输出到外设中。当输出数据送到接口的输出缓冲寄存器后,再输出到外设。

③ 与此同时,接口向外设发送一个启动信号,启动外设接收数据。外设接收到数据后,向接口回送一个“输出应答”信号。

④ 接口接收到该信号后,自动将接口状态寄存器中的“准备好输出”状态位重新置为高电平1,通知CPU可以向外设输出下一个数据。        

8.2.2 8255外部引脚及内部结构

8255是Intel公司生产的一种通用的可编程并行I/O接口芯片,它有3个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。

在IBM-PC/XT系列微机中,8255接口用于接收键盘输入的扫描码和系统配置的 DIP开关状态,以及用于扬声器控制和存储器奇偶校验。

(1)8255内部结构

8255是一个40根引脚的双列直插式组件,内部结构:

① 3个8位I/О数据端口:A口、B口、C口。

② 1个8位的控制端口。

8255的内部结构如图8.2所示:

① 面向CPU的接口电路

a. 数据总线缓冲器:数据总线缓冲器是一个三态双向的8位缓冲器,是8255与系统数据总线的接口。与此关联的接口信号线是数据线D7~D0,它直接与CPU数据总线相连,以实现CPU与8255接口之间的信息传递。CPU向8255写入控制字或从8255中读状态信息,,以及所有数据的输入和输出,都需要通过数据缓冲器来进行传递。

b. 读/写控制逻辑:读/写控制逻辑是8255内部完成读/写控制功能的部件,它接收来自CPU的地址和控制信号,并依据这些信号,通过内部控制逻辑向8255的各功能部件发出读/写控制命令,用于管理数据、控制字或状态字的传送。与此部分有关的有6根信号线:片选信号~CS,读信号~RD,写信号~WR,端口选择信号A1、A0,以及 RESET复位信号。

② 面向外设的接口电路

8255提供了3个输入/输出通道可与外部设备相连接。每一个通道有一个8位的数据端口用于输入和输出,其工作方式可由编程设定,具体介绍如下。

a. 端口A:包含一个8位的数据输出锁存/缓冲器和一个8位的数据输入锁存器,与之关联的接口线是PA7~PA0。

b. 端口B:包含一个8位的数据输入/输出、锁存/缓冲器和一个8位的数据输入缓冲器,与之关联的接口线是PB7~PB0。

c. 端口C:包含一个8位的数据输出锁存/缓冲器和一个8位的数据输入锁存器。必要时端口C可分成两个4位端口,分别与端口A和端口B配合工作,以输出控制信号,或者接收从外设输入的状态信号,与之关联的接口线是PC7~PC0。

③ 内部控制逻辑

内部控制逻辑:A组控制部件B组控制部件

A组控制部件:控制端口A和端口C的高4位(PC7~PC4);

B组控制部件:控制端口B和端口C的低4位(PC3~PC0)。

控制逻辑内部设置了一个控制寄存器,接收来自CPU的控制字(一个字节),根据控制字的内容决定各数据端口的工作方式。也可以根据控制字对端口C的每一位进行置位和复位。控制寄存器的内容只能写入而不能读出。

(2)8255的引脚功能

8255芯片有40根引脚,各引脚信号如图8.3所示。

8255的各引脚功能定义如下。

D7~D0(输入/输出、三态):双向三态数据线,用来传送数据、控制字和状态字等信息,直接与系统数据总线相连。

RESET(输入):复位信号,高电平有效。当它有效时,所有寄存器,包括控制寄存器的内容全部清零,A口、B口、C口均被设定为输入方式。

A1、A0(输出):端口选择信号。8255内部共有4个端口,即3个数据端口(A口、B口、C口)和一个控制端口(控制寄存器),它们可由程序寻址。A1、A0的不同编码可分别寻址上述4个端口,它们与片选信号~CS一起决定8255各端口的地址,规定A1A0为00、01、10、11时,分别选中端口A、端口B、端口C、控制端口。A1、A通常与系统总线的低位地址线相连。

~RD(输入):读信号,低电平有效。当它为低电平时,CPU 从 8255中读取数据或状态信息。通常接系统总线的~IOR信号。

~WR(输入):写信号,低电平有效。当它为低电平时,CPU将数据或命令字写入8255。通常接系统总线的~IOW信号。

~CS(输入):片选信号,低电平有效。当它为低电平时,选中8255芯片。通常由系统总线的高位地址线经译码得到。

A1A0和~RD、~WR、~CS信号相配合可对各端口进行输入/输出访问,其组合逻辑功能如表8.1所示。

PA7~PA0(输入/输出、三态):A口的8根输入/输出信号线。可用软件编程决定这8条线是工作于输入、输出还是双向方式。

PB7~PB0(输入/输出、三态):B口的8根输入/输出信号线。可用软件编程指定这8条线作输入还是输出。

PC7~PC0(输入/输出、三态):C口的8根输入/输出信号线。这8条线根据其设定的工作方式可作输人或输出线使用,也可用作控制信号的输出或状态信号的输入。

8.2.3 8255的工作方式

8255提供如下3种工作方式。

(1)方式0———基本输入/输出方式

(2)方式1———选通输入/输出方式

(3)方式2———双向传送方式。

端口A:可工作于3种工作方式(方式0、方式1、方式2);

端口B:可工作于两种工作方式(方式0、方式1);

端口C:可工作于方式0。

端口C常常根据控制命令分成两个4位端口,每个4位端口包含一个4位的输入缓冲器和一个4位的输出锁存器,它们分别配合A口和B口输出控制信号和输入状态信号。

(1)工作方式0(基本输入/输出方式)

它适用于简单的无条件输入/输出数据查询式输入/输出数据的场合。

① 无条件数据的传送过程中:输入/输出数据随时都处于准备好状态,8255与CPU及外设之间无须交换应答(握手)信号;

② 查询式数据的传送过程中:需要有应答信号,通常A口与B口作为输入/输出数据端口,而C口分为两个4位端口分别作为控制信号输出口状态信号输入口,用于配合A口和B口的查询式数据传送。

当A口、B口、C口都工作于方式0时,8255各口的输入/输出有16种组合,如表8.2所示。

(2)工作方式1(选通输入/输出方式)

……

(3)工作方式2(双向输入/输出方式)

……

8.2.4 方式控制字及状态字

(1)8255的控制字

8255有3种基本工作方式,而且对C口各位又可以进行按位操作。

CPU通过向8255内部的控制寄存器写入不同的控制字来选择不同的工作方式位操作

① 方式控制字

方式控制字用来决定8255的工作方式。它将3个通道分为两组:即A口和C口的高4位作为一组(A组),B口和C口的低4位作为一组(B组)。

方式控制字的格式如图8.10所示。

② C口置位/复位控制字

置位/复位控制可对C口中的任意一位进行置位或者复位操作。该控制字各位定义如图8.11所示。

(2)8255的状态字

8255的状态字为查询式输入/输出数据提供了外设的工作状态,如IBF、~OBF、INTR等。根据8255工作在不同的工作方式下,以及各端口作输入、输出的不同情况,状态字的格式有所不同。值得注意的是,C口的状态字与C口各位对外的引脚状态不完全一致。

当8255的A口、B口工作在方式1或A口工作在方式2时,通过读C口的状态,可以检测A口和B口的状态。

当8255的A口和B口均工作在方式1的输入时,由C口读出的8位数据各位的意义如图8.12所示。

当8255的A口和B口均工作在方式1的输出时,由C口读出的状态字各位的意义如图8.13所示。

当8255的A口工作在方式2时,状态字各位的意义如图8.14所示。

8.2.5 8255与CPU的连接

8255占用4个I/O端口地址,即A口、B口、C口和控制寄存器。

在8255的连接使用中:

① 它的8根数据线D7~D0与系统数据总线相连。

② A1、A0分别接地址总线的A1和A0。

③ 地址总线高位A15~A2经译码器译码后接片选信号~CS。

④ 控制信号线RESET、~RD、~WR分别与系统控制总线的RESET、~IOR、~IOW信号相连,如图8.15所示。

8.2.6 8255应用举例

8255A初始化时,先要写入控制字,以指定它的工作方式,然后才能通过编程,将总线上的数据从8255A输出给外设,或者将外部设备的数据通过8255A送到CPU中。

【例8.1】利用8255方式0实现打印机的接口

打印机可以打印计算机送来的 ASCII码字符。因为ASCII码为8位,所以我们利用8255A口的工作方式0来实现打印机与CPU之间的并行输出接口,8255与打印机的连接示意图如图8.16所示。

假设,8255由地址译码决定的A口、B口、C口及控制寄存器的端口地址分别为380H、381H、382H、383H。用A口的 PA7~PA0与打印机的D7~D0相连,作为打印字符的输出数据线。

当接口将数据送至打印机的输入线D7~D0上时,利用一个负的锁存脉冲~STROBE将数据锁存于打印机内部,并开始打印处理。同时,打印机送出高电平的BUSY信号,表示打印机正忙,一旦 BUSY变为低电平,则表示打印机又可以接收新的数据了。

在实现打印机接口时,可以设置A组、B组均工作在方式0下,使A口的PA7~PA0与打印机的D7~D0相连,并利用C口的PC6作为输出信号接打印机的选通端~STROBE,PC2作为输入信号接打印机的忙信号BUSY。

由此可以作如下的初始化:A口为输出,C口的高4位为输出、低4位为输入,B口保留,A、C口均工作于方式0。

初始化程序如下:

MOV AL,1 00 00 001B    ;将控制字送AL中1 00 00 001B 
MOV DX,0383H           ;将控制寄存器端口地址送DX中
OUT DX,AL              ;设置控制寄存器内容——决定工作方式MOV AL, 00001101B      ;将PC6设置为1
OUT DX, AL             ;设置控制寄存器内容——决定C口的内容

若要将BL中的字符送到打印机输出,则可用下面程序来完成。

    MOV DX,0382H        ;将C口地址送DX中
PWAIT:IN AL, DX         ;输入C口数据AND AL,04H          ;测试 PC2JNZ PWAIT           ;忙则等待MOV AL,BL           ;将BL中的打印字符送回AL中MOV DX, 0380H       ;将A口地址送DX中OUT DX, AL          ;将AL字符送出打印MOV AL,0CHMOV DX,383HOUT DX,AL           ;设置C6为0INC ALOUT DX,AL           ;设置C6为1

利用下面一段程序,可以完成一批字符数据的打印输出。假设要打印的字符串位于当前数据段从DATA 开始的内存区域中,字符串长度在 BLAK单元中。

PRINT: MOV AL,BLAKMOV CL,ALMOV SI,OFFSET DATA
GOON: MOV DX,0382H
PWAIT:IN AL, DXAND AL,04HJNZ PWAITMOV AL,[SI]MOV DX, 0380HMOV DX, ALMOV AL,00HMOV DX,0382HMOV DX,ALNOPNOPMOV AL,40HMOV DX,ALINC SIDEC CLJNZ GOONRET

【例8.2】……

【例8.3】……

8.3 可编程串行接口8251

8.3.1 串行通信概述

8.3.2 8251的外部引脚及内部结构

8.3.3 8251的控制字及其工作方式

8.3.4 8251串行接口应用举例

……

8.4 模拟I/O接口

8.4.1 DAC及其与CPU的接口

8.4.2 ADC及其与CPU的接口

……

8.5 例题解析

……

8.6 本章实验项目

……

相关文章:

  • es学习小结
  • LeetCode-前缀和-和为K的子数组
  • 便捷的Office批量转PDF工具
  • 第32节:基于ImageNet预训练模型的迁移学习与微调
  • 鸿蒙路由参数传递
  • X 下载器 2.1.42 | 国外媒体下载工具 网页视频嗅探下载
  • 分析 redis 的 exists 命令有一个参数和多个参数的区别
  • Python的sys模块:系统交互的关键纽带
  • 【开源工具】文件夹结构映射工具 | PyQt5实现多模式目录复制详解
  • Python基础学习-Day30
  • Python训练营打卡——DAY31(2025.5.20)
  • Modbus通信协议详解
  • 基于FFT变换的雷达信号检测和参数估计matlab性能仿真
  • 【SPIN】PROMELA远程引用与控制流验证(SPIN学习系列--5)
  • AI练习:毛发旋转效果
  • SPATA2·在空转中推断组织学相关基因表达梯度
  • (T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复
  • BI行业分析思维框架 - 环保行业分析(一)
  • Metal入门,使用Metal绘制3D图形
  • Java泛型 的详细知识总结
  • “高原笑匠”、西藏著名表演艺术家扎西顿珠去世
  • 张核子“限高”次日即被解除,前员工的执行款3个月后仍未到账
  • 中国首次当选联合国教科文组织1970年《公约》缔约国大会主席国
  • 无人机企业从科技园区搬到乡村后,村子里变得不一样了
  • 慢品巴陵,看总编辑眼中的岳阳如何书写“山水人文答卷”
  • 竞彩湃|英超欧冠悬念持续,纽卡斯尔诺丁汉能否拿分?