微型计算机原理及接口技术 教学课件 ppt 作者 林志贵 第10章 可编程并行接口芯片8255A
第 10 章 可编程并行接口芯片8255A,本章主要内容,§10.1 8255A内部结构及引脚 §10.2 8255A的控制字 §10.3 8255A的工作方式 §10.4 8255A的状态字 §10.5 8255A的应用,§10.1 8255A内部结构和引脚,§10.1 8255A内部结构和引脚,§10.1 8255A内部结构和引脚,并行输入/输出端口A、B、C: PA口、PB口、PC口均为8位、双向I/O数据口,都可直接与外设连接,但在结构上稍有差异, PA口、PB口、PC口受读写控制部件及A组或B组控制部件控制,§10.1 8255A内部结构和引脚,A组和B组控制部件:,§10.1 8255A内部结构和引脚,数据总线缓冲器:是一个三态双向8位数据缓冲存储器,是8255A与CPU之间的数据接口。有了数据总线缓冲器,8255A可直接“挂”到系统的数据总线(DB)上 功能: CPU控制字/数据 数据总线缓冲器 8255A(OUT指令) (IN指令) 8255A 状态信息/数据数据总线缓冲器 CPU,读/写控制部件:接收控制信号,并产生8255A内部控制时序,向片内功能部件发出操作命令,§10.1 8255A内部结构和引脚,RESET 复位信号,高电平有效,CPU输入。当RESET有效时,清除8255A中所有控制字寄存器内容,并将各端口置成输入方式,A1 、A0 端口选择信号线(端口地址输入线),8255A共有4个端口地址 A1 A0 =00 端口A A1 A0 =10 端口C A1 A0 =01 端口B A1 A0 =11 控制字寄存器,注意:PA,PB,PC 三个端口各占用一个端口地址,加上控制字寄存器地址,这些地址连续,其中一个端口地址确定,则其它端口地址也就随之确定 如:82H 1000 0010 PC口, PA口: 80H,PB口:81H, 控制字寄存器: 83H,§10.1 8255A内部结构和引脚,通过定义工作方式控制字可将3个端口分别定义为不同的工作方式。当将端口A定义为方式1或2或将端口B定义为方式1时,端口C的某些位为端口A和端口B提供联络信号。,§10.2.1 工作方式选择控制字,§10.2 8255A的控制字,PC口可以对PC口的某一根I/O线实施单独输出控制,即位控制方式。,§10.2.2 置位/复位控制字,§10.2 8255A的控制字,方式0:基本输入/输出方式(无条件传送方式),PA、PB、PC口均可选择此方式。,§10.3.1 方式0基本输入/出方式,§10.3 8255A的工作方式,注意: CPU通过对状态( PC口)查询,可以实现I/O数据的异步传送,方式1:选通输入/输出方式(条件传送方式或中断方式),PA、PB口可选择此方式 注:此方式一般用于连接需要联络信号的外设,其中PC口为PA、PB口提供控制和联络信号,§10.3.2 方式1选通输入/出方式,§10.3 8255A的工作方式,§10.3.2 方式 1选通输入/出方式,1. 工作于输入,§10.3.2 方式 1选通输入/出方式,§10.3.2 方式 1选通输入/出方式,选通输入方式 (以PA口为例),工作过程:,§10.3.2 方式 1选通输入/出方式,注意:PA口做方式1输入时,中断允许触发器INTEA 的状态是由PC4 位操作指令设置,如:MOV AL, 09H OUT 43H, AL,§10.3.2 方式 1选通输入/出方式,2. 工作于输出,§10.3.2 方式 1选通输入/出方式,选通输出方式 (以PB口为例),工作过程:,注意: PB口做方式1输出时,中断允许触发器INTEB 的状态是由PC2 位操作指令设置 实际应用中,在进入中断服务程序之前应先向外设送出一个无意义数据,目的是使系统进入中断时,真正的输出数据在中断服务程序中,§10.3.2 方式 1选通输入/出方式,§10.3.2 方式 1选通输入/出方式,§10.3.3 方式2双向选通输入/出方式,§10.3 8255A的工作方式,选通的双向传送方式,只有PA口可用于此方式,既可做输入,又可做输出,由PC口提供控制和联络信号,§10.3.3 方式 2双向选通输入/出方式,若8255A中端口A设定为方式1或方式2,以及端口B设定为方式1时,读取端口C口可分别得到相应端口的状态,以便了解8255A的工作状态,供CPU查询。,§10.4 8255A的状态字,方式1状态字,§10.4 8255A的状态字,方式2状态字,例10-1 某系统要求8255A的PA口工作于方式1输入;PB口工作于方式0输出;PC口的高4位做联络信号线后剩余的I/O线做输入,低4位做输出。设8255A端口地址范围为60 H63H,请编写初始化程序。,§10.5 8255A的应用,解:根据题意可设置8255控制字为: 10111000BB8H 相应的初始化程序为: MOV AL, 0B8H OUT 63H, AL,例10-2 若例10-1中PA口工作于方式1作为输入,并且要求使用中断方式传送,则须写PC.4的按位置位控制字为:00001001B09H,§10.5 8255A的应用,相应的初始化程序为: MOV AL, 09H OUT 63H, AL,此时,PC.4引脚作为PA口与外设的固定应答联络线 ,是外设送给8255的选通信号。显然,对PC.4的按位置位不会影响PC.4引脚的状态,只起到置位INTEA(打开中断的作用)。,例10-3 设8255A的控制寄存器端口地址为63H,试写出令PC.3先置“1”,后置“0”的程序。,§10.5 8255A的应用,程序: MOV AL,07H ;控制字,PC.3=1 OUT 63H,AL ;控制字控制寄存器 MOV AL,06H ;控制字,PC.3 =0 OUT 63H, AL,例10-4 假设8255A的PA口工作于方式0,与打印机相连,将内存缓冲区BUFF中的字符打印输出。硬件连接如图。设8255A的工作频率与CPU的工作频率相当。打印机接口要求在 有效时,才能接收数据;在BUSY有效时,则表示打印机忙,不能接收数据。,分析:题中8255A工作于方式0,而不直接利用带联络信号的方式1,原因是打印机需要一个负脉冲作为数据选通信号,PC7( )端不能满足打印机的要求。另外选用PC0来发送选通脉冲。根据图10-14电路连接,设未用地址线用0表示则可分析8255A的端口地址为00H,02H,04H,06H。本例中,PC口以置位/复位产生打印机的控制信号,控制打印机启/停。,§10.5 8255A的应用,程序: .MODEL SMALL .STACK 100 .DATA BUFF DB HELLO ,WORLD,13,10,$ PORTA EQU 00H PORTB EQU 02H PORTC EQU 04H PORTCN EQU 06H .CODE START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA,§10.5 8255A的应用,MOV DS,AX MOV SI, OFFSET BUFF MOV AL, 88H ;8255初始化 OUT PORTCN, AL ;PC口高4位输入,低4位输出 MOV AL, 01H ;PC.0置1,初始状态=1 OUT PORTCN, AL WAIT: IN AL, PORTC ;查询打印机状态, TEST AL, 40H ;判BUSY=1? JNZ WAIT ;若“忙”则等待 MOV AL, SI ;从缓冲区取数 CMP AL, $ ;判是结束符$否? JZ PRINT_OVER ;若是结束符$,退出 OUT PORTA, AL ;输出字符 MOV AL, 00H ;产生选通信号( =0),启动打印机 OUT PORTCN, AL,§10.5 8255A的应用,MOV AL, 01H ;使 =1, 引脚负方波结束 OUT PORTCN, AL INC SI ;修改缓冲区指针 JMP WAIT PRINT_OVER: MOV AH, 4CH ;返回DOS INT 21H START ENDP END,§10.5 8255A的应用,例10-5 8086 CPU和8255A为主体构成的闭环调节系统的结构流程图如图所示。8255A的端口A工作于方式0,用来向数模转换器输出8位数字信息。端口B工作于方式1,用来接收由模数转换器输入的8位数字信息。端口C用于控制,PC7用作模数转换器ADC0809的启动信号,PC2用作输入的信号,PC0用作中断请求信号INTRB,通过中断控制器8259A可向CPU发中断请求,请写出系统的初始化程序。,§10.5 8255A的应用,分析: 8255A端口A工作于方式0输出的8位数字信息,经数模转换器DAC0832转换成模拟量。它输出的模拟量是电流值,因此,DAC0832常与运算放大器一起使用,以便将模拟电流放大并转换为模拟电压。当CPU输出的数字量从00HFFH时,运算放大器输出04.98V的模拟电压,该电压经传感器可调节控制现场的温度、速度、声音或流量等参数。,§10.5 8255A的应用,控制现场的模拟信息经传感器和运算放大器可变换为一定范围内的电压值,这模拟电压经模数转换器ADC0809可变换为8位数字信息送回8255A的端口B,其转换速度取决于从CLK端引入的标准时钟,端口B可采用中断方式与CPU联系,中断请求信号经8259A中断排队后送CPU的INTR端。,端口A定义为方式0输出端口,不需要任何控制信号。端口B定义为方式1输入端口,需要PC2作输入信号(),用来接收ADC0809的转换结束命令EOC,由它将8位数字信息锁存到端口B的数据输入锁存器中。需要PC0用作输出信号,向CPU发出中断请求。,§10.5 8255A的应用,从现场收集到的模拟量通过端口B以中断方式向8086 CPU报告,设定中断类型码为40H,CPU响应该中断请求后可在中断服务程序中利用IN指令接收由端口B输入的数字信息,并完成必要的计算和处理后可向端口A输出新的数字信息,以实现对现场模拟信息的调整过程。,程序: .MODEL SMALL .STACK 100 .DATA Add8255PA DB FFF8H Add8255PB DB FFFAH Add8255PC DB FFFCH Add8255CR DB FFFEH Add8259EA DB FFF5H Add8259OA DB FFF7H .CODE MAINPRG PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX,§10.5 8255A的应用,MOV DX, Add8255CR MOV AL, 86H OUT DX, AL MOV AL, 05H OUT DX, AL MOV DX, Add8259EA MOV AL, 13H OUT DX, AL MOV DX, Add8259OA MOV AL, 40H OUT DX, AL MOV AL, 03H OUT DX, AL MOV AL, 0FEH OUT DX, AL,§10.5 8255A的应用,POUT: MOV DX, Add8255PA MOV AL, ××H OUT DX, AL MOV DX, Add8255PC MOV AL, 80H OUT DX, AL MOV AL, 0 OUT DX, AL WAIT: STI