...什么影响?当GATE=0时,哪几种计数方式会暂停计数?
发布网友
发布时间:2024-02-08 10:48
我来回答
共2个回答
热心网友
时间:2024-07-25 17:31
微机系统常常需要处理机和外设提供时间标记,或对外部事件进行计数。例如,分时系统的程序切换,向外设定时、周期性地输出控制信号,外部事件的发生次数达到规定值后产生中断,以及统计外部事件发生的次数等,因此,需要解决系统的定时问题。
微机系统中的定时,可分为两类:一类是计算机本身运行的时间基准――内部定时,因而使计算机每种操作都是按照严格的时间节拍执行的;另一类是外部实现某种功能时,在外设与CPU之间或外设与外设之间的时间配合――外部定时。前者,计算机内部定时,已由CPU硬件结构确定了,有固定的时序关系,无法更改;后者,外部定时,由于外设或被控对象的任务不同,功能各异,无一定模式,因此,往往需要用户自己设定。当然,用户在考虑外设和CPU时,不能脱离计算机的定时要求,即应以计算机的时序关系为依据来设计外部定时机构,以满足计算机的时序要求,这叫做时序配合。至于在一个过程控制或工艺流程或监测系统中,各个控制环节或控制单元之间的定时关系完全取决于被处理、加工、制造和控制的对象的性质,可以按各自的规律独立地进行设计。由于定时的本质是计数,把若干小片的计时单元累加起来,就获得一段时间,因此,我们把计数作为定时的基础来讨论。目前用于定时/计数的可编程集成电路的芯片种类很多,在IBM PC系列微机中使用Intel 8253系列定时/计数器(记作T/C),下面对其进行介绍。
7.3.1 可编程定时/计数器芯片8253(JAVA动画图说明)
1.外部特性与内部逻辑
(1)8253的特点
①有3个独立的16位计数器;
②每个计数器均可按二进制或者BCD码计数;
③每个计数器的计数速率:8253(2MHZ)、8253-5(5MHZ)、8254(8MHZ)、8254-5(5MHZ)、8254-2(10MHZ);
④各计数器都有6种不同的工作方式(由程序设定);
⑤24只管脚,双列直插式,单+5V电源;
⑥所有输入/输出都与TTL兼容。
其引脚见图7-13。
各引脚的功能定义如下:
数据总线D0~D7:它们为三态输入/输出线,用于将8253与系统数据总线相连,是8253与CPU接口数据线,供CPU向8253读写数据、命令和状态信息。
读信号RD:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器读操作。
写信号WR:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器写操作。
地址译码线A1A0:这两根线接到系统地址总线的A1A0上。当CS=0,8253被选中时,A1A0用于选择8253内部寄存器,以便对它们进行读写操作。8253内部寄存器与地址码A1A0的关系如表7-3所示。
时钟信号CLK:CLK为输入信号。3个计数器,各有一独立的时钟输入信号,分别为CLK0、CLK1、CLK2。时钟信号的作用是在8253定时或计数工作时,每输入一个时钟信号CLK,便使定时或计数值减1。它是计量的基本时钟。
门选通信号GATE:GATE信号为输入信号。3个通道,每一个都有自己的门选通信号,分别为GATE0、GATE1、GATE2。GATE信号的作用是用来禁止、允许或开始计数过程。对8253的6种不同工作方式,GATE信号的控制不同(参见后面的表7-4)。
计数器输出信号OUT:OUT是8253向外输出信号。3个独立通道,每一个都有自己的计数器输出信号,分别为OUT0、OUT1、OUT2。OUT信号的作用是,计数器工作时,当定时或计数值减为0时,即在OUT线上输出OUT信号,用以指示定时或计数已到。这个信号可作为外部定时、计数控制信号引到I/O设备用来启动某种操作(开/关或启/停),也可作为定时、计数已到的状态信号供CPU检测,或作为中断请求信号使用。
(2)内部逻辑结构(JAVA动画图说明)
8253内部有6个模块,其结构框图如图7-14所示。
①数据总线缓冲器:数据总线缓冲器是一个三态双向8位寄存器,用于将8253与系统数据总线D7~D0相连。CPU通过数据总线缓冲器向8253写入数据、命令或从数据总线缓冲器读取数据和状态信息。
数据总线缓冲器有3个基本功能:向8253写入确定8253工作方式的命令;向计数寄存器装入初值;读出计数器的初值或当前值。
②读/写逻辑:读/写逻辑由CPU发来的读、写信号和地址信号,选择读出或写入寄存器,并且确定数据传输的方向:是读出还是写入。
③控制字寄存器:控制字寄存器接受CPU送来的控制字。这个控制字用来选择计数器及相应的工作方式。控制字寄存器只能写入,不能读出,其内容将在后面讨论。
④计数器:82533个独立的计数通道,每个通道的内部结构完全相同,如图7-15所示。该图表示计数通道由16位减1计数器、16位计数初值寄存器和16位输出锁存器组成。初始化时,首先是将计数通道装入的计数初值送到计数初值寄存器中保存,然后送到减1计数器。计数器启动后(GATE允许),在时钟脉冲CLK的作用下,进行减1计数,直至计数值减到0,输出OUT信号,计数结束。计数初值寄存器的内容,在计数过程中保持不变。因此,若要了解计数初值,则可从计数初值寄存器直接读出。而如果要想知道计数过程中的当前计数值,则必须将当前锁存后,从输出锁存器读出,不能直接从减1计数器中读出当前值。
2.读写操作及编程命令
CPU对8253芯片的读写操作有以下3种情况:
(1)写操作――芯片初始化
芯片加电后,其工作方式是不确定的,为了正常工作,要对芯片进行初始化。初始化的工作有两点:一是向控制寄存器写入方式控制字,以选择计数器(三个中之一个),确定工作方式(六种方式之一),指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD码或二进制码);二是向已选定的计数器按方式控制字的要求写入计数初值。
工作方式命令字的格式如下:
①D7D6(SC1SC0):用于选择计数器。其中:
SC1SC0=00――选择0号计数器 SC1SC0=01――选择1号计数器
SC1SC0=10――选择2号计数器 SC1SC0=11――非法
②D5D4(RL1RL0):用来控制计数器读/写的字节数(1或2个字节)及读写高低字节的顺序。其中:
RL1RL0=00――为一特殊命令(即锁存命令),把由SC1SC0指定的计数器的当前值锁存在锁存寄存器中,以便随时去读取它
RL1RL0=01――仅读/写一个低字节
RL1RL0=10――仅读/写一个高字节
RL1RL0=11――读/写2个字节,先是低字节,后是高字节
③D3~D1(M2~M0):用来选择计数器的工作方式。其中:
M2M1M0=000――方式0 M2M1M0=011――方式3
M2M1M0=001――方式1 M2M1M0=100――方式4
M2M1M0=010――方式2 M2M1M0=101――方式5
④D0(BCD):用来指定计数器的码制,是按二进制数还是按二-十进制数计数。其中:
BCD=0(二进制) BCD=1(二-十进制)
例如,选择2号计数器,工作在方式2,计数初值为533H(2个字节),采用二进制计数,其程序段为:
TIMER EQU 040H ;0号计数器端口地址
MOV AL,10110100B ;2号计数器的方式控制字
OUT TIMER+3,AL ;写入控制寄存器
MOV AX,533H ;计数初值
OUT TIMER+2,AL ;先送低字节到2号计数器
MOV AL,AH ;取高字节
OUT TIMER+2,AL ;后送高字节到2号计数器
(2)读当前计数值――锁存后读操作
在事件计发器的应用中,需要读出计数过程中的计数值,以便根据这个值作计数判断。为此,8253内部逻辑提供了将当前计数值锁存后读操作功能。具体作法是,先发一条锁存命令(即方式控制字中的RL1RL0=00),当前计数值锁存到输出锁存器;然后,执行读操作,即可得到锁存器的内容。
例如,要求读出并检查1号计数器的当前计数值是否是全“1”(假定计数值只有低8位),其程序段为:
L:MOV AL, 01000000B ;1号计数器的锁存命令
OUT TIMER+3,AL ;写入控制寄存器
IN AL, TIMER+1 ;读1号计数器的当前计数值
CMP AL, 0FFH ;比较
JNE L ;非全“1”,再读
HLT ;是全“1”,暂停
(3)读装入的计数值――直接读操作
8253内部还提供了一种功能,使程序员能在不干扰实际计数过程的情况下,读出装入的计数值,这只需对选定的计数器发现IN指令即可。分两次读,第1次从计数寄存器读出装入计数值的低字节,第2次读出高字节。但要注意的是:为了保证能稳定地读出装入计数值,所选的计数器的工作方式必须能被GATE电平输入禁止或者能禁止时钟输入的外部逻辑所禁止。
3.工作方式及特点
8253芯片的每个计数通道都有6种工作方式可供选用。区分这6种工作方式的主要标志有3点:一是输出波形不同;二是启动计数器的触发方式不同;三是计数过程中门控信号GATE对计数操作的影响不同。现结合各种操作实例,分别讨论不同工作方式的特点及编程方式。例如8253的3个计数器及控制器的端口地址分别是304H、305H、306H和307H。
(1)方式0――计数结束时中断
方式0有如下3个特点:
①当向计数器写完计数值时,开始计数,相应的输出信号OUT就开始变成低电平。当计数器减到零时,OUT立即输出高电平。
②当门控信号GATE为高电平时,计发器工作;当GATE为低电平时,计数器停止工作,其计数值保持不变。
③在计数器工作期间,如果重新写入新的计数值,则计数器将按新写入的计数值重新工作。
方式0的上述工作特点可用如图7-16所示的时序来表示。
(2)方式1――程序可控单稳
方式1为可编程的单稳态工作方式。此方式设定后,输出OUT就变成高电平;写入计数值后,计数器并不立即开始工作,直到门控信号GATE出现之后的一个时钟周期的下降沿,才开始工作,使输出OUT变成低电平。计数值回零后,输出变高,见图7-17中的①。
在计数器工作期间,当GATE又出现一个负脉冲的上升沿时,计数器重新装入原计数初值并重新开始计数,见图7-17中的②。如果工作期间对计数器写入新的计数值,则要等到当前的计数值计满回零且门控信号再次出现上升沿后,才按新写入的计数值开始工作,见图7-17中的③。
程序中把T2设定成仅读/写低8位计数初值,高8位自动补0。
(3)方式2――频率发生器
方式2是一种具有自动装入时间常数的N分频器。其工作特点如下:
①计数器计数期间,输出OUT为高电平,计数器回零后,输出为代电平并自动重新装入原计数值,低电平维持一个时钟周期后,输出又恢复高电平,并重新作减法计数。
②在计数器工作期间,如果向此计数器写入新的计数值,则计数器仍按原计数值计数,直到计数器回零并在输出一个时钟周期的低电平之后,才按新写入的计数值计数。
③门控信号GATE为高电平时允许计数。若在计数期间,门控信号变为低电平,则计数器停止计数,待GATE恢复高电平后,计数器将按原设定的计数值重新开始计数,工作时序如图7-18所示。
(4)方式3――方波频率发生器
工作方式3与工作方式2基本相同,也具有自动装入时间常数的能力,不同之处在于:
①工作在方式3对OUT引脚输出的不是一个时钟周期的低电平,而是占空比为1:1或近似于1:1的方波,当计数初值为公里数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。
②当计数初值为奇数时,在前一半加1的计数过程中,输出为高电平,后一半减1的计数过程中为低电平。例如,若计数初值设为5,则在前3个时钟周期中,引脚OUT输出高电平,而在后2个时钟周期中则输出低电平。8253的方式2和方式3都是最为常用的工作方式,工作时序如图7-19所示。
(5)方式4――软件触发
方式4是一种由软件启动的闸门式计数方式,即由写入计数值触发工作。其特点是:
①此方式设定后,输出OUT就开始变成高电平;写完计数值后,计数器开始计数,计数完毕,计数回零结束时,输出变为低电平;低电平维持一个时钟周期后,输出又恢复高电平,但计数器不再计数,输出也一直保持高电平不变。
②门控信号GATE为高电平时,允许计数器工作;为低电平时,计数器停止计数。在其恢复高电平后,计数器又从原设定的计数值开始作减1计数,工作时序如图7-20所示。
③计数工作期间,若向计数器写入新的计数值,则不影响当前的计数状态,仅在当前计数值计完回零时,计数器才接新写入的计数值开始计数,一旦计数完毕,计数器将停止工作。
(6)方式5――硬件触发
方式5的工作特点在于由外部上升沿触发计数器,即:
①在工作方式5下,写入计数初值后,计数器并不立即开始计数,而要由门控信号出现的上升沿启动计数。计数器计数回零后,将在输出一个时钟周期的低电平后恢复高电平。
②在计数过程中(或者计数结束后),如果门控再次出现上升沿,则计数器将从原设定的计数初值重新计数。其他特点基本与方式4相同,工作时序如图7-21所示。
(7)6种工作方式的比较(JAVA动画图说明)
上面分别说明了8253六种方式的工作过程,现在来对比分析这6种方式的特点和彼此之间的差别,以便在应用时,有针对性地加以选择。
①方式0(计数结束中断)和方式1(可控单稳)
这两种方式的输出波形类似,它们的OUT在计数开始变为低电平,在计数过程中保持低电平,计数结束立即变为高电平,此输出作为计数结束的中断请求信号,或作单稳延时,两者均无自动重装能力。它们的不同点主要在于启动计数器的触发信号,方式0由写信号WR的上升沿触发,方式1由门控信号GATE上升沿触发。
②方式2(频率发生器)和方式3(方波发生器)
这两种方式共同的特点是具有自动再加载(装入)能力。即减1至0时初值寄存器的内容又被自动装入减1计数器继续计数,于是OUT可输出连续的波形。输出信号的频率都是(fCLK/初值)。两者的区别在于:方式2在计数过程中输出高电平,而在每当减1至0时输出宽度为1TCLK的负脉冲。方式3是在计数过程中,输出1/2初值×TCLK(若初值为奇数,则是1/2(初值+1)×TCLK)的高电平,然后输出1/2初值×TCLK(若初值为奇数,则是1/2(初值-1)×TCLK)的低电平,于是,OUT的信号是占空比为1:1的方波(或近似方波)。
③方式4(软件触发延时选通)和方式5(硬件触发延时选通)
这两种方式的OUT输出波形相同,在计数器过程中OUT为高电平,在计数结束后OUT输出一个宽度为1 TCLK的负脉冲,这个脉冲可作为在延时(初值×TCLK)后的选通脉冲。它们无自动重新装入能力。两者的区别是计数启动的触发信号不同,前者由写信号WR启动计数;后者从GATE的上升沿开始计数。
从以上对比分析可知,一般,方式0、1和方式4、5选作计数器用(输出一个电平或一个脉冲),而方式2、3选作定时器用(输出周期脉冲或周期方波)。
<<back top next>>
上翻 下翻
热心网友
时间:2024-07-25 17:37
友情提示:)))):请在15天内为您的问题选择满意答案,要不服务器扣除10分
。积分能换Q币哦:)
...