第10章 可编程定时计数控制器_第1页
第10章 可编程定时计数控制器_第2页
第10章 可编程定时计数控制器_第3页
第10章 可编程定时计数控制器_第4页
第10章 可编程定时计数控制器_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

第10章可编程定时/计数控制器10.1定时/计数的基本概念10.2可编程定时/计数器Intel825310.38254简介习题与思考题

定时与计数技术在计算机系统中具有极其重要的作用。微机系统都需要为CPU和外部设备提供定时控制或对外部事件进行计数。例如,分时系统的程序切换,向外部设备输出周期性定时控制信号,定时时间到发出中断申请或外部事件统计达到规定值发出控制信号或提出中断请求等。因此微机系统都必须有定时技术。

为获得稳定准确的定时,必须有稳定准确的时间基准。定时的本质是计数,把若干小片的时间单元累加起来,就获得一段时间。

定时的方法可以采用软件或硬件两种。10.1定时/计数的基本概念1.软件定时方法

软件定时方法利用CPU执行指令需要若干指令周期的原理,运用软件编程,循环执行一段程序产生延时,配合简单输出接口向外送出定时控制信号。这种方法优点是不需要增加硬件或硬件很简单,只需要编制相应的延时程序以备调用。缺点是执行延时程序会增加CPU的时间开销,浪费CPU的资源。2.硬件定时方法

硬件定时有专用的多谐振荡器件或单稳器件。使用这些定时器件获得定时的缺点是改变定时要改变硬件,所以使用很不方便。目前在微机系统中都采用可编程通用定时器/计数器芯片。这种可编程芯片(1)使用灵活、定时时间长,改变定时时间或工作方式只要改变编程控制参数即可;(2)初始化编程后,就按设定的方式工作,不再占用CPU的资源。通用定时器/计数器芯片种类很多。生产微处理器公司,都推出自己的定时/计数器芯片。PC/XT机使用8253-5,而PC/AT使用8254-2。本章将对Intel8253/8254定时/计数器芯片进行讨论。8253和8254的引脚和操作方式完全一样。Intel先推出8253,在8253的基础上稍加改进又推出8254。8254的改进体现在两方面:首先,8254的计数频率比8253更快,8253可以从直流到5MHz,而8254-2可达10MHz。另外,8254将8253控制字的最高两位D7D6=11的不用状态,设置成一种有效控制字,称为读回命令。Intel8253是一片具有3个独立16位计数器通道的可编程定时器/计数器芯片。每个通道都可以编程设定6种工作方式中的一种;每个计数器可设定为按二进制计数或BCD码计数,最高计数速率可达2.6MHz;使用单+5V电源,具有24条引脚双列直插式封装的大规模集成电路芯片;所有输入输出引脚都与TTL兼容。8253的读/写操作对系统时钟没有特殊的要求,可以应用于由任何一种微处理器组成的系统中,作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。Intel8253有3个独立的16位计数器,每个计数器都可以按照二进制或BCD码进行计数,计数速率可达2MHz(8254为10MHZ),每个计数器有6种工作方式,可编程设置和改变。它可用在多种场合,如方波发生器、分频器、实时时钟、事件计数等方面。10.2.1Intel8253的内部结构

8253内部由数据总线缓冲器、控制字寄存器、计数器和读写控制逻辑4部分组成。其内部结构如图10.1所示。10.2可编程定时/计数器Intel8253图10.18253的内部结构图

(1)数据总线缓冲器它与CPU的数据总线相连,是8位双向三态缓冲器。CPU通过缓冲器对8253进行读计数器当前计数值和写计数初值及设置8253的工作方式。(2)控制字寄存器此寄存器只能写入而不能读出。在8253初始化时,由CPU写入控制字来设置计数器的工作方式。当A1A0=11B时,访问控制字寄存器,它从数据总线上接收CPU送来的控制字,并由控制字的D7D6的编码决定控制字写入哪个计数器的控制寄存器,其余位数决定相应计数器通道的工作方式、选择计数器是按二进制或BCD码计数、并选择相应计数器初值的写入顺序。(3)计数器

计数器0、计数器1、计数器2是三个完全独立、结构相同的计数器,都是由16位可预置的减法计数器构成。

每个计数通道都有CLK和GATE两根输入引脚和OUT一根输出引脚。从编程的角度看,每个计数通道的结构如图10.2所示。图10.28253内部通道结构图

每个计数器通道,都包含一个用来接受初始计数值的16位计数寄存器CR,一个16位的计数器单元CE,一个用来锁存CE内容的16位的输出锁存器OL。CE的初值由CR的初始值装入,并执行从CLK引脚输入的CLK脉冲的减1计数的任务,但CPU不能直接访问CE。计数器的初始值必须在开始计数之前,由CPU用输出指令预置入计数寄存器CR内。每个计数器单元CE都可对其CLK输入端的输入脉冲,按照二进制或BCD码从预置的初始值开始进行减1计数。当预置的初始值减为零时,从OUT引脚输出一个电平或脉冲信号。在计数开始和计数的过程中,计数器可以由GATE引脚输入的门控信号控制。3个计数通道的操作是完全独立的。而每个计数通道的CLK、OUT和GATE相互遵从何种关系,是由写入每个通道的控制字(即工作方式)决定的。在计数过程中,CPU随时可以用IN指令,将计数器的当前值从输出锁存器OL中读出。读当前计数值时,不用中断计数器的时钟输入,也不会影响计数器的继续计数。(4)读/写控制逻辑这是8253内部操作的控制电路,它从系统控制线上接收输入信号,然后转变成8253内部操作的各种控制信号。读/写逻辑受片选信号的控制,当为高电平时,表明该8253芯片没有被选中,读/写逻辑被禁止,8253就不能和CPU交换信息,数据总线缓冲器呈现高阻状态,芯片与系统总线脱离。所以对芯片的编程设置和对芯片的访问都不能进行。但计数器现行的计数工作可以继续进行,而不受电平变化的影响。读/写逻辑还受、、A1和A0的控制。由A1、A0不同信号组合决定CPU访问哪个通道和通道内哪个内部寄存器,并由、控制内部总线上数据的传送方向。10.2.28253的外部引脚8253的引脚包括与系统相连接的引脚和与定时计数电路相连接的引脚两部分。其外部引脚如图10.3所示。图10.38253的外部引脚图1.与定时计数电路相连接的引脚(1)CLK引脚时钟输入引脚,每个通道的计数器单元CE,对CLK输入脉冲进行计数。CLK脉冲可以是系统时钟脉冲,也可以由系统时钟分频或者是其它脉冲源提供。输入脉冲可以是均匀、连续、周期精确的,也可以是不均匀、不连续、周期不定的。若8253用作分频器或工作于定时器方式时,则CLK输入是连续的、周期精确的时钟脉冲,而OUT输出必定是频率降低的、周期精确的时钟脉冲。若8253用作计数器,这时要求CLK输入只是脉冲的数量,而不是脉冲的时间间隔,所以CLK可以输入周期不定的脉冲,也可以输入周期确定的脉冲。当计数到预置的初值后,就从OUT端输出一个脉冲。若CLK的脉冲周期不定,则OUT输出的脉冲周期也不确定。8253的基本工作方式,就是对外部输入到CLK引脚上的脉冲进行计数。至于是定时方式还是计数方式,完全取决于输入脉冲的性质和用户的需要。(2)OUT引脚

它是8253的脉冲输出引脚。OUT引脚输出的信号取决于工作方式,它可以是电平、脉冲或方波等。(3)GATE引脚

门控输入引脚。这是一根外部控制计数器工作的信号线,GATE引脚的作用取决于8253的工作方式。2.与系统相连接的引脚8253面向系统的引脚信号按照其传输信息的种类不同,分成3组:地址信号、数据信号和控制信号。A1,A0:内部口地址的选择,输入。这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作。8253内部共有4个端口:计数器0,计数器1,计数器2和控制口;

:片选,输入,用来决定芯片是否被选中,由地址总线高位经译码电路产生;、、和两个地址引脚信号组合功能如表10-1所示。表10-18253A端口地址分配表A1A0操作数据传送方式00100001010011001000010010101001011001111××××读0计数器读1计数器读2计数器写0计数器写1计数器写2计数器写控制口8253无操作未选中0计数器OL→数据总线1计数器OL→数据总线2计数器OL→数据总线数据总线数据→0计数器CR数据总线数据→1计数器CR数据总线数据→2计数器CR数据总线数据→控制口数据总线高阻状态数据总线高阻状态D0~D7:8位,双向,三态数据线,用来与系统数据总线相连;:读信号,输入,控制8253将数据或状态信息送给CPU;:写信号,输入,控制CPU将数据或控制信息送到8253。10.2.38253的控制字8253的控制字格式如图10.4所示。控制字分为4个功能段,设定计数方式段、设定工作方式段、写入/读取初值格式段和计数器选择段(相当于特征位)。图10.48253命令字格式

SC1、SC0:计数器选择位。决定控制字是哪一个计数器的控制字。SC1:SC0=11B时,在8253中没有使用,在8254中作为回读控制命令。RL1、RL0:设置数据读/写格式位。8253的计数寄存器CR、计数单元CE和输出锁存器OL都是16位的,在写初值时可以使用其中的8位,需要指明高8位还是低8位,也可以使用16位,必须先低8位后高8位。在读取计数值时,可令RL1、RL0=00B,先将写控制字时的计数值锁存OL,然后再读取。M2、M1、M0:设置计数器工作方式位。每个计数器都可以通过控制命令设置成6种工作方式之一。BCD:用于选择每个计数器的计数制。在二进制计数时,计数初值的范围是0000H~FFFFH,其中0000H是最大值,代表65536。在BCD码计数时,计数初值的范围是0000~9999,其中0000是最大值,代表10000。10.2.48253的工作方式8253的每个计数器都有6种工作方式,这6种方式的主要区别是:OUT输出的波形不同,计数过程中GATE信号对计数操作的影响不同,启动计数的触发方式不同等。6种不同的工作方式如下。1.方式0—计数结束时中断方式(InterruptonTerminalCount)方式0的工作时序如图10.5所示。图中,CW表示8253的控制字,LSB表示低8位计数值。如果是16位计数器,则还有高8位计数值MSB。图10.5方式0波形图

(1)计数过程当写入方式0控制字后,OUT立即变为低电平,并且在计数过程中一直维持低电平。若GATE=1,写入初值后,在信号上升沿之后的下一个CLK脉冲计数值装入计数器,并开始计数,计数器减到零时,OUT输出变为高电平,且一直保持到该通道重新装入计数值或重新设置工作方式为止,此信号可用于申请中断。按方式0计数时,计数器只计一遍。(2)GATE信号的影响门控信号GATE可以用来控制计数过程,GATE为高电平,允许计数;GATE为低电平,暂停计数;当GATE重新为高电平时又恢复计数。(3)新的初值对计数过程的影响方式0是写一次计数值,计数一次,计数器不会自动重装初值重新开始计数。如果在计数过程中写入新的计数初值,则在写入新值后的下一个时钟下降沿计数器将按新的初值计数,即新的初值是立即有效的。8253写计数值是由CPU的信号控制的,在信号的上升沿,计数值被送入对应计数器的计数值寄存器,在信号上升沿之后的下一个CLK脉冲才开始计数。如果设置计数初值N,输出OUT是在写入命令执行后,第N+1个CLK脉冲之后,才变为高电平的。后面的方式1、2、4、5也有同样的特点。2.方式1—可编程单稳态触发器(ProgrammableOne―short)图10.6方式1波形图

这种方式由外部门控信号GATE上升沿触发,使输出端变为低电平,产生一个单拍负脉冲信号,脉冲宽度由计数值决定。(1)计数过程写入控制字后,OUT输出为高电平。写入计数初值N后,计数器并不开始计数,而要等到GATE上升沿后的下一个CLK输入脉冲的下降沿,OUT输出变低,计数才开始。计数结束时,OUT输出变高,从而产生一个宽度为N个CLK周期的负脉冲。(2)GATE信号的影响方式1中GATE信号有两个方面的作用:

第一,在计数结束后,若再来一个GATE信号上升沿,则下一个时钟周期的下降沿又从初值开始计数,而不需要重新写入初值,即门控信号可重新触发计数;第二,在计数过程中,若来一个门控信号的上升沿,也在下一个时钟下降沿从初值起重新计数,即终止原来的计数过程,开始新的一轮计数。(3)新的初值对计数过程的影响如果在计数过程中写入新的初值,不会立即影响计数过程。只有下一个门控信号到来后的第一个时钟下降沿,才终止原来的计数过程,按新值开始计数。若计数结束前没有GATE触发信号,则原来计数过程正常结束。即新的初值下次有效。3.方式2—速率发生器、分频器(RateGenerator)方式2的工作波形如图10.7所示。图10.7方式2波形图

这种方式的功能如同一个N分频计数器,输出是输入时钟按照计数值N分频后的一个连续脉冲。(1)计数过程写入控制字后的时钟上升沿,输出端OUT变成高电平。若GATE为高电平,写入计数初值后的第一个时钟下降沿开始减1计数。减到1时,输出端OUT变为低电平。减到0时,输出OUT又变成高电平,从初值开始新的计数过程,即方式2能自动重装初值,输出固定频率的脉冲。因此若装入计数初值为N,则OUT引脚上每隔N个时钟脉冲就输出一个负脉冲,其频率为输入时钟脉冲频率的1/N,故方式2也称为分频器。(2)GATE信号的影响在方式2中,GATE信号为低电平终止计数,而由低电平恢复为高电平后的第一个时钟下降沿重新从初值开始计数。由此可见,GATE一直维持高电平时,计数器方能作为一个N分频器。(3)新的初值对计数过程的影响如果在计数过程中写入新的初值,且GATE信号一直维持高电平,则新的初值不会立即影响当前的计数过程,但在计数结束后的下一个计数周期将按新的初值计数,即新的初值下次有效。4.方式3—方波发生器(SquareWaveGenerator)方式3的工作波形如图10.8所示。该方式与方式2相类似,只是OUT输出的是对称方波(计数初值N为偶数)或近似对称方波(计数初值N为奇数)。图10.8方式3波形图

(1)计数过程方式3的计数过程按计数初值的不同分为两种情况:①计数初值为偶数。写入控制字后的时钟上升沿,输出端OUT变成高电平。若GATE=1,写入计数初值后的第一个时钟下降沿开始减1计数。减到N/2时,输出端OUT变为低电平;减到0时,输出端OUT又变成高电平,并重新从初值开始新的计数过程。可见,输出端OUT的波形是连续的完全对称的方波,故称方波发生器。②计数初值为奇数。写入控制字后的时钟上升沿,输出端OUT变成高电平。若GATE=1,写入计数初值后的第一个时钟下降沿开始减1计数,减到(N+1)/2以后,输出端OUT变为低电平;减到0时,输出端OUT又变成高电平,并重新从初值开始新的计数过程。这时输出波形的高电平宽度比低电平宽度多一个时钟周期,为近似对称方波。(2)GATE信号的影响GATE高电平时,允许计数;GATE低电平时,禁止计数。如果在输出端OUT为低电平期间,GATE变低,则OUT将立即变高,并停止计数。当GATE变高以后,计数器重新装入初值并重新开始计数。(3)新的初值对计数过程的影响如果在计数过程中写入新的初值,而GATE信号一直维持高电平,则新的初值不会影响当前的计数过程,只有在计数结束后的下一个计数周期,才按新的初值计数。若写入新的初值后,遇到门控信号的上升沿,则终止现行计数过程,从下一个时钟下降沿重新开始计数。5.方式4—软件触发选通方式(SoftwareTriggeredStrobe)方式4的工作波形如图10.9所示。

图10.9方式4波形图

该方式是一种软件触发计数方式。即写入一次初值开始一次新的计数。(1)计数过程写入方式控制字后,OUT输出高电平。若GATE=1,写入初值的下一个CLK脉冲开始减1计数,计数到达0值(注意:不是减到1),OUT输出为低电平,持续一个CLK脉冲周期后再恢复到高电平。方式4之所以称为软件触发选通方式,是因为计数过程是由软件把计数初值装入计数寄存器来触发的,计数初值n仅一次有效。若要继续计数,则需重新装入初值。(2)门控信号的影响GATE为高电平时,允许计数;GATE信号变低,禁止计数,输出维持当时的电平,直到GATE变成高电平后继续计数,从OUT端输出一个负脉冲。(3)新的初值对计数过程的影响在计数过程中改变计数值,则在写入新值后的下一个时钟下降沿计数器将新的初值计数,即新值是立即有效的。6.方式5—硬件触发选通方式(HardwareTriggeredStrobe)方式5的工作波形如图10.10所示。

图10.10方式5波形图

该方式为硬件触发计数方式,即门控信号GATE上升沿触发计数。(1)计数过程写入控制字后,输出OUT即为高电平。写入计数初值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发。计数结束(计数器减到0)时输出一个持续时间为一个TCLK的负脉冲,然后输出恢复为高电平。直到GATE信号再次触发。(2)门控信号的影响若在计数过程中,又有一个门控信号的上升沿,则立即终止当前的计数过程,且在下一个时钟下降沿,又从初值开始计数,如果计数过程结束后,来一个门控上升沿,计数器也会在下一个时钟下降沿,又从初值开始减1计数,即门控信号上升沿任何时候到来都会立即触发一个计数过程。(3)新的初值对计数过程的影响如果在计数过程中写入新的初值,则新的初值不会立即影响当前的计数过程,只有到下一个门控信号上升沿到来后,才从新的初值开始减1计数。即新的计数初值在下一个门控信号上升沿触发后有效。7.工作方式小结8253六种工作方式都有自己的特点,下面就其特点作一个简单总结。(1)在六种工作方式中,只有方式0在写入控制字后OUT变为低电平,其它5种方式都在写入控制字后OUT输出高电平。(2)预置值N与输出波形的关系如表10-2所示。表10-28253初值N与输出波形的关系方式初值N与波形的关系0写入初值N后,经N+1个CLK输出变为高电平1输出一个宽度为N个CLK的负脉冲2每N个CLK脉冲,输出一个宽度为CLK周期的负脉冲3方波输出,周期为N个CLK周期,N为奇数时高电平比低电平多一个CLK周期4写入初值N后,计数结束后输出一个宽度为CLK周期的负脉冲5写入初值N后,由门控触发,计数结束后输出一个宽度为CLK周期的负脉冲表中“N+l”处,这里加1是考虑到预置的初值需要一个计数脉冲才能装入。当然,对其它方式初值的装入也都需要一个CLK脉冲,只是这一个CLK在输出中不必加以考虑,因为方式1要考虑的是单稳负脉冲的宽度,而方式2,3初值的装入只影响第一个周期。

(3)方式2,4,5有相同之处,即计数到终点,都输出宽度为1个CLK周期的低电平脉冲。主要不同点为:方式2为自动启动,重复进行计数及输出低电平脉冲的过程;方式4也为自动启动,但仅输出一个低电平脉冲;方式5需等待GATE上升沿的到来才开始计数,也只输出一个低电平脉冲。另外,方式2为减到1输出一个低电平脉冲,而方式4和5是减到0.(4)方式2和方式3也有相同之处,即都输出周期性信号,每当计数到终点,初始化时预置的初值都会被自动重新装入(减1计数器)。门控信号GATE在不同工作方式下的作用,如表10-3所示。方式GATE引脚输入状态所起的作用输出波形高电平低电平下降沿上升沿0允许禁止暂停继续计数过程中为低,计数值减为0时,变高(单次)1不影响不影响不影响开始或重新开始宽度为n个CLK的低电平(单次)2允许禁止停止重新开始周期为n个CLK,宽度1个CLK的负脉冲(重复)3允许禁止停止重新开始周期为n个CLK的方波(重复)4允许禁止停止重新开始减为0时输出宽度为1个CLK的负脉冲(单次)5不影响不影响不影响开始或重新开始减为0时输出宽度为1个CLK的负脉冲(单次)表10-3门控信号GATE作用表10.2.58253的应用举例1.8253的初始化要使用8253,必须首先对其进行初始化,初始化有两种方法:(1)对每个计数器分别进行初始化,先写控制字,后写计数值。如果计数值是16位的,则先写低8位(LSB)再写高8位(MSB)。(2)先写所有计数器的方式控制字,再写各个计数器的计数值。如果计数值是16位的,则先写低8位再写高8位。

例如:假设一个8253在某系统中的端口地址40H~43H,如果要将计数器0设置为工作方式3,计数初值为3060H,采用二进制计数法,则初始化方法如下:MOV AL, 36H ;计数器0,方式3,计数值16位,二进制计数OUT 43H, AL ;写入控制寄存器MOV AX, 3060H ;设置计数值OUT 40H, AL ;写低8位至计数器0MOV AL, AHOUT 40H, AL ;写高8位至计数器02.8253的读操作为了对计数器的计数值进行实时显示、实时检测或对计数值进行数据处理,用户就需要读回计数通道的计数值。8253只可以读回每个通道的计数值,它是由CPU访问每个通道的计数锁存器OL实现的。读出的端口地址和写入计数初值是同一个端口地址。如果是8位计数,则只需读1次,若是16位计数,则同一端口地址要读两次,第一次读入的是计数值的低8位,第二次读入的是计数值的高8位。读操作必须严格按控制字RL1、RL0确定的格式进行。8253有两种读计数值的方法:(1)读之前先停止计数这种方法是在读之前用GATE信号,控制计数器暂停计数,或由外部逻辑禁止所要读的计数通道的CLK脉冲输入。因为计数值是16位的,因此CPU要执行两次读入指令,还要把读入的数存入寄存器或存储单元中。两次读入必然有一段时间间隔,若计数器不停止计数,两次读入的计数值就不是同一个值,这就会使读入的计数值有误,所以,读之前必须先停止计数。以读计数器0为例,这种读入要求软件和硬件配合,即先使GATE为低电平,禁止计数器计数,再执行如下读入程序段(端口地址40H~43H):IN AL, 40H;读入计数器0的OL低8位MOV BL, ALIN AL, 40H;读入计数器0的OL高8位MOV BH, AL(2)读之前先送计数器锁存命令计数锁存命令是控制字RL1、RL0为00的一种特殊形式,所以写入的端口地址是控制字地址。再由锁存命令的SC1、SC0编码,决定所要锁存的计数器。锁存命令的低4位无效,可以为0000B。假设要读计数器2的计数值,则要执行如下程序段:MOV AL, 80H ;计数器2锁存命令OUT 43H,AL ;写入计数器2控制寄存器IN AL, 42H ;读计数器2输出锁存器OL低8位MOV BL, ALIN AL, 42H ;读计数器2输出锁存器OL高8位M0V BH, AL

从上面程序段可见,这种读计数值方法,必须先有一次送锁存命令的写操作,然后才能进行读操作。这就比第一种方法多用两条指令,但却省去对硬件配合的要求。当执行完OUT指令后,计数值被锁存在OL内。每个计数器都有一个16位的计数输出锁存器OL,分别锁存计数值的高8位和低8位。当没有接到锁存命令之前,在计数器的计数过程中,每个计数器的计数值输出锁存器随计数单元CE计数值的变化而变化。当接到锁存命令后,OL中的计数值就被锁存住了,不再随计数单元变化。锁存器中的数值一直保存到数据被读走或对计数器重新编程为止。

当读走OL中的数据或重新编程后,计数输出锁存器解除锁存状态,又开始随计数单元的计数值变化。由于有对计数值锁存的功能,读计数值时,可以不停止计数器的计数。CPU可以在任何时刻先送锁存命令再读计数值,而对计数单元的计数没有任何影响。显然送完锁存命令之后不管什么时候读计数值,读到的总是发出锁存命令那个时刻的计数值。每次读计数值之前都必须先送锁存命令。如果读之前使用了两次锁存命令,则第二个命令是无效的。读入的计数值是执行第一次锁存命令时所锁存的计数值。补充例题例1.在以8086为核心的系统中,扩展一片8253芯片,要求通道0每个2ms输出一个负脉冲,其工作频率为2MHZ,8253与8086总线连接图如下。完成通道初始化程序。1)由分析可知,8253的端口地址为0C0H-0C6H,只占偶地址。由于题目要求每个2ms输出一个负脉冲,选择工作方式2.2)计算计数初值。设定时时间为t,通道时钟频率为f,计数初值为N,则N=t*f=2*10-3*2*106=4000.3)初始化编程确定控制字00110100B=34H确定端口地址:通道00C0H,控制端口0C6HMOVAL,34HOUT0C6H,AL;写控制方式字MOVAX,4000;将计数初值送AXOUT0C0H,AL;先写低8位,写入通道0MOVAL,AHOUT0C0H,AL;再写高8位,写入通道0例2.在以8086为核心的系统中,扩展一片8253芯片,要求通道0对外部脉冲计数,记满400个脉冲后向CPU发出一个中断请求,端口地址为80H、82H、84H、86H,完成软硬件设计。分析1)完成硬件设计。如果用译码器Y0作为8253的片选,当A7为1,A6A5A4A3A0均为0且M/IO为低时,译码器工作,依据给出的8253地址,可分析出8253与8086总线系统连接图如下所示。2)选择工作方式。根据题目要求,选择通道0工作方式为0.计数初值为400,确定控制字为00110000B=30H初始化程序如下:MOVAL,30HOUT86H,ALMOVAX,400OUT80H,ALMOVAL,AHOUT80H,AL例3.如果在例2的基础上,有要求使用通道2输出30HZ的方波,通道的工作时钟为2MHZ,则软硬件设计如何修改?分析此时通道2应工作在方式3,方波周期t=1/30HZ=33ms。因此,计数初值N=33ms*2MHZ=66000>65536,超出了16位计数器的计数范围,也就是说,一个通道无法完成这样长的定时工作,怎么办?

为此,可采用多个通道共同完成(也称为计数器的级联或串联),第一通道的输出OUT作为第二级通道的CLK输入,第二级通道的输出OUT作为第三级通道的CLK输入,……,最后一级的OUT作为最终输出结果。其中,前几级均采用方式3,最后一级采用满足题目要求的工作方式。

究竟需要多少级则取决于N的大小。可以将N分解为几个数的乘积,每一个数均小于65536,有几个数就需要几个通道,每个数就是相应通道的计数初值。对本例来讲,可以把N分解为N=66*1000,因此需要2个通道,通道1采用方式3,计数初值为66,通道2采用方式3,计数初值为1000.连接电路图如下图所示。芯片端口地址为80H—86H,通道1控制字为01010110B=56H,通道2控制字10110110B=0B6H初始化程序:MOVAL,56HOUT86H,ALMOVAL,66OUT82H,AL;只写低8位,写入通道1MOVAL,0B6HOUT86H,ALMOVAX,1000OUT84H,AL;先写低8位,写入通道2MOVAL,AHOUT84H,AL;再写高8位,写入通道23.8253在IBMPC/XT机的应用在PC/XT机中用了一片8253,如图10.11所示。图10.118253在IBM-PC/XT机的应用的示意图

三个计数器的使用情况如下: 计数器0(CNT0)作软时钟的时间基准。程序设置CNT0为方式3,输出方波的周期约为55

ms(54.925493

ms),该信号送到中断控制器8259A的IR0端。因此,每隔55

ms产生一次中断请求。在中断服务程序中对时间基准信号进行计数,修改用来表示时间的相应内存单元(计满一秒,秒加1;计满60秒,分加1,秒清0。如次类推)。计数器1(CNT1)作动态RAM的刷新定时。程序设置CNT1为方式2,每隔15.084μs产生一个窄脉冲输出信号,请求执行动态RAM的刷新操作(刷新一行),这样可保证在2

ms内将全部单元刷新一遍。CNT1的输出信号送往DMA控制器8237A通道0的DMA请求输入端。当通道0执行DMA操作时,对动态RAM进行刷新。计数器2(CNT2)也设置成方式3,输出的方波送到扬声器。用程序设定CNT2输出波形的频率和延续时间就能控制扬声器的音调和发音长短。在PC/XT机中8253的CNT0、CNT1、CNT2和控制字口的地址分别是40H、4lH、42H和43H。这三个计数器在系统中的初始化程序如下:(1)计数器0用于定时中断(约55ms)MOV AL, 36H ;计数器0,方式3,写两个字节,二进制计数OUT 43H, AL ;控制字送控制字寄存器MOV AL, 0 ;计数值为最大值OUT 40H, AL ;写低8位OUT 40H, AL ;写高8位(2)计数器1用于定时(15μs)DMA请求MOV AL, 54H ;计数器1,方式2,只写低8位,二进制计数OUT 43, ALMOV AL, 12H

温馨提示

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

评论

0/150

提交评论