1 微机原理及应用 主讲:谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 2 (1)方式2的基本功能 这是一种双向工作方式,使外设在单一的 8位数据总线上,既能发送数据,也能接收数 据,实现与CPU的双向通信。 只有端口A具有双向工作方式,并占用C端 口的5位作控制联络线。 (2)方式2工作时的控制信号,如下图示: 10.5 方式 方式 2 3 PC 3 PC 7 PC 6 PC 4 PC 5 PC 2~0 PA 7 ~PA 0 INTE 1 INTE 2 >1 & & 8 STB A ACK A OBF A (新书有错 ) INTR A IBF A WR RD I/O 图10-10 方式2工作时的控制信号 4 各个信号的意义如下: 各个信号的意义如下: a.INTR 中断请求,高电平有效,在输入或 输出时,都可以用来作为向CPU发中断请求信 号。 b.OBF 输出缓冲器满信号,低电平有效, 当其有效,表示CPU将一个数据写入到8255A 的A端口。 c.ACK 这是外设对OBF的响应信号,ACK的 上升沿是数据已输出的回答信号。 5 d.INTE1 中断允许信号,当PC 6 设置为1,则 INTE1=1,表示允许8255A由INTR向CPU发中断 请求信号,以通知CPU现可往8255A的端口A输 出一个数据。若INTE1=0,则屏蔽了中断请求。 e.STB 外设给8255A的选通信号,低电平 有效,此信号将外设送到8255A的数据打入输 入锁存器。 6 f.IBF 输入锁存器满信号,这是8255A 送给CPU的状态信号,高电平有效,表示当 前已有一个新数据送到输入锁存器,等待 CPU取走。 g.INTE2 中断允许信号,当PC 4 设置为1, 则INTE2=1,表示端口A的输入处于中断允 许状态。 (2)方式2的时序 请参阅P297的图7-27,它相当于方式1 的输入时序和输出时序的组合,不再详述。 7 (3)方式2的控制字 当端口A工作在方式2时,端口B可工作 在方式0,亦可工作在方式1,既可作输入 口也可作输出口。而端口C剩下3位视B口 而定,若B口工作在方式0,C口剩下3位可 工作在方式0,若B口工作在方式1,则C口 剩下3位作B口的联络线。 8 例1: 设A端口工作于方式2,B端口工作 于方式0输出,PC 2 ~PC 0 工作在方式0输入。 则控制字为: D7 D 0 1 1 ╳ ╳ ╳ 0 0 1 =C1H 设为0 9 例2: 设A端口工作在方式2,B端口工作 于方式1输入。 允许方式2中断: 允许输出中断(置位PC 6 )00001101B→0DH 允许输入中断(置位PC 4 )00001001B→09H 1 1 ╳ ╳ ╳ 1 1 ╳ =C6H B B 方式 1 入 10 10.6 8255A应用举例 应用举例 8255A作为打印机接口,工作于方式1,采用中 断方式向打印机输出数据,如下图示: 一个宽行打印机需要一个数据选通信号,现由 CPU控制PC 0 来产生选通脉冲,打印机的ACKNLG连 到PC 6 端作ACK,OBF在这里没有用,将它悬空。设 把PC 3 连到PC总线的IRQ 7 上,对应于中断类型号 0FH,其中断向量存在0:003CH开始的4个单元中。 11 打印机 8255A D 7 ~D 0 WR CPU A口 PC 3 PC 7 PC 6 PC 0 驱动器 PA 7 ~PA 0 INTR至系统 总线的 IRQ 7 ACKNLG DATA STROBE RD A 1 ACK A 0 OBF CS 设为 F4~F7H 图10-11 8255A应用举例 12 设8255A的端口地址为: A端口 00F4H B端口 00F5H C端口 00F6H 控制口 00F7H 方式控制字为: PC 4 PC 5 10101/O╳ ╳ 0→A0H 13 程序的构成:中断服务子程序完成字符输出,主程序完 成初始化、设置方式控制字及中断的准备工作等。此后 CPU就可执行其它操作,如有中断请求,则去完成字符的 输出。程序段如下(设中断服务程序的入口地址51000H) 主程序段: SUB AX,AX MOV DS,AX MOV AX,1000H MOV WORD PTR[003CH],AX ;设置偏址 MOV AX,5000H MOV WORD PTR[003EH],AX ;设置段址 MOV AL,0A0H ;置方式控制字 OUT 0F7H,AL 14 IN AL,21H ;读中断屏蔽字 AND AL,7FH ;置相应位为0 OUT 21H,AL MOV AL,0DH ;置位PC 6 OUT 0F7H,AL ;允许输出中断(A口) MOV AL,20H ;送一空格至A口 OUT 0F4H,AL MOV AL,00 ;发选通脉冲 OUT 0F7H,AL MOV AL,01 OUT 0F7H,AL ;打印机收到数后打印,发ACK信号, STI 其上升沿使INTR有效,发中断请求 ┇ 进入中断服务程序 15 ②方式1的输出时序如下图示 : (参见P295图7-25) ? ? ? t WOB t AOB t AK t AIT WR OBF ACK 数据有效 INTR t WIT t WB 送往外设的数据 图10-9 方式1的输出时序 16 中断服务程序(装在5000:1000H处) PRINT: PUSH AX MOV AL,[DI] ;DI为打印字符缓冲器指针 OUT 0F4H,AL MOV AL,00 ;使PC 0 为0 OUT 0F7H,AL MOV AL,01 ;使PC 0 为1, OUT 0F7H,AL 发选通脉冲 INC DI MOV AL,20H ;清除中断请求 OUT 20H,AL POP AX IRET ;中断返回