1 / 47

第 9 章

第 9 章. 可编程外围接口芯片 8255A. 中国科学技术大学 何克东. 微机与 I/O 设备的接口按照数据传送方式的不同 , 可分为并行接口与串行接口两种。 并行接口一次传送多位数据 , 即在 CPU 与 I/O 设备之间传送信息的数据单位一般为“字节”或“字” , 需要使用多根数据线 , 如打印机接口等. 在并行接口中 , 除了少数场合 ( 无条件传送 ) 之外 , 一般都要求在接口与外设之间设置并行数据线的同时 , 至少还要设置两根握手 ( 联络 ) 信号线 , 以便进行互锁异步握手方式 ( 即查询方式 ) 的通信。

Download Presentation

第 9 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 9 章 可编程外围接口芯片 8255A 中国科学技术大学 何克东

  2. 微机与I/O设备的接口按照数据传送方式的不同,可分为并行接口与串行接口两种。 并行接口一次传送多位数据,即在CPU与I/O设备之间传送信息的数据单位一般为“字节”或“字”,需要使用多根数据线,如打印机接口等. 在并行接口中,除了少数场合(无条件传送)之外,一般都要求在接口与外设之间设置并行数据线的同时,至少还要设置两根握手(联络)信号线,以便进行互锁异步握手方式(即查询方式)的通信。 并行接口的优点是传输速率高,但由于需要多根数据线,不适合长距离数据传输,一般用于近距离传送的场合。 并行接口电路有不可编程接口和可编程接口之分。可编程接口可由用户根据需要,编制相应的接口控制程序,选择接口的工作方式及功能。由于可编程接口具使用灵活、功能强的特点,在微机系统中应用广泛。

  3. 9.1 8255A的工作原理 • Intel 8255A是一种通用的可编程并行I/O接口芯片,又称为“可编程外设接口芯片(Programmable Peripheral Interface PPI)” • 具有多种功能的可编程并行接口电路芯片 • 最基本的接口电路:三态缓冲器和锁存器 • 与CPU间、与外设间的接口电路:状态寄存器和控制寄存器 • 还有端口的译码和控制电路、中断控制电路 • 分3个端口,共24个外设引脚 • 共三种输入输出工作方式

  4. A组 端口A A组 控制 PA0~PA7 A组 端口C 上部 数据 总线 缓冲器 内部数据线 PC4~PC7 D0~D7 B组 端口B B组 控制 读写 控制 逻辑 RD WR A0 A1 CS RESET PB0~PB7 B组 端口C 下部 内部控制线 PC0~PC3 一、 8255A的内部结构和功能

  5. 1. 外设数据端口 端口A:PA0~PA7 A组,支持工作方式0、1、2 常作数据端口,功能最强大 端口B:PB0~PB7 B组,支持工作方式0、1 常作数据端口 端口C:PC0~PC7 仅支持工作方式0 A组控制高4位PC4~PC7 B组控制低4位PC0~PC3 可作数据、状态和控制端口 分两个4位,每位可独立操作 控制最灵活,最难掌握

  6. 8255A基本操作

  7. 二、 8255A的控制字1.方式选择控制字 方式0:基本输入输出方式 适用于无条件传送和查询方式的接口电路 方式1:选通输入输出方式 适用于查询和中断方式的接口电路 方式2:双向选通传送方式 适用于与双向传送数据的外设 适用于查询和中断方式的接口电路

  8. 标志位 00= A口方式0 01= A口方式1 1X= A口方式2 1=A口输入 0=A口输出 1=B口输入 0=B口输出 1=C口高4位输入 0=C口高4位输出 0= B口方式0 1= B口方式1 1=C口低4位输入 0=C口低4位输出 方式选择控制格式字

  9. 2.C口置位/复位控制字 • C口置位/复位控制字的功能有两个:一是用于对外设的控制。利用这一功能,可使C口某一位输出一个开关量或一个脉冲,作为外设的启动或停止信号。二是可用于设置方式1和方式2的中断允许。此时,C口置位/复位控制字不影响对应的引脚状态,只是起到设置INTE、开关8255A中断的作用。 • C口置位/复位控制字写入控制端口。

  10. 标志位 000:选择PC0 001:选择PC1 : : 111:选择PC7 1:置位 0:复位 任意值 置位/复位控制字格式

  11. 例:方式0下: MOV AL, 00001010B OUT 63H, AL MOV AL, 00001011B OUT 63H, AL MOV AL, 00001010B OUT 63H, AL PA7 : PA0 PB7 : PB0 PC7 : PC5 : PC0

  12. 三、 8255A的工作方式和C口状态字 1.方式0 - 简单的输入/输出方式 方式0是一种简单的输入/输出方式,也称为无条件传送方式或同步传送方式。在这种方式下,A、B、C三个端口作为相互独立的输入/输出端口使用,不需要联络信号。C口的高4位(PC7~PC4)和低4位(PC3~PC0),即可以合成一个8位端口使用,也可以作为两个相互独立的4位口使用。方式0是单向传送,一次初始化只能设置在一个方向上传送数据。方式0一般用于无条件传送的场合,也可以用做查询式传送。 IN AL,60H OUT 61H, AL

  13. RD 输入端口 data CS,A1,A0 D0~D7 data 方式0输入时序

  14. WR data 输出端口 CS,A1,A0 data D0~D7 方式0输出时序

  15. 2.方式1 - 选通输入/输出方式 方式1是一种选通输入/输出方式(也称为应答方式或异步方式)。A口和B口都可以工作在这种方式。在这种方式下,A口和B口作为两个独立的8位I/O数据通道(可连接外设)。C口要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可作为方式0的输入/输出。方式1也是单向传送。

  16. (1)方式1输入联络信号 STB——选通信号,低电平有效 由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器 IBF——输入缓冲器满信号,高电平有效 8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器 INTR——中断请求信号,高电平有效 8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据

  17. 方式1输入:A端口 数据选通信号 表示外设已经准备好数据 PA7~PA0 ① PC4 INTEA STBA ② PC5 IBFA 输入缓冲器满信号 表示A口已经接收数据 ④ ③ PC3 INTRA RD 中断请求信号 请求CPU接收数据 中断允许触发器

  18. STB RD IBF INTR data 输入端口 data D0~D7 方式1输入时序 STB和IBF是外设和8255A间 的一对应答联络信号, 为的是可靠地输入数据

  19. 方式1中断控制 • 8255A的中断由中断允许触发器INTE控制 置位允许中断,复位禁止中断 • 对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器 • 选通输入方式下 端口A的INTEA对应PC4 端口B的INTEB对应PC2 • 选通输出方式下 端口A的INTEA对应PC6 端口B的INTEB对应PC2

  20. (2)方式1输出联络信号 • OBF——输出缓冲器满信号,低有效 8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走 • ACK——响应信号,低有效 外设的响应信号,指示8255A的端口数据已由外设接受 • INTR——中断请求信号,高有效 当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据 端口A的INTEA对应PC6 端口B的INTEB对应PC2

  21. 方式1输出:A端口 外设响应信号 表示外设已经接收到数据 PA7~PA0 ③ PC6 INTEA ACKA PC7 OBFA ① ② 输出缓冲器满信号 表示CPU已经输出了数据 WR PC3 INTRA ④ 中断请求信号 请求CPU再次输出数据 中断允许触发器

  22. WR OBF INTR ACK data 输出端口 D0~D7 data 方式1输出时序 OBF和ACK是外设和8255A间 的一对应答联络信号, 为的是可靠地输出数据

  23. 3. 方式2-双向方式 • 方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据 • 只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同 • 方式2的数据输入过程与方式1的输入方式一样 • 方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF有效时向外设输出数据,而是在外设提供响应信号ACK时才送出数据

  24. 方式2-双向 PA7~PA0 PC6 INTE1 ACKA PC7 用PC6设置INTE1(输出) 用PC4设置INTE2(输入) 输入和输出中断通过 或门输出INTRA信号 OBFA PC4 STBA INTE2 RD PC5 IBFA WR PC3 INTRA

  25. WR STB RD OBF 方式2双向时序 INTR ACK IBF PA0~PA7 data-in data-out data-out data-in D0~D7

  26. 4.C口状态字 当8255A工作在方式1或方式2时,用输入指令可读取C口的状态字,以了解8255A的状态。

  27. A组 B组 4.端口C的状态字 STBB STBA ACKA ACKA ACKA STBA

  28. 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

  29. 1. 写入方式控制字:示例 • 要求: • A端口:方式1输入 • C端口上半部:输出,C口下半部:输入 • B端口:方式0输出 • 方式控制字:10110001B • 初始化的程序段: mov dx,0fffeh ;假设控制端口为FFFEH mov al,0b1h ;方式控制字 out dx,al ;送到控制端口

  30. 2. 读写数据端口 • 初始化编程后: • 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据 • 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备 • 8255A具有锁存输出数据的能力 • 对输出方式的端口同样可以输入 • 不是读取外设数据 • 读取的是上次CPU给外设的数据

  31. 读写数据端口示例: • 利用8255A的输出锁存能力,可实现按位输出控制 • 对输出端口B的PB7位置位的程序段: mov dx,0fffah ;B端口假设为FFFAH in al,dx ;读出B端口原输出内容 or al,80h ;使PB7=1 out dx,al ;输出新的内容

  32. 3. 读写端口C: • C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出 • 在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组 • 当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚作为联络信号使用 • 其余引脚仍可设定工作在方式0

  33. 对端口C的数据输出有两种办法 • 通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效 • 通过控制端口:写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器

  34. 读取的C端口数据有两种情况 • 未被A和B端口使用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息 • 被A和B端口作为联络线的引脚:将读到反映8255A状态的状态字

  35. 9.2 8255A的应用 作为通用的并行接口电路芯片,8255A具有广泛的应用 • 应用在IBM PC/XT微机上 • 应用于打印机接口电路 • 连接简易键盘 • 驱动LED数码管 • ……

  36. 一、基本输入输出应用 例,某一系统中,有8个开关K7~K0,要求不断检测它们的通断状态,并随时在发光二极管LEE7~LED0上显示出来。开关断开,相应的LED点亮;开关合上,LED熄灭。选用8086 CPU,8255A和74LSl38译码器等芯片。 • 判断端口地址:0F0H~0F6H • 确定控制字:10010000B

  37. MOV DX,0F6H ;控制字寄存器 MOV AL,10010000B ;控制字 OUT DX,AL ;写入控制字 TEST_IT: MOV DX,0F0H ;指向A口 IN AL,DX ;从A口读入开关状态 MOV DX,0F2H ;指向B口 OUT DX,AL ;B口控制LED,指示开关状态 JMP TEST_IT ;循环检测

  38. 二、键盘接口 +5V PA0 8255A PA1 PA2 PA3 D E C F B 8 9 A 4 5 6 7 0 1 3 2 PB7 PB6 PB5 PB4 8255APB3 PB2 PB1 PB0 键盘接口电路

  39. PORT_A EQU 0FF9H ;8255A口地址 端口地址 PORT_B EQU 0FFBH ;8255B口地址 PORT_CTL EQU 0FFFH ;8255控制口地址 DATA SEGMENT :数据段,键盘扫描码表 ; 0 l 2 3 4 5 6 7 TABLE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH ; 8 9 A B C D E F DB 0D7H, 0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH DATA ENDS STACK1 SEGMENT STACK ‘STACK’ DW 50 DUP(0) TOP_STAC LABEL WORD STACK1 ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX, STACK1 MOV SS, AX LEA SP, TOP_STACK MOV AX, DATA MOV DS, AX

  40. ;初始化8255A,方式0,A口作输出,B口和C口为输入向所有行送0;初始化8255A,方式0,A口作输出,B口和C口为输入向所有行送0 MOV DX, PORT_CTL ;指向控制口 MOV AL, 10001011B ;控制宇 OUT DX, AL ;写入控制字 MOV DX,PORT_A ; A口 MOV AL,0 OUT DX,AL ;向A口各位输出0 ;读列,查看是否所有键均松开 MOV DX,PORT_B WAIT_OPEN:IN AL,DX ;键盘状态读入B口 AND AL,0FH ;只查低4位(列值) CMP AL,0FH ;是否都为1(各键均松开)? JNE WAIT_OPEN ;否,继续查 ;各键均已松开,再查列是否有0,即是否有健压下 WAIT_PRES:IN AL,DX ;读B口 AND AL,0FH ;只查低4位 CMP AL,0FH ;是否有键压下 JE WAIT_PRES ;无,等待 MOV CX,16EAH ; 有键压下,延时20ms,消抖动 DELAY: LOOP DELAY ;延时20ms

  41. ;再查列,看键是否仍被压着 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT_PRES ;已松开,转出等待压键 ;键仍被压着,确定哪一个键被压下 MOV AL,0FEH ;先使D0=0 MOV CL,AL ;CL=1111 1110B NEXT_ROW: MOV DX,PORT_A ;A口 OUT DX,AL ;向一行输出低电平 MOV DX,PORT_B ;B口 IN AL,DX ;读入B口状态 AND AL,0FH ;只截取列值 CMP AL,0FH ;是否均为1? JNE ENCODE ;否,表示有键压下,转去编码 ROL CL,1 ;均为1,使下行输出0 MOV AL,CL JMP NEXT_ROW;查看下行

  42. ; 0 l 2 3 4 5 6 7 TABLE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH ; 8 9 A B C D E F DB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH ;已找到有一列为低电平,对压健的行列值编码 ENCODE: MOV BX,000FH ;建立地址指针,先指向F健对应的地址 IN AL,DX ;从B口读入行列号 NEXT_TRY:CMP AL,TABLE[BX];读入的行列值与表中查得的相等吗? JE DONE ;相等,转出 DEC BX ;不等,指向下一个(键值较小者)地址 JNS NEXT_TRY ;若地址尚末减为负值,继续查 MOV AH,1 ;若减为负值,置出错码01一AH中 JMP EXIT DONE: MOV AL,BL ;BL中存有键的16进制代码 MOV AH,0 ;AH=0,读到有效键值 EXIT: HLT CODE ENDS END

  43. LED数码管及其接口 • 发光二极管LED是最简单的显示设备 • 由7段LED就可以组成的LED数码管 • LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中 • LED数码管可以显示内存地址和数据等

  44. LED数码管的工作原理 • 主要部分是7段发光管 • 顺时针分别称为a、b、c、d、e、f、g • 有的产品还附带有一个小数点h • 通过7个发光段的不同组合 • 主要显示0~9 • 也可以显示A~F(实现16进制数的显示) • 还可以显示个别特殊字符,如-、P 等 a g b f c e d h

  45. a b c d e f g h a b c d e f g h 阳极 阴极 +5V LED数码管的结构 共阴极 共阳极

  46. a b c d e f g h 反 相 驱 动 电 路 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8255A 单个LED数码管的显示 a g b f c e d h

  47. PORT_A EQU 0FOH ;A口地址 COUNT EQU 05H ;要显示的数字 DATA SEGMENT ;16进制数字的七段代码表 ; 0 1 2 3 4 5 6 7 TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H ; 8 9 A b C d E F DB 00H,18H,08H,03H,46H,21H,06H,0EH DATA ENDS CODE SEGMENT ;16进制数字到七段代码的转换程序 : DISPY: MOV BX,OFFSET TABLE ;七段代码表首地址 LEA AL,COUNT[BX] ;取5的位移量 XLAT ;将被转换的七段代码送AL寄存器 MOV DX,PORT_A OUT DX,AL ;将七段代码值从A口输出,点亮相应数字 : CODE ENDS END

More Related