第7章常用接口芯片7.3可编程串行接口82517.4模拟I/O接口7.2可编程定时/计数器8253/82547.1可编程并行接口82557.1可编程并行接口82557.1.1并行通信的概念1.并行通信与串行通信随着多微机系统的应用和微机网络的发展,计算机与外部设备之间、计算机和计算机之间常常要进行数据交换,这些数据交换可称为数据通信。数据通信方式有两种:并行通信与串行通信。并行通信是指数据的各位同时进行传送的通信方式,可以字或字节为单位并行进行。并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机内部各种总线就是以并行方式传送数据的。串行通信是指数据逐位顺序传送的通信方式。串行传送的速度低,但只需要很少几根通信线,适用于长距离而速度要求不高的场合。在网络中传送数据绝大多数采用串行方式。2.并行接口无论是并行通信还是串行通信,就其I/O接口与CPU之间的通信而言,均是以并行通信方式传送数据的。并行通信由并行接口完成,它以字节(或字)为单位与I/O设备或被控对象进行数据交换,以同步方式传输。如打印机接口,A/D、D/A转换器接口,IEEE488接口,开关量接口,控制设备接口等。从并行接口的电路结构来看,并行口有硬连线接口和可编程接口之分。一个并行接口中包括状态信息、控制信息和数据信息,这些信息并行接口中分别存放在状态寄存器、控制寄存器和数据缓冲寄存器中。⑴状态寄存器状态寄存器用来存放外设的信息,CPU通过访问这个寄存器来了解某个外设的状态,进而控制外设的工作,以便与外设进行数据交换。一个状态寄存器,主要是用来提供外设的各种状态位,以供CPU来查询。⑵控制寄存器并行接口中有一个控制寄存器,CPU对外设的操作命令都寄存在控制寄存器中。⑶数据缓冲寄存器在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器是用来暂存数据。因为外设与CPU交换数据,CPU的速度远远高于外设的速度。控制寄存器状态寄存器输入缓冲寄存器输出缓冲寄存器输入设备输出设备输入数据输出数据输入数据准备好输出应答输入应答输出数据准备好地址译码器CSA0A1CPU总线系统数据总线输出数据准备好输入数据准备好中断请求复位IOWAEN地址总线IOR复位一个典型的并行接口与CPU、外设的连接图3.数据输入过程数据输入过程,指的是外设向CPU输入数据。①当外设将数据通过数据输入线送给接口时,先使状态线“输入数据准备好”为高电平。然后通过接口把数据接收到输入缓冲寄存器中,同时把“输入回答”信号置成高电平“1”,并发给外设。②外设接到回答信号后,将撤消“输入数据准备好”的信号。当接口收到数据后,会在状态寄存器中设置“准备好输入”状态位,以便CPU对其进行查询。③接口向CPU发出一个中断请求信号,这样CPU可以用软件查询方式,也可以用中断的方式将接口中的数据输入到CPU中。④CPU在接收到数据后,将“准备好输入”的状态位自动清除,并使数据总线处于高阻状态。准备外设向CPU输入下一个数据。4.数据输出过程数据输出过程,指的是CPU向外设输出数据。①当外设从接口接收到一个数据后,接口的输出缓冲寄存器“空”,使状态寄存的“输出数据准备好”状态位置成高电平“1”,这表示CPU可以向外设接口输出数据,这个状态位可供CPU查询。②此时接口也可向CPU发出一个中断请求信号,同上面的输入过程相同,CPU可以用软件查询方式,也可以用中断的方式将CPU中的数据通过接口输出到外设中。当输出数据送到接口的输出缓冲寄存器后,再输出到外设。③与此同时,接口向外设发送一个启动信号,启动外设接收数据。外设接收到数据后,向接口回送一个“输出回答”信号。④接口电路收到该信号后,自动将接口状态寄存器中的“准备好输出”状态位重新置为高电平“1”,通知CPU可以向外设输出下一个数据。7.1.28255外部引脚及内部结构数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET1.8255内部结构⑴面向CPU的接口电路①数据总线缓冲器数据总线缓冲器是一个三态双向的8位缓冲器,是8255与系统数据总线的接口。与此关联的接口信号线是数据线D7~D0,它直接与CPU数据总线相连,以实现CPU与8255接口之间的信息传递。CPU向8255写入控制字、或从8255中读状态信息以及所有数据的输入和输出,都需要通过数据缓冲器进行传递。②读/写控制逻辑读/写控制逻辑是8255内部完成读/写控制功能的部件,它接收来自CPU的地址和控制信号,并依据这些信号,通过内部控制逻辑向8255的各功能部件发出读/写控制命令,用于管理数据、控制字或状态字的传送。与此部分有关的有6根信号线:片选信号、读信号、写信号、端口选择信号A1、A0以及RESET复位信号。⑵面向外设的接口电路端口A:PA0~PA7A组,支持工作方式0、1、2端口B:PB0~PB7B组,支持工作方式0、1端口C:PC0~PC7仅支持工作方式0A组控制高4位PC4~PC7B组控制低4位PC0~PC3端口A:PA0~PA7常作数据端口,功能最强大端口B:PB0~PB7常作数据端口端口C:PC0~PC7可作数据、状态和控制端口分两个4位,每位可独立操作控制最灵活,最难掌握⑶内部控制逻辑包括A组控制部件、B组控制部件两部分。A组控制部件控制端口A和端口C的高4位(PC7~PC4)B组控制部件控制端口B和端口C的低4位(PC3~PC0)控制逻辑内部设置了一个控制寄存器,接收来自CPU的控制字,根据控制字的内容决定各数据端口的工作方式。也可以根据控制字对端口C的每一位进行置位和复位。控制寄存器的内容只能写入而不能读出。与处理器接口CSA1A0I/O地址读操作RD写操作WR00000101001160H61H62H63H读端口A读端口B读端口C非法写端口A写端口B写端口C写控制字2.8255的引脚功能8255芯片有40根引脚,各引脚信号如图所示.A0、A1—端口选择信号:8255A共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。参见下表。8255A的基本操作7.1.38255的工作方式方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路1.工作方式0方式0输入时序datadata输入端口D0~D7RDCS,A1,A0请体会这里8255A的数据缓冲作用方式0输出时序WRdatadata输出端口D0~D7CS,A1,A08255A对CPU通过它输出给外设的数据进行锁存2.工作方式11)方式1的主要功能分成A、B两组选通端口,可工作于查询式或中断式输入输出数据传送。当两组端口中只有一组工作于方式1时,另一组端口的8位和C口的剩余5位可在方式0下作输入或输出;若两组同时工作于方式1下,则C口剩余两位既可作输入或输出,又可用位操作方式对它们进行复位或置位。2)方式1的工作过程方式1输出引脚:A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器征用C口3引脚和1个控制位方式1输出引脚:B端口PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器征用C口3引脚和1个控制位PC2PC1PC0PB7~PB0INTEB方式1输出联络信号OBF——输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK——响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR——中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据端口A的INTEA对应PC6端口B的INTEB对应PC28255外设CPU内总线外总线OBF和ACK是外设和8255A间的一对应答联络信号,为的是可靠地输出数据方式1输入引脚:A端口数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器方式1输入引脚:B端口PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据中断允许触发器方式1需借用端口C用做联络信号同时还具有中断请求和屏蔽功能方式1输入联络信号STB——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF——输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR——中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据STB和IBF是外设和8255A间的一对应答联络信号,为的是可靠地输入数据方式1中断控制8255A的中断由中断允许触发器INTE控制置位允许中断,复位禁止中断对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器选通输入方式下端口A的INTEA对应PC4端口B的INTEB对应PC2方式2双向方式方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同方式2的数据输入过程与方式1的输入方式一样方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF*有效时向外设输出数据,而是在外设提供响应信号ACK*时才送出数据方式2双向选通引脚PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2数据输入中断和输出中断通过或门输出INTRA信号征用C口5引脚和2个控制位中断允许触发器(控制中断输出)通过位控PC6设置INTE1中断允许触发器(控制中断输出)通过位控PC4设置INTE2输入联络输出联络方式2双向时序data-outINTRdata-outdata-indata-inPA0~PA7D0~D7IBFWROBFACKSTBRD7.1.4方式控制字及状态字1.8255的控制字⑴方式控制字方式控制字用来决定8255的工作方式。它将三个通道分为两组,即A口和C口的高4位作为一组(A组),端口B和C组的低4位作为一组(B组)。方式控制字的格式如下⑵端口C置位/复位控制字置位/复位控制可对C口中的任意一位进行置位或者复位操作。该控制字各位定义如下:2.8255的状态字8255的状态字为查询式输入/输出数据提供了外设的工作状态,如IBF、OBF、INTR等。根据8255工作在不同的工作方式下,以及各端口作输入、输出的不同情况,状态字的格式有所不同。值得注意的是,C口的状态字与C口各位对外的引脚状态不完全一致。方式1输入×××INTRAINTE2IBFAINTE1OBFAINTRBOBFBINTEBINTRAI/OI/OINTEAOBFA方式2双向方式1输出INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7端口C的状态字A组B组7.1.58255与CPU的连接8255占