第八章 常用可编程接口芯片及其应用(wq).ppt_第1页
第八章 常用可编程接口芯片及其应用(wq).ppt_第2页
第八章 常用可编程接口芯片及其应用(wq).ppt_第3页
第八章 常用可编程接口芯片及其应用(wq).ppt_第4页
第八章 常用可编程接口芯片及其应用(wq).ppt_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章常用可编程接口芯片及其应用,8.1可编程接口芯片概述8.28255A可编程并行接口芯片8.38253可编程定时器/,8.1可编程接口芯片概述,计算机与外部的信息交换称为通信(Communication),基本的通信方式有两种,一种是并行通信,另一种是串行通信。,并行通信时,数据各位同时传送。例如CPU通过8255A与外设交换数据时,就采用并行通信方式。这种方式传送数据的速度快,但使用的通信线多,如果要并行传送8位数据,需要用8根数据线,另外还要加上一些控制信号线,随着传输距离的增加,通信线成本的增加将成为突出的问题,而且传输的可靠性随着距离的增加而下降,因此并行通信适用于近距离传送数据的场合。,在远距离通信时,一般都采用串行通信方式,它具有需要的通信线少和传送距离远等优点。串行通信时,要传送的数据或信息必须按一定的格式编码,然后在单根线上,按一位接一位的先后顺序进行传送,发送完一个字符后,再发送第二个;接收数据时,每次从单根线上一位接一位的接收信息,再把它们拼凑成一个字符,送给CPU作进一步处理。当微机与远程终端或远距离的中央处理机交换数据时,都采用串行通信方式。采用串行通信的另一个出发点是,有些外设,如调制解调器(MODEM)、鼠标器等。本身需要用串行方式通信。,8.1.1并行接口技术,CPU芯片本身总是以并行方式接收和发送数据,因此并行接口是微机系统中最常用的接口之一。实现并行输入/输出的接口就是并行接口。,并行接口的特点是:可以在多根数据线上同时传送以字节或字为单位的数据。并行接口(与其相对应的串行接口相比)具有传输速度快、效率高等优点;但由于所用电缆多,在长距离传输时,电缆的损耗、成本及相互之间的干扰会成为突出的问题。所以并行接口一般适用于数据传输率较高、而传输距离较短的场合。,并行接口连接CPU与并行外设,实现两者间的并行通信,在信息传送过程中,起到输出锁存或输入缓冲的作用。并行接口的典型硬件结构包括:1、一个或一个以上具有锁存或缓冲的数据端口2、与CPU进行数据交换所必须的控制和状态信号3、与外设进行数据交换所必须的控制和状态信号4、端口译码电路5、控制电路,1、简单的并行接口技术,简单的并行接口可由一些锁存器和(或)三态门组成。需要注意的是,单纯的三态门只能用作总线缓冲器/驱动器,它没有锁存功能,不能保持数据;单纯的锁存器不能起到隔离总线的作用,一般只用作输出接口而不用作输入接口;而带三态门输出的锁存器既可用作输入接口,又可用作输出接口,以实现总线的隔离。,常用来构成简单并行接口的芯片包括:8位三态输出缓冲驱动器74LS244/240(反相)、8位三态双向缓冲驱动器74LS245、8位三态双向锁存器74LS373/573等。,并行接口连接外设示意图,外设将数据=接口状态线“数据输入准备好”=1;接口把接收到数据输入缓冲寄存器;数据输入回答=1,作为对外设响应信号;外设撤消“数据”和“数据输入准备好”信号;CPU从接口读取数据接口收到数据,设置“输入准备好”状态位;供给CPU查询或问CPU发中断请求;CPU从接口读取数据,接口自动清除状态寄存器输入准备好状态位(准备好);数据总线处于高阻状态。开始下一个输入过程,输入过程,输出:每当外设从接口取走一个数据以后,CPU往接口中输出数据接口中状态寄存器发中断请求;(“输出准备好”=1,表示CPU可以往接口中输出数据)CPU向接口输出数据,数据到接口缓冲寄存器;接口自动清除“输出准备”好。将数据送往外设:接口向外设发送一个“驱动信号”,启动外设接收数据。外设收到数据向接口发一个“数据输出回答”信号;接口收到的信号将状态寄存器中“输出准好”=1;CPU输出下一个数据。,输出过程,8.1.1可编程通用接口芯片简介,1.接口芯片可实现的功能,(1)寻址功能,芯片有片内寄存器,由端口地址访问对芯片写控制字,设置芯片功能CPU与芯片寄存器间交换信息芯片有片选控制线CSCPU地址线经译码产生片选控制线CSCS和片内寄存器端口地址确定片内寄存器地址值的唯一性,(2)联络功能:如果需要,接口芯片应能完成CPU与外设之间的通信挂钩任务。,(3)输入/输出功能:接口芯片应能确定是CPU输出数据和控制信息,还是外设输入数据和状态信息。,(4)数据转换功能:接口芯片应能完成CPU和外设间不同数据格式的转换,如并/串转换、串并转换、A/D转换、D/A转换等等。,(5)错误检测功能:在某些情况下,需要接口芯片能检测数据传送时引入的错误,包括传输错误、覆盖错误等。,(6)复位功能:接口芯片应能接收复位信号,以重新启动接口本身及所连接的外设。,(7)可编程功能:一些接口芯片可以通过软件改变其内部控制字内容,这样用户在硬件设置好后仍可以改变系统的工作方式。,信息交换功能,芯片控制(命令)字的写入特点数据、状态、控制信息的交换特点数据、状态、控制信息的传送方向,1)按用途分类,通用接口芯片74LS373、74LS245、8282、82868255A、8251、8253专用接口芯片DMA接口芯片8237A中断接口芯片8259A,2接口芯片的分类,2)按数据传输方式分类,并行接口芯片将数据的各位同时在多根并行传输线上进行传输,适于短距离、高速通信,串行接口芯片将数据的各位按时间顺序依次在一根传输线上传输,适于长距离、中低速通信,01101010,3)按控制方式分类,不可编程控制芯片功能是由硬件接线决定,不能用软件来控制74LS373、74LS245、8282、8286注:芯片的功能不可改变可编程控制芯片功能:可用软件编程的方法改变,使接口具有更大的灵活性和通用性8255A、8253、8259A、8237A注:芯片的功能可改变,3.可编程通用接口芯片的开发应用,1)了解芯片的基本性能(功能)和内部结构;2)掌握芯片的外部连接特性,以进行硬件设计。一般将引脚分为面向CPU和面向外设的两部分。应该注意端口地址的确定方法(面向CPU一边),以便进行程控;3)掌握芯片各控制字的含义和设置方法,能根据系统设计要求确定各控制字值;4)CPU在初始化程序中按要求发送各控制字到相应端口(寄存器)以确定芯片的工作方式和状态;5)CPU在工作过程中可以通过读状态端口检查接口芯片的工作状态,并可重新设置和发送某些控制字值,以改变芯片的工作方式。,8255A是Intel公司生产的一种可编程并行输入/输出接口芯片。它的通用性强,可以方便地和微机连接,用来扩展输入/输出口。8255A有3个8位并行端口,根据不同的初始化编程,可以分别定义为输入或输出方式,以完成CPU与外设的数据传送。,8.2可编程并行接口芯片8255A,图8255A引脚,8255A采用40脚双列直插式封装,引脚如图所示。下面分别介绍各个引脚的功能。,8.1.28255A的结构和引脚功能,D0D7:双向三态数据总线。,RESET:复位信号,输入。当RESET端得到高电平后,8255A复位。复位状态是控制寄存器被清零,所有端口(A、B、C口)被置为输入方式。,:片选信号,输入。当为低电平时,该芯片被选中。,:读信号,输入。当为低电平时,允许CPU从8255A读取数据或状态信息。,:写信号,输入。当为低电平时,允许CPU将控制字或数据写入8255A。A1、A0:端口选择信号,输入。8255A中有端口A、B、C,还有一个控制寄存器,共4个端口,根据从A1、A0输入的地址信号来寻址,如下表所示。A1、A0与信号一起,用来确定8255A的操作状态,如表所示。,PA0PA7:A口数据线,双向。PB0PB7:B口数据线,双向。PC0PC7:C口数据线,双向。,当8255A工作于方式0时,PC0PC7分成两组并行I/O数据线,每组4位。当8255A工作于方式1或方式2时,PC0PC7为A口、B口提供联络和中断信号,这时每根线的功能有新的定义。,与外设连接的引脚PA7PA0、PB7PB0和PC7PC0与CPU连接的引脚数据引脚:D7D0复位输入:RESET片选信号:CS端口选择的地址信号:A1和A0读信号:RD写信号:WR,8255A的内部结构如图所示。它由并行I/O端口、控制电路、数据总线缓冲器和读/写控制逻辑等几个部分组成。(1)并行I/O端口A、B、C。,8255A的内部结构,A、B、C口都是8位的,可以选择作为输入或输出,但在结构和功能上有所不同。A口含有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器。B口含有一个8位数据输出锁存/缓冲器和一个8位的数据输入缓冲器(不锁存)。C口含有一个8位数据输出缓冲器和一个8位数据输入缓冲器(不锁存)。当数据传送不需要联络信号时,这三个端口都可以用作输入或输出口。当A口、B口工作在需要联络信号输入、输出方式时,C口可以分别为A口和B口提供状态和控制信息。(2)A组和B组控制电路。8255A的三个端口在使用时分为A、B组。A组包括A口8位和C口的高4位,B组包括B口8位和C口的低4位。两组的控制电路中有控制寄存器,根据写入的控制字决定两组的工作方式,也可以对C口的每一位置“1”或清“0”。,(3)数据总线缓冲器。数据总线缓冲器是三态双向8位缓冲器,是8255A与CPU数据总线的接口。数据的输入/输出、控制字和状态信息的传送,都是通过这个缓冲器进行的。由于8255A的数据总线是三态的,所以D0D7可以直接与CPU的数据总线相连。(4)读/写控制逻辑。8255A的读/写控制逻辑的作用是从CPU的地址和控制总线上接收有关信号,转变成各种控制命令送到数据缓冲器以及A组、B组控制电路,从而管理三个端口、控制寄存器和数据总线之间的传送操作。,8255A的内部结构,1外设接口:包括A、B、C三个数据端口(通道)。其中A口带输出锁存/缓冲和输入锁存,B口带输出锁存/缓冲和输入缓冲,C口带输出缓冲和输入缓冲。,2内部逻辑:包括A组控制电路(控制A口和C口上半部)和B组控制电路(控制B口和C口下半部),由CPU程控。,3CPU接口:包括三态双向数据总线缓冲器和读/写控制逻辑。,对CPU来说,8255A内部包括4个端口,即3个数据端口A口、B口、C口,和1个控制端口。,每个端口8位,通过编程设定其为输入口或输出口可用来和外设传送信息,1.数据端口A、B、C,有3种工作方式(方式0、方式1、方式2)对外8根引脚PA7PA0,端口A,有2种工作方式:方式0、方式1对外8根引脚PB7PB0,端口B,当端口A在方式1或方式2、端口B在方式1时,端口C的某些位用于传送联络信号,如查询传送的应答信号、中断传送的中断申请信号等;C口未被用作联络信号的其它位可工作在方式0。,端口C,8位端口,无对外引脚控制端口的内容决定A、B、C口的工作状态(输入或输出)和工作方式(方式0、1、2),2.控制端口D,3.数据总线缓冲器(引脚D0D7),由1个8位双向三态缓冲器构成8255A内各端口通过数据缓冲器与系统总线相连。CPU与端口A、B、C间传送的数据,以及CPU写入控制端口D中的控制字均通过数据缓冲器传送。,4.读写控制电路(引脚CS、RD、WR),控制数据总线缓冲器的状态。数据总线缓冲器有3种状态:输入、输出、高阻态,5.片内译码电路(引脚A1、A0),选择被操作的端口,功能表,8255A操作地址,写控制字地址A1=1、A0=1A端口读写地址A1=0、A0=0B端口读写地址A1=0、A0=1C端口读写地址A1=1、A0=0注:写控制字操作仅有写操作,其余可读写PC/XT机中地址为60H63H,8255A的工作方式控制字,例,A端口方式1输入、B端口方式1输出、PC6,PC7作输入,给出方式控制字。,BCH,A7H,A端口方式1输出、B端口方式1输入、PC4,PC5作输出,给出方式控制字。,例,8255A与系统的连线如下,片选译码地址为0F00F3H1)确定各端口地址?2)编程设置8255A:A口方式0输入,PC7PC4输出B口方式0输出,PC3PC0输入,最后得出结论:A口地址为F0HB口地址为F1HC口地址为F2HD口地址为F3H,由8255A编程结构知:,解:1)端口地址,所以,方式控制字为10010001B,即91H,要求设置:A口方式0输入,PC7PC4输出B口方式0输出,PC3PC0输入,2)确定方式控制字,MOVDX,0F3H;控制口地址MOVAL,91H;方式控制字OUTDX,AL或MOVAL,91H;方式控制字OUT0F3H,AL,初始化程序,C端口置/复位控制字,通过控制口置PC2为0,置PC4为1解:MOVDX,0FF06H;置DX为控制口地址MOVAL,00000100B;置PC2为0OUTDX,ALMOVAL,00001001B;置PC4为1OUTDX,AL,例,例:设8255A的A端口工作于方式1输入,B端口工作于方式0输出,置PC4=H,(8255A的操作地址为60H66H),MOVAL,0B0H;1011000XOUT66H,AL;写方式控制字MOVAL,09H;0XXX01001OUT66H,AL;写置/复位控制字,C口置/复位控制字,工作方式控制字,8.2.28255A的工作方式,A端口有三种工作方式方式0、方式1、方式2B端口有二种工作方式方式0、方式1C端口无工作方式选择工作于方式0,或作为A、B端口工作于方式1、2时的联络信号注:方式0(基本输入/输出)方式1(选通输入/输出)方式2(双向数据传送),工作方式的选择可通过向控制端口写入控制字来实现。在不同的工作方式下,8255A三个输入/输出端口的排列示意图如图所示。,方式0基本输入输出,功能:A、B、C端口可单独工作于输入或输出,共有十六种组态电特性:作输出用,各端口有锁存功能作输入用,各端口无锁存功能应用:程序控制下的无条件传送方式(查询方式)A、B、C端口均传送数据信息程序控制下的有条件传送方式A、B端口传送数据,C端口传送状态,表8255方式0之下的输入输出组合,9BH9AH99H98H93H92H91H90H8BH8AH89H88H83H82H81H80H,方式0的等效电路,输入方式,输出方式,方式1选通输入输出,功能A、B端口作8位数据输入或输出C端口的特定位为A、B端口服务电特性作输出用时,A、B端口有锁存功能作输入用时,A、B端口有缓冲功能应用A、B端口传数据查询方式:C端口特定位传送状态中断方式:C端口特定位发中断请求,A口方式1输入时相应的联络信号,B口方式1输入时相应的联络信号,方式1下输入端口的联络信号,方式1下输入端口的联络信号,由外设发出,送给8255A作用是将外设送来的数据锁存到8255A的输入端口。IBF:输入缓冲器满信号(高电平有效)8255A发出,表示外设送来的数据已进入输入端口。当外设送来的数据送入输入端口后,8255A自动发出IBF。INTR:中断申请信号(高电平或上升沿有效)8255A发出,用来向CPU发出中断申请。,方式1下输入端口的联络信号,INTE:中断允许控制信号作用是控制是否允许8255A的中断申请信号INTR发出。此信号无引出,通过控制口对C口相应位的置位/复位,设置允许或不允许。A口,对PC4置位,使INTEA=1,允许中断对PC4复位,使INTEA=0,不允许中断B口,对PC2置位,使INTEB=1,允许中断对PC2复位,使INTEB=0,不允许中断在方式1下,作为联络信号的外部引脚PC4、PC2,不受C口按位置位/复位控制字控制,而只在8255A内部对INTE信号起作用,图8255A工作方式1输入的时序,A口方式1输入时相应的联络信号,B口方式1输入时相应的联络信号,方式1下输出端口的联络信号,由外设发出,送给8255A。作用是通知8255A,输出端口的数据已被外设取走,可以传送下一个数据。INTR:中断申请信号(高电平或上升沿有效)8255A发出,用来向CPU发出中断申请。,方式1下输出端口的联络信号,当数据送至8255A输出缓冲器后,8255A自动发出。表示CPU送来的数据已进入8255A输出端口,可用来通知外设把数据取走。,方式1下输出端口的联络信号,INTE:中断允许控制信号作用是控制是否允许中断申请信号INTR发出此信号无引出,通过控制口对C口相应位的置位/复位设置允许或不允许。A口,对PC6置位,使INTEA=1,允许中断对PC6复位,使INTEA=0,不允许中断B口,对PC2置位,使INTEB=1,允许中断对PC2复位,使INTEB=0,不允许中断在方式1下,作为联络信号的外部引脚PC6、PC2,不受C口按位置位/复位控制字控制,而只在8255A内部对INTE信号起作用。,图8255A工作于方式1输出的时序,表工作方式1C口各位的定义,其特点是:工作在方式1下的8255A提供了与外设的握手信号,并可通过中断方式通知CPU取数或送数(该中断可用软件屏蔽)。,显然,只有8255A的A口或B口可以工作在方式1,而C口的某些引脚会被用作联络信号(其它未定义的引脚仍作普通I/O)。图7-21中虚线框标示的INTE标志可以通过C口置位/复位控制字来设定,并作为INTR信号的开门信号。请注意INTR信号是由IBF信号(8255A作输入端口时用来标示输入缓冲器满,通知CPU取数)或信号的反相信号(8255A作输出端口时用来标示输出缓冲器空,通知CPU送数)产生的。,图8255A工作于方式1的状态字,在方式1的情况下,执行一条读C口的指令,就可以得到一个状态字,用来检查外设或8255A的工作状态,从而控制程序的进程。状态字如图7-26所示。,方式2双向输入输出,功能仅A端口具有双向数据传送功能C端口特定位的组合应用电特性A端口具有双向锁存和缓冲特性应用A端口双向传送数据查询方式:C端口特定位传送状态中断方式:C端口特定位发中断请求,方式2输入/输出端口的联络信号,工作在方式2时,C口有5根引脚作为A口的联络信号,是方式1下A口输入、输出联络信号的组合,A端口、B端口方式1比较,A端口输入借用C端口位PC3、PC4、PC5A端口输出借用C端口位PC3、PC6、PC7B端口输入借用C端口位PC0、PC1、PC2B端口输出借用C端口位PC0、PC1、PC2A端口输入、输出借用不同的C端口的位B端口输入、输出借用相同的C端口的位B端口只有方式1选通输入/输出A端口还有方式2双向数据传送,C端口未借用位的使用,A端口方式0、B端口方式0C端口所有位未被借用,PC0PC7可用A端口方式0、B端口方式1PC0PC2被借用,PC3PC7可用A端口方式1输入、B端口方式0PC3、PC4、PC5被借用,PC0PC2、PC6、PC7可用A端口方式1输出、B端口方式0PC3、PC6、PC7被借用,PC0PC2、PC4、PC5可用A端口方式1输入、B端口方式1PC6、PC7可用A端口方式1输出、B端口方式1PC4、PC5可用A端口方式2、B端口方式1;都不可用,在方式2中,C口为A口提供的联络信号如表7-6所示。,构成双向方式下输出的联络信号。的功能与方式1时的相同。的功能与方式1有所不同。在方式2的情况下,外设收到8255A发出的=0信号后,要用=0去打通A口的输出缓冲器,使数据放到A口的外部数据线上,否则输出缓冲器的输出端处于高阻状态。所以在双向方式下如果没有外设的有效信号,就不能输出数据。,方式2:就是方式1的输入与输出方式的组合,各应答信号的功能也相同。而C口余下的PC0PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0。,方式2为双向选通I/O方式,只有A口才有此方式。这时,C口有5根线用作A口的应答联络信号,其余3根线可用作方式0,也可用作B口方式1的应答联络线。,图8255A工作于方式2的状态字,方式2是一种双向工作方式,如果一个并行外部设备既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行。,方式2和其它方式的组合,方式2和方式0输入的组合:控制字:11XXX01T方式2和方式0输出的组合:控制字:11XXX00T方式2和方式1输入的组合:控制字:11XXX11X方式2和方式1输出的组合:控制字:11XXX10X其中X表示与其取值无关,而T表示视情况可取1或0。,例1A口方式2要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。初始化程序可补充完整如下。MOVAL,0C4HOUTCTRL_PORT,AL;设置工作方式MOVAL,09HOUTCTRL_PORT,AL;PC4置位,A口输入允许中断MOVAL,ODHOUTCTRL_PORT,AL;PC6置位,A口输出允许中断MOVAL,05HOUTCTRL_PORT,AL;PC2置位;B口输出允许中断,8.2.38255A的基本应用,18255A的控制字和编程,(1)控制字格式,(2)C口的置位/复位功能,(3)初始化编程,例试画出8255A与8086CPU连接图,并说明8255A的A0、A1地址线与8086CPU的A1、A2地址线连接的原因。,答:8255A与8086CPU的连线图如下图所示:,8086系统有16根数据线,而8255只有8根数据线,为了软件读写方便,一般将8255的8条数据线与8086的低8位数据线相连。8086在进行数据传送时总是将总线低8位对应偶地址端口,因此8086CPU要求8255的4个端口地址必须为偶地址,即8086在寻址8255时A0脚必须为低。实际使用时,我们总是将8255的A0、A1脚分别接8086的A1、A2脚,而将8086的A0脚空出不接,并使8086访问8255时总是使用偶地址。,2接口应用举例,例8255A接口电路如图所示:已知8255A控制字寄存器的端口地址为10EH,编写8255A初始化程序和循环彩灯控制程序。初始时D0亮,其余不亮,D0亮一秒后移位一次,D1亮,其余不亮,以此类推每隔一秒移位一次,每移位8次为一个循环,共循环8次。要求用汇编语言写出满足上述要求的程序段(已知一个延时1秒的子程序入口地址为DELAY1S)。,分析8255的控制字:80H(D7=1,D2、D0=0)程序如下:MOVAL,80HMOVDX,10EHOUTDX,ALMOVCX,8MOVAL,1MOVDX,10AHNEXT1:OUTDX,ALCALLDELAY1SDECCX,JZNEXT2ROLAL,1JMPNEXT1NEXT2:HLT,例用8255A作为CPU与打印机接口,8255的A口工作于方式0,输出;C口工作于方式0。8255A与打印机及CPU的连线如下图所示。试编写一程序,用查询方式将100个数据送打印机打印(8255A的端口地址及100个数据的存放地址自行设定)。,分析:8255的A、B、C及控制端口的地址分别为98H、9AH、9CH和9EH,而需打印的数据放在数据段中以DATA1开头的区域,则一种可能的程序段如下实现:,MOVAL,10000001B;设置8255A的工作方式控制字OUT9EH,ALMOVCX,100;设置需打印数据的总个数以控制循环次数LEASI,DATA1NEXT:MOVAL,SI;从数据段取数据并通过A口发到打印机OUT98H,ALMOVAL,00001100B;设置C口置位/复位控制字,使PC6为低电平,OUT9EH,AL;通知打印机锁存数据并打印INCSI;为取下个数据作准备DECCXJZERROR;判断是否传完100个数据,如是,转后续处理AGAIN:INAL,9CH;如未传完100个数据,读状态端口TESTAL,01H;查询PC0(BUSY)是否为高电平JNZAGAIN;如是,继续查询,直到BUSY变低JMPNEXT;BUSY为低电平,则转NEXT发送下一个数据ERROR:,8.38253可编程定时器/计数器,在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。,8.3.1定时/计数的概述,在微机系统中,常常需要为CPU和外部设备提供时间基准以实现定时或延时控制。如定时中断、定时检测、定时扫描等,或对外部事件进行计数并将计数结果提供给CPU。实现定时或延时控制有三种方法:软件定时、不可编程硬件定时器、可编程硬件定时器。软件定时让CPU执行一段程序段,由于执行每条指令都需要时间,因此执行一个程序段就需要一定的时间,通过改变指令执行的循环次数就可以控制定时时间。这种软件定时方式计时不够准确,尤其是当CPU内部有多个并行处理时更为明显。同时,由于它占用了CPU,因而降低了CPU的利用率。,1.定时/计数的基本概念,不可编程的硬件定时器采用中小规模器件(如NE555),外接定时元件电阻和电容。这种方式实现的定时电路简单,通过改变电阻和电容可使定时在一定范围内变化。但是,这种定时电路在连接好硬件后,定时值就不易用软件来控制和改变,由此产生了可编程的硬件定时器电路。所谓可编程的硬件定时器电路就是其工作方式、定时值和定时范围可以很方便地由软件来确定和改变。,通常,一个可编程定时/计数器的主要用途有:以均匀分布的时间间隔中断分时操作系统,以便切换程序。向I/O设备输出精确的定时信号,该信号的周期由程序控制。用作可编程波特率或速率发生器。检测外部事件发生的频率或周期。统计外部事件处理过程中某一事件发生的次数。在定时或计数达到编程规定的值之后,产生输出信号,向CPU申请中断。,2.定时/计数技术概述,微机系统的接口电路中常会用到定时或计数功能,尤其在实时计算机测控系统中,常需要对外部事件进行计数,或为I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等各种定时(延时)控制。,实际上,定时功能和计数功能都可以通过一个计数器来实现:如果计数器的输入为标准时钟脉冲,则通过计数值可以得出时间间隔,从而进行定时操作,实现定时功能;如果计数器的输入为需要计数的信号(脉冲),则计数值就是一定时间内信号(脉冲)出现的次数,即实现计数功能。,在微机中,定时/计数可以通过软件实现,也可以通过硬件实现。软件实现方案可以节省硬件,但CPU的利用效率低;硬件实现方案则可大大提高CPU的利用率,并非常有利于实现多个外部设备的并行工作。,一般来说,定时/计数器内部的计数器并不直接和CPU联络,CPU可以通过初值寄存器向计数器写入,通过输出寄存器从计数器读出。定时/计数器的CLK输入端可以接标准时钟脉冲(以完成定时功能),也可以接其它信号(以完成计数功能)。当计数值达到要求后(一般是计到全0或全1),OUT端输出的有效电平可以用来通知CPU或外设。定时/计数器的另一个输入端GATE被称为门控信号,可以用它来控制计数器是否工作,即控制CLK端输入的信号是否能送到计数器进行计数。,定时/计数器的作用生产线上统计产品的数目-计数器系统的动态存储器刷新-定时器系统时钟计时-定时器扬声器的频率源-定时器如何定时软件定时,优点是节省硬件;缺点是执行程序期间CPU一直被占用,降低了CPU效率硬件定时,要用额外的硬件计数/定时器,但可提高CPU的利用率,在采用硬件实现定时/计数功能时,可以根据系统的复杂程度选用可编程的或不可编程的两种方案。不可编程的定时/计数器结构简单,使用方便,但只能完成有限的定时/计数功能;可编程的定时/计数器则可通过软件设置不同的计数初值和计数方式,并可用软件读回计数值,适用于各种场合,因此应用面非常广泛。这里我们主要介绍的就是可编程的定时/计数技术。,可编程定时/计数器应由计数初值寄存器、计数输出寄存器、控制寄存器、状态寄存器和计数器等几大部分组成。典型的定时/计数器基本结构如图8-1所示。,8.3.28253的结构和引脚功能,8253是Intel公司生产的可编程计数/定时器芯片。8253的操作对所在系统没有特殊要求,其通用性强,适用于各种微处理器组成的系统。它有3个独立的16位减1计数器,每个计数器有6种工作方式,能进行二进制或二十进制计数或定时操作,计数速率可达2MHz,最高信号时钟频率2.6MHz,所有的输入/输出都与TTL电平兼容。同类型的定时/计数器芯片还有Intel8254等。,1.8253的基本性能及主要功能,具有三个相互独立的16位计数器通道;每个通道都可设定以6种工作方式之一进行计数/定时;每个计数器都可设为按二进制或BCD码计数;具有计数和定时功能,基于减1计数工作;定时器减为0后,可自动装入定时常数初值,并产生输出信号;在减1操作中,任何时刻计数器的值都可由CPU经计数输出寄存器读取;,2.8253内部结构,(1)数据总线缓冲器。数据总线缓冲器是8253与CPU数据总线连接的8位双向三态缓冲器。CPU用输入/输出指令对8253进行读/写操作的所有信息都是通过这8条总线传送的。这些信息包括:CPU在初始化编程时写入8253的控制字、CPU向8253某一计数器写入的计数初值、CPU从8253某一计数读取的计数值。(2)读/写逻辑。读/写逻辑是8253内部操作的控制部分。当片选信号有效,即=0时,读/写逻辑才能工作。该控制逻辑根据读/写命令及送来的地址信息,决定三个计数器和控制字寄存器中哪一个工作,并控制内部总线上数据传送的方向。,(3)控制字寄存器。在8253初始化编程时,由CPU向控制字寄存器写入控制字,以决定每个计数器的工作方式。此寄存器只能写入而不能读出。(4)计数器0、1、2。计数器0、1、2是3个16位减1计数器,它们互相独立,内部结构和功能相同。每个计数器有3根信号线,它们是时钟输入CLK、门控输入GATE和输出OUT。计数器从CLK端接收时钟脉冲或事件计数脉冲,在脉冲下降沿按照二进制或二十进制从预置的初值开始进行减1计数。当计数值减到零时,从OUT端送出一个信号。计数器在开始计数和计数过程中,受到门控信号GATE的控制。,在开始计数之前,必须由CPU用输出指令预置计数器的初值。在计数过程中,CPU可以随时用指令读取计数器的当前值。,3.8253的外部引脚及特性,8253引脚,8253与CPU的接口8位数据线:D0D7寻址控制线:A0、A1、CS读写控制线:RD、WR8253与外设的接口注:三个独立的计数器/定时器时钟输入:CLK输入门控:GATE波形输出:OUT,CLK:计数脉冲输入端。计数器对该引脚的输入脉冲进行计数。如果CLK信号是周期精确的时钟脉冲,则具有定时作用。8253规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。,8253寄存器选择表,4.8253的外部连接特性,同8255A一样:8253外部数据线宽度也为8bit,一般也将其与8086CPU的低8位数据线相连,并占用4个偶端口地址;8253上负责内部寻址4个端口的A0、A1脚与8086CPU的A1、A2脚相连,(8086CPU的A0脚空出),同时8086CPU的其它高位地址线经地址译码后产生8253的片选信号。,实际上,8253内部不止4个寄存器,但因为有些寄存器只读,有些寄存器只写,所以我们可以用8253的A1、A0信号与读写信号一起寻址内部各寄存器,如表8-2所示。这样对CPU来说,一片8253就可以只占用4个端口地址了。,8.3.38253的工作方式,8253共有6种工作方式,各方式下的工作状态是不同的,输出的波形也不同,其中比较灵活的是门控信号的作用。由此组成了8253丰富的工作方式、波形,下面我们逐个介绍:,几条基本原则,(1)控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态。初始状态对不同的模式来说不一定相同。,(2)计数初始值写入之后,要经过一个时钟周期上升沿和一个下降沿,计数执行部件才可以开始进行计数操作,因为第一个下降沿将计数寄存器的内容送减1计数器。,(3)通常,在每个时钟脉冲CLK的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的触发方式是有具体规定的,即或者是电平触发,或者是边沿触发,在有的模式中,两种触发方式都是允许的。其中0、2、3、4是电平触发方式,1、2、3、5是上升沿触发。,(4)在时钟脉冲的下降沿,计数器作减1计数,0是计数器所能容纳的最大初始值。二进制相当于216,用BCD码计数时,相当于104。,工作方式与功能,方式0:计数结束产生中断输出(软件控制)方式1:重复触发的单稳输出(硬件控制)方式2:分频器(软件控制)方式3:方波发生器(软件控制)方式4:选通信号发生器(软件触发)方式5:选通信号发生器(硬件触发),8253各工作方式的共同点,控制字写入计数器时,所有控制逻辑立即复位,输出端OUT进入初始态写入初值后,要经过一个时钟周期后计数执行部件CE才开始工作时钟脉冲CLK的上升沿,门控信号GATE被采样,1.方式0计数结束产生中断,方式0的波形如图所示,当控制字写入控制字寄存器后,输出OUT就变低,当计数值写入计数器后开始计数,在整个计数过程中,OUT保持为低,直到计数0(结束)时,OUT端变为高,向CPU发出中断请求。GATE的高低电平控制计数过程是否进行。,计数器只计一遍,当计数到0时,不重新开始计数保持为高,直到输入一新的计数值,OUT才变低,开始新的计数;计数值是在写计数值命令后经过一个输入脉冲,才装入计数器的,下一个脉冲开始计数,因此,如果设置计数器初值为N,则输出OUT在N1个脉冲后才能变高;在计数过程中,可由GATE信号控制暂停。当GATE0时,计数器暂停计数;当GATE1时,继续计数;在计数过程中可以改变计数值,且这种改变是立即有效的,分成两种情况:若是8位计数,则写入新值后的下一个脉冲按新值计数;若是16位计数,则在写入第一个字节后,停止计数,写入第二个字节后的下一个脉冲按新值计数。方式0的OUT信号在计数到0时由低变高,可作为中断请求信号。但由于在8253内部没有中断控制电路,因此在多中断源系统中需外接中断优先权排队电路和中断向量产生电路。,工作方式0有如下特点:,1.方式0计数结束产生中断,预置初值之后,OUT仍保持低电平。只有当计数器中计数值减为0时,OUT才会输出高电平并维持计数初值寄存器CR在延迟一个CLK脉冲后传到CE中,因此N1个CLK脉冲后计数值才变为0GATE=0,计数停止;1,继续计数计数过程中可重写或改变计数值,方式0初始化,设计数器0工作于方式0,8位二进制计数,初值为9。端口地址为0E0H0E6H初始化程序MOVAL,10H;设计数器0,工作方式0OUT0E6H,AL;写入控制寄存器MOVAL,9;设计数初值OUT0E0H,AL;写初值入计数器0的CR,2.方式1可重触发的单稳触发器,方式1的波形如图所示,CPU向8253写入控制字后OUT变高,并保持,写入计数值后并不立即计数,只有当外界GATE信号启动后(一个正脉冲)的下一个脉冲才开始计数,在整个计数过程中,OUT都维持为低,直到计数到0时,输出变为高。因此,输出为一单脉冲,其低电平维持时间由装入的计数初值来决定,计数到0后,OUT才变高。此时再来一个GATE正脉冲,计数器又开始重新计数,输出OUT再次变低,因此输出为一单拍负脉冲。,方式1有下列特点:,输出OUT的宽度为计数初值的单脉冲;输出受门控信号GATE的控制,分三种情况:当计数到0后,计数器可再次由外部启动,再来GATE脉冲,按原计数初值重新开始计数,输出单脉冲,OUT变低;而不需要再次送一个计数初值。在计数过程中,外部可发出门控GATE脉冲,进行再触发,这时不管原来计数到何值,则从下一CLK脉冲开始重新计数,输出端OUT仍保持低电平。改变计数值后,只有当GATE脉冲启动后,才按新值计数,否则原计数过程不受影响,仍继续进行,即新值的改变是从下一个GATE开始的。计数值是多次有效的,每来一个GATE脉冲,就自动装入计数值开始从头计数,因此在初始化时,计数值写入一次即可。,2.方式1可重触发的单稳触发器,门控信号GATE正脉冲启动定时/计数允许当前计数未完时的多次重触发,GATE再触发后,OUT输出会保持N个CLK脉宽的低电平下个GATE正脉冲触发信号到来时,会将新初值装入CE中,使计数单元从新初值开始计数,比较方式0和方式1,有以下几点不同:,方式0设置计数初值后立即计数;方式1设置计数初值后不立即计数,直到有外部触发信号后才开始计数。方式0在计数过程中能用门控信号暂停计数;方式1在计数过程中若有门控脉冲时不停止计数,而是使计数过程重新开始。方式0在计数过程中改变计数初值时,原计数停止,立即按新的计数初值开始计数;方式1在计数过程中当改变计数初值时,现行计数不受影响,新计数初值在下次启动计数后才起作用。方式0在一次计数结束后,必须重新设置计数初值才能再次计数,即计数初值只能使用一次,方式1的计数初值在一次计数过程完成后继续有效。,方式1初始化,设计数器1工作于方式1,BCD码计数,计数值为十进制4000。设端口地址为0E0H0E6H16位计数初值,但由于计数值低8位为0,所以可以设定读/写操作控制段只写高8位,CR低8位自动清0。控制字为01100011B,初始值40HMOVAL,63H;设控制字OUT0E6H,ALMOVAL,40H;设初值40H(高8位)OUT0E2H,AL,3.方式2速率发生器(分频器),在这种方式下,CPU输出控制字后,输出OUT就变高,写入计数值后的下一个CLK脉冲开始计数,计数到1后,输出OUT变低,经过一个CLK以后,OUT恢复为高,计数器重新开始计数,因此在这种方式下,只需写入一次计数值,就能连续工作,输出连续相同间隔的负脉冲(前提:GATE保持为高),即周期性地输出。在计数过程中输出端始终保持为高,直到计数器减为1时,输出变低。经过一个CLK周期,输出恢复为高,同时按照原计数初值重新开始计数。如果计数值为N,则在CLK端每输入N个脉冲后,就输出一个脉冲。因此,这种方式可以作为分频器或用于产生实时时钟中断。,方式2下,8253有下列使用特点:,不用重新设置计数初值,计数器能够连续工作,输出固定频率的脉冲。计数过程可由门控信号GATE控制。当GATE为0时,暂停计数。当GATE变为1后,下一个CLK脉冲使计数器恢复初值,重新开始计数。(注意:该方式与方式0不同,方式0是继续计数)在计数过程中可以改变计数初值,这对正在进行的计数过程没有影响。但当计数到1时输出变低,过一个CLK周期输出又变高,计数器将按新的计数值计数。所以对方式2改变计数初值时,在下一次计数有效。同方式1。,3.方式2分频器,计数器减到1时,OUT仅输出一个CLK脉宽的低电平,然后自动装入重新计数GATE由低变高会重新装入初值新初值在下次计数才起作用,方式2初始化,设计数器2工作于方式2,二进制计数,计数初值0304H。端口地址0E0H0E6HMOVAL,0B4H;控制字OUT0E6H,ALMOVAL,04H;计数器低字节OUT0E4H,ALMOVAL,03H;计数器高字节OUT0E4H,AL,4.方式3方波速率发生器,方式3的波形如图所示,这种方式下的输出与方式2都是周期性的,不同的是周期不同,CPU写入控制字后,输出OUT变高,写入计数值后开始计数,当计数到一半计数值时,输出变低,重新装入计数值进行减法计数,当计数到0时,输出变高,装入计数值进行减法计数,循环不止。,方式3与方式2的输出都是周期性的,它们的主要区别是:方式3在计数过程中的输出有一半时间为高电平,另一半时间为低电平。所以,若计数值为N,则方式3的输出为周期=(NCLK周期)的方波。,方式3的特点是:,当计数初值N为偶数时,输出端的高低电平持续时间相等,各为N/2个CLK脉冲周期;当计数初值N为奇数时,输出端的高电平持续时间比低电平持续时间多一个脉冲周期,即高电平持续(N+1)/2个脉冲周期。低电平持续(N-1)/2个脉冲周期。例如N=5,则输出高电平持续3个脉冲周期,低电平持续2个脉冲周期。GATE=1,允许计数;GATE=0,停止计数。如果在OUT为低电平期间GATE=0,OUT将立即变高。当GATE变高以后,在下一个CLK脉冲来到时,计数器将重新装入初始值,开始计数。在这种情况下通过门控信号使计数器实现同步,称为硬件同步。,如果GATE信号一直为高电平,在写入控制字和计数值后,将在下一个CLK脉冲来到时装入计数初值并开始计数,这种情况称为软件同步。在计数期间写入一个新的计数初值,如果在输出信号半周结束之前没有收到GATE脉冲,则要到现行输出半周结束后才按新的计数初值开始计数。如果在写入新计数初值之后在现行输出半周结束之前收到GATE脉冲,计数器将在下一个CLK脉冲来到时立即装入新的计数初值并开始计数。在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。但若中间遇到有GATE脉冲,则在此脉冲后即装入新值开始计数。,4.方式3方波发生器,与方式2类似,但其输出方波或准方波计数值完成一半时,使OUT变低,直到计数任务全部完成为止,OUT恢复为高当计数初值N为偶数时,输出端的高低电平持续时间相等,各为N/2个CLK脉冲周期当计数初值N为奇数时,输出端的高电平持续时间比低电平持续时间多一个脉冲周期,即高电平持续(N+1)/2个脉冲周期。低电平持续(N-1)/2个脉冲周期。GATE由低变高时,重新开始计数,方式3初始化,计数器0工作于方式3,二进制计数,初值为4。端口地址为0E0H0E6HMOVAL,16H;控制字OUT0E6H,ALMOVAL,4;初值OUT0E0H,AL,5.方式4软触发的选通发生器,在这种方式下,也是当CPU写入控制字后,OUT立即变高,写入计数值开始计数,称为软件触发,当计数到0后,OUT变低,经过一个CLK脉冲后,OUT变高,这种计数是一次性的(与方式0有相似之处),只有当写入新的计数值后才开始下一次计数。若设置的计数初值为N,则是在写入了计数初值后经过(N+1)个CLK脉冲,才输出一个负脉冲。一般将此负脉冲作为选通信号。,方式4下,8253有下列使用特点:,当计数值为N时,则间隔N1个CLK脉冲输出一个负脉冲(计数一次有效);GATE0时,禁止计数,GATE1时,恢复继续计数;所以,要做到软件触发,GATE应保持为1。在计数过程中重新装入新的计数值,则该值是立即有效的(若为16位计数值,则装入第一个字节时停止计数,装入第二个字节后开始按新值计数)。这称为软件再触发。,5.方式4软触发的选通发生器,计数减到0时输出一个脉宽的低电平GATE由低到高时,计数器恢复工作,而不重置初值计数过程中,新初值立即起作用,方式4初始化,设计数器1工作于方式4,二进制计数,计数初值为3。端口地址为0E0H0E6HMOVAL,58H;控制字OUT0E6H,ALMOVAL,3;初值O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论