微机原理11_并口8255Aok讲述.ppt
90页第十一章 并行可编程接口芯 片8255及其应用 主要内容 • 并行接口芯片8255A – 结构 – 工作方式 – 应用 • 键盘 • LED • 打印机* CPU与外设的接口 • 接口的组成和功能 – 数据锁存/缓冲:速度匹配、信号隔离 – 控制命令和状态寄存器 – 地址译码:内部端口选择 – 读写控制 – 中断/DMA请求逻辑 • 可编程接口芯片特点 – 多通道 – 多功能 – 可编程:通过编程设置各个通道的工作模式 • 可编程微处理器、可编程芯片…… 接口信号 • CPU侧 – CS*: – AEN – IOR*、IOW*: – DMA、INT – 地址总线 – 数据总线 • 外设侧:STB*、RDY – 输入接口: • 输入选通STB*:外设->接口, • 输入准备好RDY:接口->外设,输入缓冲器满IBF – 输出接口: • ACK 接受数据回答:外设->接口 • 输出缓冲器满OBF :接口->外设 – 数据总线 并行接口 • 8255A的工作方式和编程 • 8255A的应用 – 简易键盘的扫描程序 – LED数码管的多位显示 并行数据传输方式 • 以计算机的字长(通常是8位、16位或32 位)为传输单位,一次传送一个字长的数 据 • 适合于外部设备与微机之间进行近距离、 大量和快速的信息交换 – 例如:微机与并行接口打印机、磁盘驱动器 • 微机系统中最基本的信息交换方法 – 例如:系统板上各部件之间,接口电路板上 各部件之间 并行接口芯片8255A • 具有多种功能的可编程并行接口电路芯片 – 最基本的接口电路:三态缓冲器和锁存器 – 与CPU间、与外设间的接口电路:状态寄存 器和控制寄存器 – 还有端口的译码和控制电路、中断控制电路 • 分3个端口,共24个外设引脚 • 共三种输入输出工作方式 8255A的内部结构和引脚 数据 总线 缓冲器 内部控制线 内部数据线 D0~D7 A组 控制 A组 端口A A组 端口C 上部 B组 控制 B组 端口B B组 端口C 下部 读写 控制 逻辑 PC0~PC3 PB0~PB7 PC4~PC7 PA0~PA7 RD WR A0 A1 CS RESET 1. 外设数据端口 • 端口A:PA0~PA7 – A组,支持工作方式0、1、2 n常作数据端口,功能最强大 • 端口B:PB0~PB7 – B组,支持工作方式0、1 – 常作数据端口 • 端口C:PC0~PC7 – 仅支持工作方式0 – 可作数据、状态和控制端口 – 分两个4位,每位可独立操作 • A组控制高4位PC4~PC7 • B组控制低4位PC0~PC3 2. 主板上的8255与处理器接口 CS* A1 A0I/O地址读操作RD*写操作WR* 0 0 0 0 0 1 0 1 0 0 1 1 60H 61H 62H 63H 读端口A 读端口B 读端口C 非法 写端口A 写端口B 写端口C 写控制字 8255A的工作方式 • 方式0:基本输入输出方式 – 适用于无条件传送和查询方式的接口电路 – 查询方式下,可以使用C口作为握手控制 • 方式1:选通输入输出方式 – 适用于查询和中断方式的接口电路 • 方式2:双向选通传送方式 – 适用于双向传送数据的外设 – 适用于查询和中断方式的接口电路 方式0输入时序 data data输入端口 D0~D7 RD CS,A1,A0 方式0输出时序 WR data data 输出端口 D0~D7 CS,A1,A0 方式1输入引脚:A端口 表示外设已经准备好数据 通知外设停止发送数据 请求CPU接收数据 PC4 PC5 PC3 PA7~PA0 INTEA IBFA INTRA STBA 中断允许触发器 •注意:PC7、PC6可以单独用于I/O 方式1输入引脚:B端口 PC2 PC1 PC0 PB7~PB0 INTEB IBFB INTRB STBB 数据选通信号 表示外设已经准备好数据 输入缓冲器满信号 表示B口已经接收数据 中断请求信号 请求CPU接收数据 中断允许触发器 方式1输入联络信号 • STB*——选通信号,低电平有效 – 由外设提供的输入信号,当其有效时,将输入设备送 来的数据锁存至8255A的输入锁存器 • IBF——输入缓冲器满信号,高电平有效 – 8255A输出的联络信号。
当其有效时,表示数据已锁 存在输入锁存器 • INTR——中断请求信号,高电平有效 – 8255A输出的信号,可用于向CPU提出中断请求,要 求CPU读取外设数据 方式1输入时序 data INTR IBF data PA/PB D0~D7 STB RD • INTR高电平有效 • RD*清INTR和IBF 方式1中断控制 • 8255A的中断由中断允许触发器INTE控制 – 置位允许中断,复位禁止中断 • 对INTE的置位/复位操作由端口C的对应位实现 – 端口A的INTEA对应PC4 – 端口B的INTEB对应PC2 PC4 PC5 PC3 PA7~PA0 INTEA IBFA INTRA STBA PC2 PC1 PC0 PB7~PB0 INTEB IBFB INTRB STBB 方式1输出引脚:A端口 外设响应信号 表示外设已经接收到数据 输出缓冲器满信号 表示CPU已经输出了数据 中断请求信号 请求CPU再次输出数据 PC6 PC7 PC3 PA7~PA0 INTEA OBFA INTRA ACKA 中断允许触发器 方式1输出引脚:B端口 PC2 PC1 PC0 PB7~PB0 INTEB OBFB INTRB ACKB 外设响应信号 表示外设已经接收到数据 输出缓冲器满信号 表示CPU已经输出了数据 中断请求信号 请求CPU再次输出数据 中断允许触发器 方式1输出联络信号 • OBF*——输出缓冲器满信号,低有效 – 8255A输出给外设的一个控制信号,当其有效时,表 示CPU已把数据输出给指定的端口,外设可以取走 • ACK*——响应信号,低有效 – 外设的响应信号,指示8255A的端口数据已由外设接 受(“完成时态”!!) • INTR——中断请求信号,高有效 – 当输出设备已接受数据后,8255A输出此信号向CPU 提出中断请求,要求CPU继续提供数据 • 端口A的INTEA对应PC6 • 端口B的INTEB对应PC2 • PC4、PC5可以单独用于I/O 方式1输出时序 INTR data data PA/PB D0~D7 WR OBF ACK • 当ACK、OBF都为高时,INTR有效 方式2双向方式 • 方式2将方式1的选通输入输出功能组合成一个双 向数据端口,可以发送数据和接收数据 • 只有端口A可以工作于方式2,需要利用端口C的 5个信号线,其作用与方式1相同 • 方式2的数据输入过程与方式1的输入方式一样 • 方式2的数据输出过程与方式1的输出方式有一点 不同:数据输出时8255A不是在OBF*有效时向 外设输出数据,而是在外设提供响应信号ACK* 时才送出数据 方式2双向引脚 PC6 PC7 PC3 PA7~PA0 INTE1 OBFA INTRA ACKA PC4 PC5 IBFA STBA INTE2 用PC6设置INTE1(输出用) 用PC4设置INTE2(输入用) 输入和输出中断通过 或门输出INTRA信号 方式2双向时序 data-out INTR data-out data-in data-inPA0~PA7 D0~D7 IBF WR OBF ACK STB RD • 4.8 8255A的编程 • 初始化编程:一个方式控制字 – 采用控制I/O地址:A1A0=11 • 工作过程中:通过数据端口对外设数据 进行读写 – 数据读写利用端口A、B和C的I/O地址, A1A0依次等于00、01、10 • IBM PC/XT机上,端口A、B、C和控制 端口的I/O地址为60H、61H、62H和63H 1. 写入方式控制字:控制字格式 写入方式控制字:示例 • 要求: – A端口:方式1输入 – C端口上半部:输出,C口下半部:输入 – B端口:方式0输出 • 方式控制字:10110001B,即B1H • 初始化的程序段: mov dx,0243h;假设控制端口为0243H mov al,0b1h;方式控制字 out dx,al;送到控制端口 2. 读写数据端口 • 初始化编程后: – 当数据端口作为输入接口时,执行输入IN指 令将从输入设备得到外设数据 – 当数据端口作为输出接口时,执行输出OUT 指令将把CPU的数据送给输出设备 • 8255A具有锁存输出数据的能力 – 可以读入输出方式的端口锁存器中的值,进 行按位处理后再次输出 • 注意:不是读取外设数据,而是读取上一次CPU 发给外设的数据 读写数据端口:示例 • 利用8255A的输出锁存能力,可实现按位 输出控制 • 对输出端口B的PB7位置位的程序段: mov dx,0241h;B端口假设为0241H in al,dx;读出B端口原输出内容 or al,80h;使PB7=1 out dx,al;输出新的内容 3. 端口C的说明 • C端口被分成两个4位端口,两个端口只能 以方式0工作,可分别选择输入或输出 – 在控制上,C端口上半部和A端口编为A组,C 端口下半部和B端口编为B组 • 当A和B端口工作在方式1或方式2时,C端 口的部分或全部引脚将被征用,即被征用 引脚的功能不由方式字定义,而是由A、B 口的工作方式确定 – 其余引脚仍可设定工作在方式0 写端口C • 对端口C的数据输出有两种办法 – 通过端口C的I/O地址:向C端口直接写入字节 数据。
这一数据被写进C端口的输出锁存器, 并从输出引脚输出,但对设置为输入的引脚 无效 – 通过控制端口:向C端口写入位控字,使C端 口的某个引脚输出1或0,或置位复位内部的 中断允许触发器 端口C的位控制字 写入11口 读端口C • 读取的C端口数据有两种情况 – 未被A和B端口征用的引脚:将从定义为输入 的端口读到外设输入的数据;将从定义为输 出的端口读到输出锁存器中的信息 – 被A和B端口征用作为联络线的引脚:将读到 反映8255A状态的状态字 D7D6D5D4D3D2D1D0 方式1输入 I/OI/OIBFAINTEA INTRAINTEBIBFBINTRB 方式1输出 OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB 方式2双向 OBFAINTE1IBFAINTE2INTRA 端口C的状态字 A组 B组 8255A的应用 作为通用的并行接口电路芯片,8255A 具有广泛的应用 • 连接简易键盘 • 驱动LED数码管 • 打印机接口电路 • …… 键盘及其接口 • 键盘是微机系统最常使用的输入设备 – 标准键盘:通过5芯电缆与PC微机主机连 接 • 编码键盘 – 小键盘:适用于单板机或以微处理器为基 础的仪器,实现数据、地址、命令及指令 等的输入 • 非编码键盘 键位置和扫描码 Esc 01 81 1 02 82 234 = 0- Q A Z S WP L M , 030405 1011 1E 1F 2C 838485 9091 9E 12345 111213 16 17 25 3031 39 4450 51 9F AC 键位置 接通扫描码 断开扫描码 键名称 标准键盘简介 键盘服务BIOS功能调用(INT 16H) AH功能描述出口参数说明 00从键盘读取单个字 符 AH=键盘的扫描码 AL=字符的ASCII码 一直等待到有键按下 10从增强键盘中获取 按键 同上同上 01读取键盘字符或状 态 AH=键盘的扫描码 AL=字符的ASCII码 不等待,有键按下同 00,无键按下AL=0 11读。





