330 likes | 622 Views
第九章 可编程并行接口芯片 8255A 及其应用. 一、 8255 A 的结构和功能. 二、 8255A 的控制字. 三、 8255A 的工作方式. 四、 8255A 的应用举例. 习题: 9-6 , 9-7 , 9-10. 并行接口芯片应具有的功能:. ( 1 ) 具有两个以上的输入 / 输出数据端口(锁存 / 缓冲); ( 2 ) 每个数据端口有与 CPU 用应答方式交换信息所必须的控制和状态信号;也有与外设交换信息所必须的控制和状态信号; ( 3 ) 通常每个数据端口还具有能用中断方式与 CPU 交换信息所必须的电路;
E N D
第九章 可编程并行接口芯片8255A及其应用 一、8255A的结构和功能 二、8255A的控制字 三、8255A的工作方式 四、8255A的应用举例 习题:9-6,9-7,9-10
并行接口芯片应具有的功能: (1) 具有两个以上的输入/输出数据端口(锁存/缓冲); (2) 每个数据端口有与CPU用应答方式交换信息所必须的控制和状态信号;也有与外设交换信息所必须的控制和状态信号; (3) 通常每个数据端口还具有能用中断方式与CPU交换信息所必须的电路; (4) 具有进行片选和读写控制的电路; (5) 可编程(由程序来选择数据端口,数据传送方向,交换信息的方式等)。
内部总线 PA7~PA0 A组控制 A口 DB 数据总线 PC7~PC4 上C口 缓冲器 PC3~PC0 RD 下C口 o WR o 读/写 A0 控制逻辑 PB7~PB0 A1 B口 B组控制 RESET o CS 第一节 8255A的工作原理 一、8255A的结构和功能 外设接口 内部逻辑 CPU接口
PA7~PA0 A口 内部总线 PC7~PC4 上C口 PC3~PC0 下C口 PB7~PB0 B口 (一) 数据端口 8255A内部包含3个8位I/O端口A口、B口和C口,通过外部24根I/O线与外设交换数据或进行通信联络。其中C口可分为两个4位口使用。 端口A和端口B可用作8位 数据I/O口,端口C既可作为8位I/O口,又可作为两个4位I/O口,还常用来配合A口和B口工作,作为控制信号输出、或作为状态信号输入。
A组控制 内部总线 B组控制 (二) 控制逻辑 这是两组根据CPU的编程命令控制8255A工作的电路,它们内部有控制寄存器,用来接收CPU送来的命令字,以决定A组、B组的工作方式,或对C口的每一个位执行置位/复位操作。 端口A和端口C的上半部分(PC7~PC4)由A组控制逻辑管理,端口B和端口C的下半部分(PC3~PC0)由B组控制逻辑管理。
内部总线 DB 数据总线 缓冲器 RD o o 读/写 WR A0 至控制寄存器 控制逻辑 A1 (四) 读/写控制逻辑 RESET o 至数据端口 CS 控制总线的开放与关闭;控制信息传送的路径和方向。 (三)数据总线缓冲器 是双向三态的8位缓冲器, 用作8255A和系统数据总线的接口。 1)接收CPU送来的数据或控制字; 2)外设传送给CPU的数据或状态信息 A1 A0=00,选中端口A A1 A0=01,选中端口B A1 A0=10,选中端口C A1 A0=11,选中控制字寄存器端口
8255A端口选择表 (五) 端口寻址
端口选择信号: 当8255A用在8位数据总线的微处理器(8088)系统中时,端口选择信号输入端A1 A0与地址总线的A1 A0相连即可,例如端口地址为60H,61H,62H和63H。 在16位数据总线的微处理器系统(8086)中,通常将端口选择信号输入端A1 A0与地址总线的A2 A1相连。 8255A芯片的数据线D0~D7既可以接到系统数据总线的低8位,也可以接到系统数据总线的高8位。为了方便,通常接到系统数据总线的低8位,这样CPU要求芯片内部的各个端口都使用偶地址。例如端口地址为F0H,F2H,F4H和F6H。
AB CB DB D7~D0 8255 PA PB PC 4 4 8 8 I/O I/O I/O I/O PA7 ~PA0 PB7 ~PB0 PC3 ~PC0 PC7 ~PC4 PB PA PC 8 I/O 8 I/O PB7 ~PB0 PA7 ~PA0 控制或 I/O 控制或 I/O RD WR A0 A1 CS PB PA PC 8 I/O 8 I/O PB7 ~PB0 PA7 ~PA0 I/O 控制 (六) 方式选择 方式0:基本输入输出 方式1:选通输入输出 方式2:双向总线
方式选择控制字格式 1=输入0=输出 1=输入0=输出 1=输入0=输出 1=输入0=输出 特征位 D7=1 下C口 I/O A口方式: 00=方式0 01=方式1 1x=方式2 B口I/O B口方式 0=方式0 1=方式1 上C口I/O A口I/O 二、8255A的控制字 1、方式选择控制字 8255A有3种基本的工作方式,在对8255A进行初始化编程时,应向控制寄存器写入方式选择控制字,以规定各端口的工作方式。
1 0 0 1 0 1 0 1 例:在一个8086/8088系统中,有一片8255A芯片,其各个端口的地址分别为0F8H~0FBH,现要求各个端口的工作方式为: 端口A 方式0 输入 端口B 方式1 输出 端口C(上半部) PC7 ~PC4 输出 端口C(下半部) PC3 输入 要求:进行初始化编程 分析:根据8255A工作模式可确定方式控制字 95H 初始化编程: MOV AL,95H OUT 0FBH,AL
2、置位/复位控制字 端口C常用作控制或应答信号,通过对8255A的控制口写入置位/复位控制字,可使C口的任一个引脚的输出单独置1或置0。 1 置位 0 复位 置位/复位控制字格式 000 选中PC0 001 选中PC1 111 选中PC7 位选择 无关位 特征位 D7 = 0 例:要使端口C的bit3置位的控制字为:00000111B; MOV AL,00000111B OUT 0FBH,AL 而使端口C的bit3复位的控制字为:00000110B ; MOV AL,00000110B OUT 0FBH,AL
例如,要求8255A的A口和B口均工作于方式0, A口和下C口作输入口, B口和上C口作输出口,设8255A各端口地址为60H~63H, 可用下列指令来设置这种工作方式: MOV AL,91H ;方式控制字10010001B AL OUT 63H,AL ;方式控制字送控制寄存器 三、8255A的工作方式 1、方式 0-基本输入输出方式 适用于不需要应答信号的简单I/O场合。 A口和B口可作为8位端口,C口的高4位和低4位可作为两个4位的端口,且每个端口均可作为输入口或输出口用。 数据输出有锁存,输入不能锁存。
2、方式 1-选通输入/ 输出方式 1) 选通输入方式 端口A或B用作数据口,均可以工作于输入或输出方式。这两个8位数据口的输入、输出数据都能锁存,但必须在联络信号的控制下完成I/O操作,端口C的部分引脚用来产生或接收这些联络信号。 此时PC3~5 和PC0~2分别用作A口和B口的状态和控制线, PC6和PC7用作I/O线 方式1 (B口) 8 PB7~PB0 INTEB STBB PC2 8 PA7~PA0 PC1 IBFB INTEA & PC4 STBA PC0 INTRB PC5 IBFA & RD o PC3 INTRA RD o PC6PC7 I/O线 方式1 (A口)
各控制联络信号的意义 STB-数据选通输入信号,低电平有效,由外设输入; 方式1 (A口) 8 PA7~PA0 INTEA PC4 STBA PC5 IBFA & PC3 INTRA INTR-中断请求信号,高电平有效。是8255A向CPU发出的请求中断信号,要求CPU服务。当 IBF =1、STB =1且 INTE =1时,INTR =1。 RD o PC6PC7 I/O线 IBF-输入缓冲器满信号,高电平有效,由8255A输出的状态信号,表示输入缓冲器已满,向外设指明不能再送入数据。 INTE-中断允许信号。是控制8255A能否向CPU发中断请求信号,它没有外部引脚,INTEA、INTEB是由用户对PC4、PC2按位置位实现的。
2)选通输出方式 方式1输出 (A口) 方式1输出 (B口) 8 PA7~PA0 PB7~PB0 8 INTEA INTEB PC6 ACKA ACKB PC2 PC7 OBFA PC1 OBFB & & PC3 INTRA PC0 INTRB WR o WR o PC4PC5 I/O线 这时PC3、PC6和PC7作A口的应答信号,PC0、PC1和PC2作B口的应答信号。余下的PC4和PC5可作输入或输出线。
各应答信号的意义: OBF-输出缓冲器满信号,输出,低电平有效。表示CPU已输出数据到指定端口。 ACK-外设的回答信号,低电平有效,由外设送给8255A。表示CPU送到指定端口的数据已被外设接受。 方式1输出 (A口) 8 PA7~PA0 INTEA PC6 ACKA PC7 OBFA & PC3 INTRA WR o PC4PC5 INTR-中断请求信号,高电平有效。当 ACK =1、OBF =1且 INTE =1时,INTR =1。 I/O线 INTE-中断允许信号。 INTEA、INTEB是由用户对PC6、PC2按位置位实现的。
3、方式2-双向总线方式 (仅适用于A口) 这时PA7~PA0作为双向数据总线,PC3 ~PC7用作A口的联络控制信号。PC2~PC0可用作B口的应答信号线,或作I/O线。 各信号意义: INTRA PC3 INTRA-中断请求信号,‘ 1’有效. PA7 1 OBFA-输出缓冲器满,‘ 0’有效. 8 ~ PA0 & ACKA-外设响应信号,‘ 0’有效. OBFA PC7 IBFA-输入缓冲器满信号,‘ 1’有效. ACKA PC6 INTE1 STBA-选通输入信号,‘ 0’有效. & WR O STBA INTE2 PC4 IBFA PC5 RD O PC2~PC0 3
D7 D6 D5 D4 D3 D2 D1 D0 输入 I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB D7 D6 D5 D4 D3 D2 D1 D0 输出 INTEA OBFA OBFA I/O I/O INTRA INTEB OBFB INTRB D7 D6 D5 D4 D3 D2 D1 D0 INTE1 IBFA INTE2 INTRA * * * 4、 C口状态字 8255A工作在方式0时,C口各位作输入输出用。当工作在方式1和方式2时,C口产生与外设的联络信号。此时。读取C口的内容可检查或测试外设的状态。C口的状态字如下: (1)方式1 (2)方式2
第二节 8255A的应用举例 接口电路 驱动器 PA7 D7~D0 D7~D0 RD WR A0 A1 CS 8086 ~ 系统总线 PA0 RD WR A1 A2 +5V K3 PC3 A0 A3 A4 Y0 Y1 Y2 O O O A B C G2A G2B G1 K2 PC2 K1 PC1 K0 M/IO PC0 & A5 A6 A7 8255A LS138 +5V 一、基本输入输出应用 8255A作为开关K0~K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0~PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由A口输出显示。
由图可知: A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 0 1 0 按题意设置端口A方式0输出,下C口输入. 1 0 0 0 × 0 × 1 CS LED显示器的字形代码表存放在TABLE单元开始的内存中. A0 A3 A4 Y0 Y1 Y2 A B C G2A G2B G1 TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH M/IO & A5 A6 A7 LS138 8255A各端口地址确定: 各端口地址为:E8H~EEH 8255A方式选择控制字: 81H
实现操作的具体程序如下: MOV DX,0EEH ;设置8255A工作方式 MOV AL,81H OUT DX,AL MOV DX,0ECH ;指向端口C,读开关状态 IN AL,DX AND AL,0FH LEA BX,TABLE ;显示代码表首地址送BX XLAT ;查表,取出相应的字形码送AL MOV DX, 0E8H ;指向端口A OUT DX, AL ;输出字形码显示 HLT
a b c d e f g dp a f b g a b c d e f g dp c e d dp LED显示器的外形 共阳极LED显示器的结构 共阴极LED显示器的结构 LED显示器的结构
a b c d e f g dp PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 5 DB7--DB0 LED显示器的工作原理 软件译码法 方案1 共阳极LED显示器与同相驱动器接口
a a f b g f b a g c e a a a a f a b c a e a g dp d f b f b f b f g b g dp f g b d g f b c f b g e g g c c e e c c e e dp d c c e e c e dp dp d d dp dp d d dp dp d d dp d D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a 0(C0H) 1 1 0 0 0 0 0 0 1(F9H) 1 1 1 1 1 0 0 1 2(A4H) 1 0 1 0 0 1 0 0 3(B0H) 1 0 1 1 0 0 0 0 4(99H) 1 0 0 1 1 0 0 1 5(92H) 1 0 0 1 0 0 1 0 6(82H) 1 0 0 0 0 0 1 0 7(F8H) 1 1 1 1 1 0 0 0 8(80H) 1 0 0 0 0 0 0 0 9(90H) 1 0 0 1 0 0 0 0
a b c d e f g dp PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 5 DB7--DB0 方案2 共阳极LED显示器与反相驱动器接口
a a f b g f b a g c e a a a a f a b c a e a g dp d f b f b f b f g b g dp f g b d g f b c f b g e g g c c e e c c e e dp d c c e e c e dp dp d d dp dp d d dp dp d d dp d D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a 0(3FH) 0 0 1 1 1 1 1 1 1(05H) 0 0 0 0 0 1 1 0 2(5BH) 0 1 0 1 1 0 1 1 3(4FH) 0 1 0 0 1 1 1 1 4(66H) 0 1 1 0 0 1 1 0 5(6DH) 0 1 1 0 1 1 0 1 6(7DH) 0 1 1 1 1 1 0 1 7(07H) 0 0 0 0 0 1 1 1 8(7FH) 0 1 1 1 1 1 1 1 9(6FH) 0 1 1 0 1 1 1 1
5V 5V +5V 13 12 11 10 9 15 14 1. 5V 7447 a b c d e f g 3 4 5 +5V 16 8 RBI RBO LT Vcc GND I=20mA R A B C D 7 1 2 6 0. 2V 二、七段LED显示器接口电路 利用专用接口芯片7447驱动LED显示器 7447为BCD—七段译码器 与单个LED的连接 R=(5–1.5 – 0.2)V/ 20mA=168 取R=150
7447BCD—七段译码器与多个LED的连接 DB0——DB7 DB0——DB7 PA0PA1PA2PA3 PA4 PA5PA6 PA7 PB0PB1PB2PB3 PB4 PB5PB6 PB7 A B C D A B C D A B C D A B C D 7447 7447 7447 7447 a b c d e f g a b c d e f g a b c d e f g a b c d e f g 5V 静态显示器的设计
7 4 4 7 a b c d e f g A B C D PB0 PB1 PB2 PB3 • • • • • • • • • • • • • • • • • • • • • • • • 动态显示器的设计 PA0 PA1 PA2 PA3 PA4 PA5 PA6 8 2 5 5 PNP
初始化 取显示数据 送段通道口 位码送位通道口 延时 修改指针,位码 N 是否最后一位 Y 结束 LEA SI,BUFF MOV CX,FEH MOV DL,01H MOV AL,[SI] OUT POTB,AL MOV AL,DL OUT POTA,AL INC SI ROL DL 显示控制程序
a PB0 • • • • • • • • • • • • g PB7 • • • • • • • • • • • • • • • • • • • • • 74LS07 PA0 PA1 PA2 PA3 PA4 PA5 PA6 8 2 5 5 NPN
初始化 取显示数据 查表得段码送段通道 位码送位通道 延时 修改指针,位码 N 是否最后一位 Y 结束 LEA SI,BUFF MOV CL,40H LEA BX,TABLE DISI:MOV AL,[SI] XLAT MOV DX, POTB OUT DX,AL MOV AL,CL MOV DX, POTA OUT DX,AL INC SI SHR CL JNZ DISI