920 likes | 1.13k Views
第 8 章 常用接口芯片. 微机通过输入输出接口与外部设备相连接,这些接口一般可分为 并行接口 和 串行接口 两种,在实际应用中,并行通信常采用 Intel 公司的 8255A 作为接口芯片,而串行外设与微机系统相连,常采用串行接口芯片 8251A 。. 第 8 章 常用接口芯片. 在微机系统中,除了 I/O 接口外,往往还需要一些专业功能的接口芯片,以增强系统的综合处理能力。例如,用于定时和对脉冲信号进行计数的可编程定时器 / 计数器芯片 8253 ;在不需要处理器干预的情况下,用于存储器和接口之间直接进行数据传输管理的 DMA 控制器芯片 8237A 。.
E N D
第8章 常用接口芯片 微机通过输入输出接口与外部设备相连接,这些接口一般可分为并行接口和串行接口两种,在实际应用中,并行通信常采用Intel公司的8255A作为接口芯片,而串行外设与微机系统相连,常采用串行接口芯片8251A。
第8章 常用接口芯片 在微机系统中,除了I/O 接口外,往往还需要一些专业功能的接口芯片,以增强系统的综合处理能力。例如,用于定时和对脉冲信号进行计数的可编程定时器/计数器芯片8253;在不需要处理器干预的情况下,用于存储器和接口之间直接进行数据传输管理的DMA控制器芯片8237A。
8.1 可编程定时/计数器8253/8254 微型计算机经常要对外部事件进行定时控制或对外部事件发生的次数进行记数,即定时或计数控制。一般采用两种方法,软件法和可编程定时/计数器法。后者构成一个方便灵活的定时/计数电路。这种电路不仅定时值和定时范围可由程序设置,而且具有多种工作方式,可以输出多种控制信号,具备较强的功能。
8.1 可编程定时/计数器8253/8254 在设定了定时值及计数范围后,定时/计数器就可以脱离CPU独立进行定时或计数,完全不占用CPU的资源。 8254是8253的升级产品,它的引脚和8253完全相同,凡是使用8253的系统,均可由8254来取代。8254的工作频率比8253高,它还可通过读回命令来读取状态寄存器的当前内容以及计数器的值。
8.1.1 8253的内部结构及其外部引脚 8253具有3个功能相同的16位减法计数器T0、T1和T2,可进行二进制或十进制的计数/定时操作。通过编程可以选择多种工作方式和计数初值,可以方便地与PC总线连接。 8253的内部结构如图所示,主要由数据总线缓冲器、读/写逻辑、控制寄存器及三个功能相同的计数器组成。
8.1.1 8253的内部结构及其外部引脚 8253内部结构图
8.1.1 8253的内部结构及其外部引脚 (1)数据总线缓冲器 该缓冲器为三态、双向的8位缓冲器,用于将8253与系统数据总线相连接。CPU执行I/O 指令时通过缓冲器发送或接收数据,写入8253控制字、装入计数初值或读出当前计数值。 (2)读/写逻辑 读/写逻辑电路的功能是接收来自CPU的控制信号,包括读、写信号和地址信号,然后产生控制整个芯片工作的控制信号。
8.1.1 8253的内部结构及其外部引脚 (3)控制寄存器 每个计数器都有1个控制寄存器,只能写入,不能读出,用于接收CPU送来的方式控制字。控制字决定了计数器的工作方式、计数形式和计数初值写入方式等。 (4)计数器0~计数器2 三个计数器内部结构完全相同,每个计数器中都有一个16位减法计数器,可对二进制数或十进制数的BCD码进行计数。每个计数器都有时钟输入CLK、门控输入GATE和输出OUT引脚。
8.1.1 8253的内部结构及其外部引脚 8253引脚图
8.1.1 8253的内部结构及其外部引脚 8253端口选择表
8.1.2 8253的控制字 8253的工作方式可以通过编程序设定,将给定的工作方式控制字写入控制寄存器,就可以选定8253的计数通道,并规定计数通道的工作方式,读写格式和计数数制。8253的控制字如图所示。
8.1.2 8253的控制字 8253的控制字格式
8.1.2 8253的控制字 SC1SC0:计数通道选择位。8253的3个计数器是完全独立的,所以需要有3个控制寄存器存放各自的控制字,但是这3个控制字寄存器的地址是惟一的,即A0A1=11所对应的地址。所以将控制字的最高2位SC1和SC0用于选择使用哪个计数器,指明该控制字将指挥哪个计数器工作。
8.1.2 8253的控制字 RL1RL0:读/写操作位。它规定了数据读写格式。 RL1RL0=00时,是计数值锁存操作。在计数过程中读计数值时,需要先送出锁存命令,再读取计数值。 M2M1M0:工作方式位。它用来指定所选择计数器的工作方式,8253共有6种工作方式,即方式0~方式5,每种工作方式都对应各自的工作流程、计数器的输出和门控信号。 BCD:计数类型位。用以确定计数是采用二进制计数还是十进制计数。
8.1.3 8253工作方式与操作时序 根据计数器启动计数的方式的不同和计数结束后输出波形的不同,8253有6种工作方式可供选择。 1. 方式0(计数结束产生中断) 8253工作于方式0时,CLK端作为计数输入信号,OUT端为输出信号,当减1计数器减到零时,OUT输出高电平。
8.1.3 8253工作方式与操作时序 8253工作方式0时序
8.1.3 8253工作方式与操作时序 当GATE为1时,写入控制字后OUT信号立即变为低电平。将计数初值N写入计数初值寄存器后,从下一个CLK脉冲的下降沿开始进行减1计数,计数期间OUT端一直维持低电平,直到计数器减到零,OUT端变为高电平,并保持到重新写入计数初值或复位。OUT端输出的高电平可以作为中断请求信号使用。
8.1.3 8253工作方式与操作时序 2.方式1(可编程单稳脉冲方式) 方式1可以输出一个宽度可编程控制的负脉冲,并由GATE门控信号的上升沿启动计数器。 写入控制字后,OUT端即输出高电平。将计数初值N写入计数初值寄存器后,计数器并不开始计数,而是要等到门控信号GATE的上升沿到来后的下—个CLK脉冲的下降沿到来时才开始计数。此时输出OUT变为低电平,直至计数器计数减到0,计数过程结束,输出端OUT变为高电平。在这个过程中,OUT端的输出为单稳态负脉冲,其宽度为N个CLK脉冲周期。
8.1.3 8253工作方式与操作时序 8253工作方式1时序
8.1.3 8253工作方式与操作时序 3.方式2(频率发生器) 方式2能在OUT端输出连续的周期性负脉冲信号,又称为频率发生器方式。其OUT端输出负脉冲的宽度等于1个CLK计数时钟周期,输出脉冲的周期等于N(计数初值)个CLK计数时钟周期。在计数过程中,CPU重新写入初值时,现行的计数过程不受影响,直到下一次计数时,计数器才按新的计数值进行计数操作。
8.1.3 8253工作方式与操作时序 8253工作方式2时序
8.1.3 8253工作方式与操作时序 4.方式3(方波发生器) 方式3的操作也是一种连续计数的工作方式,只是OUT端输出的是方波,当计数值N为偶数,则输出对称的方波、前N/2个计数期间OUT输出高电平,后N/2个计数期间输出低电平;当N为奇数,则前(N+1)/2计数期间输出高电平;后(N—1)/2计数期间输出低电平。计数器当前值减到0时计数器从新装入计数初值,开始新一轮计数。
8.1.3 8253工作方式与操作时序 8253工作方式3时序
8.1.3 8253工作方式与操作时序 5.方式4(软件触发方式) 方式4与方式0非常类似,写入计数初值后,在下一个时钟脉冲的下降沿开始计数。然后计数开始,当计数减到0时,由OUT输出一个时钟周期宽度的负脉冲,计数器停止工作。 当门控GATE信号为高电平时,写入8253控制字后,OUT输出立即变高电平,写入计数初值后即开始计数(软件触发),当计数器减到0时输出1个时钟周期的负脉冲。计数器停止计数。
8.1.3 8253工作方式与操作时序 8253工作方式4时序
8.1.3 8253工作方式与操作时序 6.方式5(硬件选通方式) 方式4与方式0非常类似,写入计数初值后,在下一个时钟脉冲的下降沿开始计数。然后计数开始,当计数减到0时,由OUT输出一个时钟周期宽度的负脉冲,计数器停止工作。 当门控GATE信号为高电平时,写入8253控制字后,OUT输出立即变高电平,写入计数初值后即开始计数(软件触发),当计数器减到0时输出1个时钟周期的负脉冲。计数器停止计数。
8.1.3 8253工作方式与操作时序 8253工作方式5时序
8.1.4 初始化编程与读输出锁存器 1.初始化的编程 对8253初始化编程包括写入控制字和写入计数初值两个步骤: (1)先将方式控制字写入计数器的控制寄存器,以确定该计数通道的工作方式。 (2)写入定时或计数的初值。如果计数值为16位,则要用两条输出指令完成初值的设置,即先写低字节,再写高字节,并注意写入正确的计数通道地址。
8.1.4 初始化编程与读输出锁存器 在不需要门控信号GATE 触发的方式中,写入计数初值计数就开始了。 例如,对计数器0 初始化,使其工作于方式1,按二进制计数,计数值为5080H。计数值低8位为80H,高8位为50H,假设端口地址为2A0H~2A3H,则初始化程序为:
8.1.4 初始化编程与读输出锁存器 MOV DX,2A3H;控制端口地址为2A3H MOV AL,32H;控制字为00110010B OUT DX,AL;送控制字到控制字寄存器 MOV DX,2A0H;计数器0端口地址为2A0H MOV AL,80H OUT DX,AL;先写低8位计数值到计数器0 MOV AL,50H OUT DX,AL;再写高8位计数值到计数器0
8.1.4 初始化编程与读输出锁存器 2.读输出锁存器 CPU可用指令读取8253任—通道的计数值,读到的是执行指令瞬间的值。因为8253是16位的,要分两次读至CPU,因此若不锁存的话,在前两次执行输入指令的过程中,计数值可能已经变化了。锁存当前计数值有两种方法: (1)利用GATE信号使计数过程暂停。 (2)利用控制字将待读计数值锁存至锁存器。
8.1.4 初始化编程与读输出锁存器 这种方法通过写入控制字=00,使其不受执行计数单元的变化而变化,保证CPU读出一个稳定的数值。读输出锁存器的值,也有读8位和读16位的问题,若是读16位的数据,分两次读出,先读低字节,再读高字节,即执行两次输入指令。CPU 读取此锁存值后,锁存器自动解除。
8.1.4 初始化编程与读输出锁存器 例如:要读取上面例子中计数器0的16位计数值,采用锁存器锁存方式的程序为: MOV AL,00H;锁存计数通道0的控制字00H MOV DX,2A3H;控制字送控制端口 OUT DX,AL MOV DX,2A0H IN AL,DX;读取计数器0的低8位数据 XCHG AL,AH;暂存AH IN AL,DX;读取计数器0的高8位数据 XCHG AL,AH;AX中为计数器0的16位计数值
8.1.5 8253应用举例 1.8253在PC机上的应用 IBM PC/XT机使用一片Intel 8253,3条计数通道分别用于日时钟计时、DRAM刷新定时和扬声器发声。IBM PC/AT使用与8253兼容的Intel 8254,在AT机的连接使用也与XT机一样。三条计数器通道的时钟输入CLK均连接到频率为1.193l8MHz的时钟信号,周期为0.838μs。
8.1.5 8253应用举例 (1)计数器0的应用 门控信号GATE0接+5V为常启状态。OUT0输出接8259A的IRQ0,用做XT的日时钟的中断请求信号。设定计数器0为方式3,计数值写入0,产生最大的计数初值为65536,因此输出信号频率为18.206Hz,即每秒产生182次中断请求,或者说每隔55ms申请一次日时钟中断。
8.1.5 8253应用举例 初始化程序如下: MOV AL, 36H;设定计数器0为工作方式3, 采用二进制计数,以先低后 高字节顺序写人计数值 OUT 43H, AL;写入方式控制字 MOV AL, 0;计数初值为0 OUT 40H, AL;写入低字节计数值 OUT 40H, AL;写入高字节计数值
8.1.5 8253应用举例 (2)计数器1的应用 门控GATE1接+5V为常启状态。输出OUT1从低变高使触发器置1,Q端输出一高电平信号,作为内存刷新的请求信号,一次刷新结束,响应信号将触发器复位。 DRAM每个单元要求在2ms内必须刷新—次。实际芯片每次刷新操作完成512个单元,所以经过128次刷新就能将全部芯片的64KB刷新一遍。由此可算出每隔2ms÷128=15.6us进行—次刷新操作。
8.1.5 8253应用举例 (3)计数器2的应用 微机系统中,计数通道2的输出加到扬声器上并控制其发声,作为机器的报警或伴音信号。门控GATE2接并行口位,用它控制通道2的计数过程。在XT机中是并行接口电路8255的端口位,受I/O端口地址61H的位控制。输出OUT2经过一个与门,这个与门受位控制。受I/O端口地址61H的位控制,XT机中是8255的位。所以扬声器可由或分别控制发声。
8.2 可编程并行I/O芯片8255S 8255A是Intel80x86系列微处理机的配套并行接口芯片,它可以为CPU与外设之间提供并行输入/输出的通道。8255A有三个8位的并行I/O口,可通过编程设置多种工作方式,通常不需要附加外部电路,在中小系统中有着广泛应用。具备较强的功能。
8.2.1 8255A芯片内部结构及其功能 8255A是一个有40条引脚的双列直插式芯片,主要有3个数据输入/输出端口,即A口、B口和C口,还包括A组控制器和B组控制器、数据缓冲器和读写控制逻辑。
8.2.1 8255A芯片内部结构及其功能 1. 输入/输出端口A、B、C 8255A内部包含3个8位的输入/输出端口,通过外部的24根引脚与外设交换数据,24根引脚分别是PA7~PA0,PB7~PB0和PC7~PC0。端口C可分成两个4位端口,分别与端口A和端口B配合工作,通常是将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或控制信息的传送端口。
8.2.1 8255A芯片内部结构及其功能 2. A组和B组控制器 端口A与端口C的高4位(PC7~PC4)构成A组,由A组控制器实现控制功能,端口B与端口C的低4位(PC3~PC0)构成B组,由B组控制器实现控制功能。它们各有一个控制单元,可接收来自读/写控制部件的命令和CPU通道数据总线(D7~D0)送来的控制字,并根据它们来定义各个端口的操作方式。
8.2.1 8255A芯片内部结构及其功能 3.数据总线缓冲器 三态双向8位数据缓冲器,是8255A与系统总线的接口。它直接与CPU的数据总线相连,实现CPU与8255A接口之间的信息传递,与此关联的引脚是数据线D7~D0。CPU执行输出指令时,可将控制字或数据通过数据总线缓冲器传送给8255A;CPU执行输入指令时,8255A可将状态信息或数据通过总线缓冲器传送给CPU。
8.2.1 8255A芯片内部结构及其功能 4.读写逻辑控制 读/写控制逻辑是8255A内部完成读/写控制功能的部件,它接收来自CPU的控制信号,并根据这些信号向片内各功能部件发出操作命令。
8.2.2 8255A控制字及其工作方式 8255A提供如下三种工作方式: 方式0:基本输人/输出方式。 方式1:选通输人/输出方式。 方式2:双向传送方式。 端口A可工作于上述三种工作方式,端口 B只可工作于两种方式(方式0和方式1),端口C只可工作于方式0。
8.2.2 8255A控制字及其工作方式 1. 8255A的控制字 (1)工作方式控制字 方式控制字用来决定8255A的工作方式。工作方式控制字可将三个端口分别定义为两组,即A口和C口的高4位为一组(A组),B口和C口的低4位为一组(B组)。当端口A工作于方式1、方式2或端口B工作于方式1时,会使用端口C的某些位作控制信号用,这时就需要使用一个专门的置位/复位控制字来对控制端口C的各位分别进行置位和复位操作。
8.2.2 8255A控制字及其工作方式 8 2 5 5 控制字格式
8.2.2 8255A控制字及其工作方式 (2)置位/复位控制字 置位/复位控制字可对端口C的任意一位进行置位或复位的操作复位操作。