1、可编程接口芯片,,第八章,2,主要内容,并行接口芯片8255A 结构 工作方式 应用 LED 打印机*,3,CPU与外设的接口,接口的组成和功能 数据锁存/缓冲:速度匹配、信号隔离 命令和状态寄存器 地址译码:内部端口选择 读写控制 中断/DMA请求逻辑 可编程接口芯片 多通道 多功能 可编程:通过编程设置各个通道的工作模式 可编程微处理器、可编程芯片。,4,接口信号,CPU侧 CS*: M/IO*: RD*、WR*: DMA、INT 地址总线 数据总线 外设侧:STB*、RDY 输入接口: STB*:外设-接口, RDY:接口-外设,IBF 输出接口: STB*:外设-接口,ACK RDY:
2、接口-外设,OBF 数据总线,5,并行接口,8255A的工作方式和编程 8255A的应用 简易键盘的扫描程序 LED数码管的多位显示,6,并行数据传输方式,以计算机的字长(通常是8位、16位或32位)为传输单位,一次传送一个字长的数据 适合于外部设备与微机之间进行近距离、大量和快速的信息交换 例如:微机与并行接口打印机、磁盘驱动器 微机系统中最基本的信息交换方法 例如:系统板上各部件之间,接口电路板上各部件之间,7,并行接口芯片8255A,具有多种功能的可编程并行接口电路芯片 最基本的接口电路:三态缓冲器和锁存器 与CPU间、与外设间的接口电路:状态寄存器和控制寄存器 还有端口的译码和控制电路
3、、中断控制电路 分3个端口,共24个外设引脚 共三种输入输出工作方式,8,8255A的内部结构和引脚,9,1. 外设数据端口,端口A:PA0PA7 A组,支持工作方式0、1、2 常作数据端口,功能最强大 端口B:PB0PB7 B组,支持工作方式0、1 常作数据端口 端口C:PC0PC7 仅支持工作方式0 可作数据、状态和控制端口 分两个4位,每位可独立操作 A组控制高4位PC4PC7 B组控制低4位PC0PC3,10,2. 与处理器接口,11,8255A的工作方式,方式0:基本输入输出方式 适用于无条件传送的接口电路 方式1:选通输入输出方式 适用于查询和中断方式的接口电路 方式2:双向选通传
4、送方式 适用于双向传送数据的外设 适用于查询和中断方式的接口电路,12,方式0输入时序,13,方式0输出时序,14,方式1输入引脚:A端口,表示外设已经准备好数据,通知外设停止发送数据,请求CPU接收数据,PC6-7,I/O,1,2,1,3,4,15,方式1输入引脚:B端口,数据选通信号 表示外设已经准备好数据,输入缓冲器满信号 表示B口已经接收数据,中断请求信号 请求CPU接收数据,1,2,1,3,4,16,方式1输入联络信号,STB选通信号,低电平有效 由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器 IBF输入缓冲器满信号,高电平有效 8255A输出的联
5、络信号。当其有效时,表示数据已锁存在输入锁存器 INTR中断请求信号,高电平有效 8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据 注意:PC7、PC6可以单独用于I/O,17,方式1输入时序,INTR高电平有效 RD*清INTR和IBF,18,方式1中断控制,8255A的中断由中断允许触发器INTE控制 置位允许中断,复位禁止中断 对INTE的置位/复位操作由端口C的对应位实现 端口A的INTEA对应PC4 端口B的INTEB对应PC2,19,方式1输出引脚: A端口,外设响应信号 表示外设已经接收到数据,输出缓冲器满信号 表示CPU已经输出了数据,中断请求信号 请求
6、CPU再次输出数据,2,1,1,3,4,PC4-5,I/O,20,方式1输出引脚:B端口,2,1,1,3,4,21,方式1输出联络信号,OBF输出缓冲器满信号,低有效 8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走 ACK响应信号,低有效 外设的响应信号,指示8255A的端口数据已由外设接受(“完成时态”!) INTR中断请求信号,高有效 当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据 端口A的INTEA对应PC6 端口B的INTEB对应PC2 PC4、PC5可以单独用于I/O,22,方式1输出时序,当
7、ACK、OBF都为高时,INTR有效,23,方式2双向方式,方式2将方式1的选通输入以及输出功能组合成一个双向数据端口,可以发送数据和接收数据 只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同 方式2的数据输入过程与方式1的输入方式一样 方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF有效时向外设输出数据,而是在外设提供响应信号ACK时才送出数据,24,方式2双向引脚,用PC6设置INTE1(输出用) 用PC4设置INTE2(输入用) 输入和输出中断通过 或门输出INTRA信号,25,方式2双向时序,26,8255A的编程,初始化编程
8、:一个方式控制字 采用控制I/O地址:A1A011 工作过程中:通过数据端口对外设数据进行读写 数据读写利用端口A、B和C的I/O地址,A1A0依次等于00、01、10 IBM PC/XT机上,端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H,27,1. 写入方式控制字:控制字格式,28,1. 写入方式控制字:示例,要求: A端口:方式1输入 C端口上半部:输出,C口下半部:输入 B端口:方式0输出 方式控制字:10110001,即B1H 初始化的程序段:mov dx,0fffeh ;假设控制端口为FFFEHmov al,0b1h ;方式控制字out dx,al ;送到控制
9、端口,29,2. 读写数据端口,初始化编程后: 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备 8255A具有锁存输出数据的能力 可以读入输出方式的端口锁存器中的值,进行按位处理后再次输出 注意:不是读取外设数据,而是读取上一次CPU发给外设的数据,30,2. 读写数据端口:示例,利用8255A的输出锁存能力,可实现按位输出控制 对输出端口B的PB7位置位的程序段:mov dx,0fffah ;B端口假设为FFFAHin al,dx ;读出B端口原输出内容or al,80h ;使PB71out dx,
10、al ;输出新的内容,31,3. 端口C的说明,C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出 在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组 当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用,即被征用引脚的功能不由方式字定义,而是由A、B口的工作方式确定 其余引脚仍可设定工作在方式0,32,3. 写端口C,对端口C的数据输出有两种办法 通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效 通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或
11、置位复位内部的中断允许触发器,33,端口C的位控制字,34,3. 读端口C,读取的C端口数据有两种情况 未被A和B端口征用的引脚:将从定义为输入的端口读到外设输入的数据;将从定义为输出的端口读到输出锁存器中的信息 被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字,35,端口C的状态字,36,8255A的应用,作为通用的并行接口电路芯片,8255A具有广泛的应用 驱动LED数码管 打印机接口电路 ,37,LED数码管及其接口,发光二极管LED是最简单的显示设备 由7段LED就可以组成的LED数码管 LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中 LED数码管可以显
12、示内存地址和数据等,38,1. LED数码管的工作原理,主要部分是7段发光管 顺时针分别称为a、b、c、d、e、f、g 有的产品还附带有一个小数点h 通过7个发光段的不同组合 显示09 显示AF(实现16进制数的显示) 显示个别特殊字符,如、P 等,39,LED数码管的结构,共阳极,共阴极,40,2. 单个LED数码管的显示,8086 CPU,41,单个数码管的显示,LEDtb db 3fh,06h,5bh, ;显示代码表mov al, 1 ;AL要显示的数字mov bx, offset LEDtbxlat ;换码:ALDS:BXALmov dx, portout dx, al ;输出显示,4
13、2,3. 多个LED数码管的显示,8个数码管:用2个8位输出端口控制 硬件上用公用的驱动电路来驱动各数码管 软件上用扫描方法实现数码显示 每个显示2ms,43,8个LED数码管的接口电路,段选择码 (字符),位选择码,44,并行打印机接口,一般采用Centronics标准接口或其简化接口 Centronics接口是的一个并行接口协议 该协议规定了36脚簧式插头座和信号含义 其中前11条线是关键信号,它们是8条数据线、3条联络线(选通、响应和打印机忙) 还有一些特殊控制线、状态线 PC系列机的并行打印机接口是一个25针D型插口,45,打印机接口信号,数据 控制 握手 STB*:负脉冲的宽度在接收
14、端应大于0.5s,数据才可靠地存入打印机数据缓冲区 ACK*:打印机接收一个数据字节后就回送一个响应的负脉冲信号(脉宽约为5s),表示打印机已准备好接收新数据 INIT*:初始化 AUTOFEEDXT:自动换行 SLCTIN*:选择打印机 打印机状态 BUSY:打印机忙 SLCT:打印机联机 PE:缺纸 ERR*:当打印机处于无纸、脱机或错误状态之一时,46,打印机工作过程,通信过程 主机把数据送给引脚DATA0DATA7 同时送出数据选通信号STROBE* 打印机在BUSY信号线上发出忙信号 打印机处理好输入的数据时 撤消忙信号 同时又送出一个响应信号ACK* 注意: 此时选通(STROBE
15、*)与应答(ACK*)信号的方向与前述一般接口的信号定义相反,47,打印机信号与时序,48,用8255A方式0与打印机接口,注意:不考虑ACK*,49,8255A的初始化,mov dx,0fffeh ;控制端口地址:FFFEHmov al,10000001B ;方式控制字:91Hout dx,al ; A端口方式0输出,C端口上输出、下输入mov al,00001111B ;端口C的复位置位控制字,使PC71out dx,al,50,打印子程序:查询,printc procpush axpush dx prn: mov dx,0fffch ;读取端口Cin al,dx ;查询打印机状态and
16、al,04h ;PC2BUSY0?jnz prn ;PC21,打印机忙,则循环等待,51,打印子程序:输出,;PC20,打印机不忙,则输出数据到8255mov dx,0fff8hmov al,ah ;ah字符out dx,al ;将打印数据从端口A输出,52,打印子程序:控制打印机打印,mov dx,0fffeh ;从PC7送出控制低脉冲mov al,00001110B ;置STROBE*0out dx,alnop ;产生一定宽度的低电平nopmov al,00001111B ;置=1out dx,al;最终,STROBE*产生高脉冲信号,53,打印子程序:返回,pop dxpop axret
17、 printc endp,54,用8255A方式1与打印机接口,PC4,BUSY,55,8255A方式1与打印机接口时序配合,56,8255A的初始化,mov dx,0fffeh ;控制端口mov al,0a8h ;A口方式1输出 10101000Bout dx,almov al,0ch ;使INTEA(PC6)为0,禁止中断(查询模式)out dx,almov cx,counter ;打印字节数送CXmov bx,offset buffer ;取字符串首地址call prints ;调用打印子程序,57,打印子程序:输出,prints procpush ax ;保护寄存器push dx pr
18、int1: mov al,bx ;取一个数据mov dx,0fff8hout dx,al ;从端口A输出,58,打印子程序:查询,mov dx,0fffch ;C端口地址 print2: in al,dxtest al,80h ;检测(PC7)为1否?;1,说明OBF*已经无效,一次打印完成jz print2;为0,说明打印尚未完成,继续检测 Print3: test al,10h ;检测(PC4)为0否?;0,说明BUSY已经无效,一次打印完成jnz print3 ;为1,说明打印尚未完成,继续检测,59,打印子程序:返回,; 以上两条件满足,说明打印机已接受数据并打印完毕。inc bx ;
19、准备取下一个数据输出loop print1pop dx ;打印结束,恢复寄存器pop axret ;返回 prints endp,60,示例中的两种工作方式的差别,都为查询方式 方式0中的选通信号“手动”生成 方式1中的选通信号自动生成 思考题:用方式2如何接口?,61,双机并行通信接口,甲方:方式1,查询方式 乙方:方式0,A,B,62,甲机的初始化,mov dx,0fffehmov al,0a0hout dx,al;工作方式字:端口A方式1输出mov al,0dh;使PC6(INTEA)1,允许中断out dx,al,63,甲机发送程序,trsmt: mov dx,0fffch in al
20、,dx;查询PC3(INTRA)1?and al,08hjz trsmtmov dx,0fff8h ;发送数据mov al,ah ;ah数据out dx,al,64,乙机的初始化,mov dx,0fffehmov al,98h ;方式字:A方式0输入、C输入out dx,almov al,01h;使PC0(ACK*)1,因尚未收到数据out dx,al,65,乙机:查询接收,receive: mov dx,0fffch in al,dx;查询PC4(OBF*)0?and al,10hjnz receivemov dx,0fff8h ;接收数据in al,dxmov ah,al,66,乙机:接收
21、响应,mov dx,0fffehmov al,00h ;使PC0(ACK*)0out dx,alnop;适当延时,产生一定宽度的低脉冲nopmov al,01h ;使PC0(ACK*)1out dx,al ;产生高脉冲ACK*信号,67,8255A在IBM PC/XT上的应用,工作在基本输入/输出方式0 端口A为方式0输入,用来读取键盘扫描码 端口B工作于方式0输出,例如控制扬声器等 端口C为方式0输入,读取系统状态和配置 系统的初始化编程:mov al,10011001b ;方式控制字99Hout 63h,al,68,8255A的键盘和扬声器控制示意,69,PC扩展槽I/O地址分配,70,并口通信小结,掌握基本I/O接口的工作原理 掌握8255A的结构特点和引脚功能 掌握8255A的各种工作方式、编程及方式0/1的应用 掌握LED数码管的工作原理和显示方法 了解并行打印机接口的引脚定义和接口时序 习题,