第8章可编程接口芯片8253及应用定时与计数在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。定时与计数的实现方法(1)硬件法。设计一套电路用以实现定时与计数,特点是需要花费一定的硬件设备,而且当电路制成之后,定时值及计数范围不能改变。(2)软件法。利用一段延时子程序来实现定时操作,特点是无需太多的硬件设备,控制比较方便,但在定时期间,CPU不能从事其他工作,降低了机器的利用率。(3)软、硬件结合法。即设计一种专门的具有可编程特性的芯片来控制定时和计数的操作,而这些芯片具有中断控制能力,定时、计数到时能产生中断请求信号,因而定时期间不影响CPU的正常工作。7.1定时/计数器芯片Intel8253的工作原理Intel8253是8086/8088微机系统常用的定时/计数器芯片,它具有定时与计数两大功能,同类型的定时/计数器芯片还有Intel8254等,8253是24脚双列直插芯片,用+5V电源供电。1、8253的一般性能概述(1)每个8253芯片有3个独立的16位计数器通道。(2)每个计数器通道都可以按照二进制或二-十进制计数。(3)每个计数器的计数速率可以高达2MHz。(4)每个通道有6种工作方式,可以由程序设定和改变。(5)所有的输入、输出电平都与TTL兼容。2、8253的内部结构框图及引脚8253的内部结构如下图所示,主要由数据总线缓冲器、读/写逻辑、控制字寄存器及三个独立的、功能相同的计数器组成。(1)数据总线缓冲器:三态、双向的8位缓冲器,用于将8253与系统数据总线连接。CPU执行I/O指令时,缓冲器发送或接收数据,用以写入8253控制字、装入计数初值或读出当前计数值。(2)读/写逻辑:读/写逻辑电路接受来自系统总线的信号,然后产生控制整个芯片工作的控制信号。(3)控制字寄存器:当A1、A0全为1时,接收并存储来自数据总线缓冲器的控制字。每个计数器对应1个控制寄存器,只能写入,不能读出。(4)计数器0~2:三个计数器内部结构相同,每个计数器有一个16位减法计数器,可对二进制数或BCD码进行计数。某些方式下,一次计数结束可以自动取初值进行下一次计数。每个计数器都有时钟输入CLK、门控输入GATE和输出OUT引脚。计数过程、输出信号与控制字中设定的内容有关。每个计数器的工作方式和工作过程完全独立。2.8253的外部引脚8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图7-2所示。3.8253的控制字8253有一个8位的控制字寄存器,其格式如图7-3所示。4.8253的工作方式8253共有6种工作方式,各方式下的工作状态是不同的,输出的波形也不同,其中比较灵活的是门控信号的作用。由此组成了8253丰富的工作方式、波形。(1)几条基本原则。1)控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态。初始状态对不同的模式来说不一定相同。2)计数初始值写入之后,要经过一个时钟周期上升沿和一个下降沿,计数执行部才可以开始进行计数操作,因为第一个下降沿将计数寄存器的内容送减1计数器。3)通常,在每个时钟脉冲CLK的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的触发方式是有具体规定的,即或者是电平触发,或者是边沿触发,在有的模式中,两种触发方式都是允许的。其中0、2、3、4是电平触发方式,1、2、3、5是上升沿触发。4)在时钟脉冲的下降沿,计数器作减1计数,0是计数器所能容纳的最大初始值。二进制相当于216,用BCD码计数时,相当于104。特点:写入控制字寄存器后,输出OUT就变低,GATE为高计数,为低停止计数;不自动重新计数,需要重新将计数值写入计数器后开始计数;计数到0时,可利用OUT产生中断信号。(2)方式0:计数结束产生中断。方式0的波形如图7-4所示,当控制字写入控制字寄存器后,输出OUT就变低,当计数值写入计数器后开始计数,在整个计数过程中,OUT保持为低,当计数到0后,OUT变高。(3)方式1:可编程的硬件触发单拍脉冲。特点:写入控制字寄存器后,输出OUT就变高;GATE的上升沿触发计数,同时OUT变低,直到计数到0;遇到GATE的上升沿时,自动重新计数。(4)方式2:速率发生器。特点:写入控制字寄存器后,输出OUT就变高;GATE为高计数;计数到1时,OUT变低,计数到0时,OUT变高,并自动重新计数。GATE为低时,禁止计数,直到GATE变高,重新自动写入计数值计数。一般作为分频器使用。(5)方式3:方波速率发生器。特点:与方式2类似,只是进行减2操作,直到0时,OUT变低,并自动重新写入计数值减2操作,直到0时,OUT变高。一般作为方波发生器使用。(6)方式4:软件触发的选通信号发生器。特点:写入控制字寄存器后,输出OUT就变高;GATE为高计数,为低停止计数;不自动重新计数,需要重新将计数值写入计数器后开始计数;计数到0时,OUT变为低,经过一个CLK周期后变为高。不自动重新计数,只有重新软件写入计数值,同时GATE为高时开始计数。(7)方式5:硬件触发的选通信号发生器。特点:写入控制字寄存器后,输出OUT就变高;GATE的上升沿触发计数;计数到0时,OUT为低,经过一个CLK周期后变为高。只有遇到GATE的上升沿时,自动重新计数。(8)8253的工作方式小结。1)方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲,但方式2连续工作,方式4由软件触发启动,方式5由硬件触发启动。2)方式5与方式1的工作过程相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的是宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。3)输出端OUT的初始状态。方式0在写入方式字后输出为低;其余方式,写入控制字后输出均变为高。4)任一种方式,均是在写入计数初值之后才能开始计数,方式0、2、3、4都是在写入计数初值之后开始计数的,而方式1和方式5需要外部触发启动才开始计数。5)6种工作方式中,只有方式2和方式3是连续计数,其他方式都是一次计数,要继续工作需要重新启动,方式0、4由软件启动,方式1、5由硬件启动。6)门控信号的作用。通过门控信号GATE,可以干预8253某一通道的计数过程,在不同的工作方式下,门控信号起作用的方式也不同,其中0、2、3、4是电平起作用,1、、5是上升沿起作用。7)计数到0后计数器的状态。方式0、1、4、5进行倒计数,变为FF、FE……,而方式2、3则自动装入计数初值继续计数。7.28253的应用7.2可编程并行接口芯片8255A7.2.1并行通信与接口Intel8255A是一个通用的可编程并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉、使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。7.2.28255A的编程结构8255A的编程结构如图7-10所示,由以下几部分组成:(1)三个数据端口A、B、C。这三个端口均可看作是I/O口,但它们的结构和功能稍有不同。(2)A组和B组的控制电路。(3)数据总线缓冲器。(4)读/写控制逻辑。7.2.38255A的引脚功能引脚信号可以分为两组:一组是面向CPU的信号,一组是面向外设的信号。1.面向CPU的引脚信号及功能2.面向外设的引脚信号及功能PA0~PA7:A组数据信号,用来连接外设。PB0~PB7:B组数据信号,用来连接外设。PC0~PC7:C组数据信号,用来连接外设或者作为控制信号。7.2.48255A的工作方式8255A有三种工作方式,用户可以通过编程来设置:方式0:简单输入/输出,查询方式,A、B、C三个端口均可。方式1:选通输入/输出,中断方式,A和B两个端口均可。方式2:双向输入/输出,中断方式,只有A端口才有。工作方式的选择可通过向控制端口写入控制字来实现。在不同的工作方式下,8255A三个输入/输出端口的排列示意图如图7-11所示。(1)方式0。一种简单的输入/输出方式,没有规定固定的应答联络信号,可用A、B、C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。方式0的应用场合有两种:一种是同步传送,一种是查询传送。(2)方式1。方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出,而C口要有6位,分成两个3位,分别作为A口和B口的应答联络线,其余两位仍可工作在方式0,可通过编程设置为输入或输出。(3)方式2。方式2为双向选通I/O方式,只有A口才有此方式。这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。方式2就是方式1的输入与输出方式的组合,各应答信号的功能也相同。而C口余下的PC0~PC2正好可以充当B口方式1的应答联络线,若B口不用或工作于方式0,则这三条线也可工作于方式07.3可编程串行接口芯片8251A7.3.18251A的基本性能8251A是可编程的串行通信接口芯片,基本性能如下:(1)两种工作方式。同步方式和异步方式。同步方式下,波特率为0~64K;异步方式下,波特率为0~19.2K。(2)同步方式下的格式。每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。(3)异步方式下的格式。每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验,1个启动位,并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。(4)全双工的工作方式。其内部提供具有双缓冲器的发送器和接收器。(5)提供出错检测。具有奇偶、溢出和帧错误三种校验电路。7.3.28251A的内部结构8251A的内部结构如图7-12所示。1.发送器发送器由发送缓冲器和发送控制电路两部分组成。2.接收器接收器由接收缓冲器和接收控制电路两部分组成。3.数据总线缓冲器数据总线缓冲器是CPU与8251A之间的数据接口,包含3个8位的缓冲寄存器4.读/写控制电路读/写控制电路用来配合数据总线缓冲器的工作7.3.38251A的引脚功能8251A的引脚如图7-13所示。1.8251A和CPU之间的连接信号8251A和CPU之间的连接信号可以分为以下4类:(1)片选信号。(2)数据信号。(3)读/写控制信号。(4)收发联络信号。2.8251A与外部设备之间的连接信号8251A与外部设备之间的连接信号分为以下两类:(1)收发联络信号。(2)数据信号。3.时钟、电源和地8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。7.3.48251A的编程编程的内容包括两大方面:一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;二是由8251A向CPU送出的状态字。1.方式选择控制字(模式字)方式选择控制字的格式如图7-14所示。2.操作命令控制字(控制字)操作命令控制字的格式如图7-15所示。3.状态字状态字的格式如图7-16所示。DSRSYNDET/BRKDETFEOEEPETxERxRDYTxRDYD7D6D5D4D3D2D1D0数据装置准备好奇偶错标志溢出错标志帧校验错标志发送器准备好接收器准备好发送器空SYNDETBRKDET1已达到同步0未达到同步1接收到断缺字符0正常工作例如,若要查询8251A接收器是否准备好,则可用下列程序段完成:MOVDX,0FFF2H;状态口L:INAL,DX;读状态口ANDAL,02H;查Dl=1?即准备好了吗?JZL;未准备好,则等待MOVDX,OFFF0H;数据口INAl,DX