第12章可编程定时、计数器及其应用_第1页
第12章可编程定时、计数器及其应用_第2页
第12章可编程定时、计数器及其应用_第3页
第12章可编程定时、计数器及其应用_第4页
第12章可编程定时、计数器及其应用_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

第12章

可编程定时器/计数器及其应用本章主要内容1.计算机中定时、计数的基本技术;2.可编程计数器/定时器8253的结构及工作方式;3.8253的编程应用。12.1概述实现定时的三种方法:1.软件定时

由CPU执行指令序列所花费的时间来构成一定的时间间隔,从而达到定时的目的。例如:

MOVCX,××××HHERE:LOOPHERE优点:不需要专门的硬件设备。缺点:浪费了宝贵的CPU资源。2.不可编程的硬件定时

时序波形

稳态td触发信号

暂稳态单稳态电路3.可编程计数器/定时器可用软件的方法(通过初始化编程)设定或调整定时范围。典型产品:ZilogZ80-CTCIntel

8253(8254)12.2可编程计数器/定时器825312.2.18253的主要功能(1)具有三个独立的16位计数通道;(2)每个计数通道可按二进制或二-十进制计数;(3)每个计数通道的计数速率可达2MHz;(4)每个计数通道有六种工作方式;(5)全部输入输出都与TTL电平兼容。12.2.28253的结构8253的内部结构框图如图12.1所示。由图可见,它由与CPU的接口、内部控制电路以及三个计数器通道所组成。数据总线缓冲器读/写逻辑控制字寄存器D7~D0计数器0计数器1计数器2RDWRA0A1CS内部总线CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2图12.18253内部结构框图1.数据总线缓冲器这是8253与CPU的数据总线(D7~D0)连接的8位双向三态缓冲器。

CPU用输入输出指令对8253进行读写操作时的所有信息都通过这个缓冲器传送。2.读/写逻辑

这是8253内部操作的控制电路,它从系统控制总线上接收输入信号,然后转换成8253内部操作的各种控制信号。3.控制字寄存器当地址信号A1和A0都为1时,访问控制字寄存器。控制字寄存器从数据总线上接收CPU送来的控制字,并由控制字的D7、D6两位的编码决定控制字写入哪个通道的控制寄存器中去。由寄存在每个通道内的控制寄存器的内容决定该通道的工作方式,选择计数器是按二进制还是BCD数计数,并确定每个计数器初值的写入顺序。4.计数器0、计数器1、计数器2这是三个计数器/定时器通道,每一个都由16位的可设置计数初值的减法计数器构成。三个通道的操作是完全独立的。每个通道都有两个输入引脚CLK和GATE以及一个输出引脚OUT。从编程的角度看,8253的结构框图如图12.2所示。

数据总线地址译码RDWRIO/MVCCGNDCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7~D0RDWRCSA1A0控制寄存器(8位)高8位低8位高8位低8位计数器0高8位低8位计数初值寄存器(CR)计数执行部件(CE)输出锁存器(OL)计数器1计数器2图12.28253计数通道结构

“控制寄存器”及“计数初值寄存器(CR)”可由CPU写入;“输出锁存器(OL)”可由CPU读出。12.2.38253的引脚8253的引脚如图12.3所示。8253D7D6D5D4D3D2D1D0CLK0OUT0GATE0GND123456789101112242322212019181716151413VccWRRDCSA1A0CLK2GATE2OUT2CLK1GATE1OUT112.38253的引脚图12.2.48253的工作方式8253的每个通道均可以通过编程选择6种工作方式之一:1.方式0——计数到零产生中断请求

(InterruptonTerminalCount)方式0的操作时序图如图12.4所示。CLKGATE(高)01234CWN=4WRN+1个OUT图12.4方式0的时序图方式0的主要特点是:计数器只计一遍而不能自动重复工作。当减1计数到零时,并不自动恢复计数初值重新开始计数,且OUT输出保持为高电平。只有CPU再次写入一个新的计数值(即使计数值相同也需再次写入),OUT才变为低电平,计数器按新写入的计数值重新开始计数。或者CPU重新对8253设置方式0控制字,它的OUT输出也可以立即变为低电平,并等再次写入计数初值后重新开始计数。(2)CPU向CR寄存器写入计数初值后的第一个CLK脉冲(即图中用斜线标出的那个脉冲),将CR的内容送入CE,从此之后计数器才开始减1计数。这第一个CLK脉冲不包括在减1计数过程中。如果设置计数初值为N,则输出OUT是在N+1个CLK脉冲之后才变为高电平。(3)在计数过程中,可由GATE信号控制暂停计数。当GATE变低时,计数暂停;当GATE变高后又接着计数。其工作波形如图12.5所示。CLKGATE12223N=3CWWROUT图12.5方式0计数过程中改变GATE信号0(4)在计数过程中也可改变计数值。在写入新的计数值后,计数器将立即按新的计数值重新开始计数,即改变计数值是立即有效的。当按新的计数值减1计数到0时,输出OUT变为高电平。其工作波形如图12.6所示。CLKGATE(高)12123CWN=3WROUT图12.6方式0计数过程中改变计数值0N=22.方式1—硬件可重复触发的单稳态触发器(Programmableone-shot)

方式1的时序图如图12.7所示。

CLKGATE图12.7方式1的时序图CWN=2WR112OUT020在方式1,当CPU输出控制字后(WR的上升沿),OUT输出变为高电平(若原为高电平,则保持为高电平);在CPU写入计数初值后,计数器并不开始计数,直至门控信号GATE上升沿(即门控触发信号)出现,并在其下一个CLK脉冲的下降沿,CR的内容送入CE,同时使OUT输出变为低电平,然后开始对随后的CLK脉冲进行减1计数。

在计数过程中,OUT一直维持为低电平,直至减1计数到0时,OUT输出变为高电平。即由于GATE上升沿的触发,使OUT输出端产生一个宽度为N个CLK周期的负脉冲。此后,若再次由GATE上升沿触发,则输出再次产生一个同样宽度的负脉冲。方式1的主要特点是:(1)若设置计数初值为N,则输出负脉冲的宽度为N个CLK脉冲周期。(2)当计数到零时,可再次由GATE上升沿触发,输出同样宽度的负脉冲,而不必重新写入计数初值。(3)在计数过程中(输出负脉冲期间),可由GATE上升沿再触发。并使计数器从计数初值开始重新作减1计数,减至0时,OUT输出变为高电平。其效果是使输出负脉冲的宽度比原来加宽了。(4)在计数过程中,CPU可改变计数初值,这时计数过程不受影响,计数到零后输出变高。当再次触发时,计数器才按新输入的计数值计数。即改变计数值是下次有效的。3.方式2——分频器(RateGenerator)在方式2,当CPU输出控制字后,OUT输出为高。在写入计数初值后,计数器将自动对输入时钟CLK计数。在计数过程中OUT输出为高,直至计数器减到1(注意,不是减到0)时,OUT输出变低,经过一个CLK周期,输出恢复为高,且计数器将自动重新开始计数。这种方式可作脉冲速率发生器或用来产生实时时钟中断信号。

方式2的时序图如图12.8所示。CLKGATE(高)23123CWN=3WROUT图12.8方式2时序图13方式2的主要特点是:

(1)不用重新设置计数值,通道能连续工作,输出固定频率的脉冲。如果计数初值为N,则每输入N个CLK脉冲,输出一个负脉冲。负脉冲宽度为1个CLK周期,重复周期为N倍的CLK周期。(2)计数过程可由GATE信号控制。当GATE信号变低时,立即暂停现行计数;当GATE信号又变高后,从计数初值开始重新计数。(3)如果在计数过程中,CPU重新写入计数值,则对于正在进行的计数无影响,而是从下一个计数操作周期开始按新的计数值改变输出脉冲的频率。4.方式3——方波发生器

(SquareWaveRateGenerator)方式3和方式2的工作情况类似,两者的主要区别是输出波形的形式。对于方式3,OUT输出是对称方波或基本对称的矩形波。即在一个计数周期内,若计数初值N为偶数,则OUT输出将有N/2个CLK周期为高电平,N/2个CLK周期为低电平,输出为对称方波,其周期为N个CLK周期;若N为奇数,则OUT输出将有(N+1)/2个CLK周期为高电平,(N-1)/2个CLK周期为低电平,输出为基本对称的矩形波,其周期也为N个CLK周期。

在方式3,当CPU设置控制字后,输出将为高,在写完计数初值N后计数器就自动开始计数,输出保持为高。当计数到N/2(或(N+1)/2)时,输出变低,直至计数到0,使输出变高。同时又重新装入计数值开始新的计数。计数过程周而复始重复进行。这种方式常用来产生一定频率的方波。方式3的时序图如图12.9所示。

CWN=4(N=5)GATE(高)24124OUT(N=4时UT(N=5时)图12.9方式3时序图WRCLK方式3的主要特点是:(1)若计数初值N为偶数,则输出波形是周期为N个CLK周期的对称方波;若计数初值N为奇数,则输出波形是周期为N个CLK周期的基本对称矩形波,其高电平持续时间比低电平持续时间多一个CLK周期。(2)如果在计数过程中,GATE信号变低,则暂停现行计数过程,直到GATE再次有效,将从计数初值开始重新计数。(3)如果要求改变输出方波的频率,则CPU可在任何时候重新写入新的计数初值,并从下一个计数操作周期开始改变输出方波的频率。5.方式4—软件触发选通

(SoftwareTriggeredStrobe)在方式4,当写入控制字后,OUT输出为高。当写入计数初值后计数器即开始计数(相当于软件触发启动),当计数到0后,输出变低,经过1个CLK周期,输出又变高。方式4不能自动重复计数,即这种方式计数是一次性的。每次启动计数都要靠重新写入计数值,所以称为“软件触发选通”。当8253工作于方式4时,可用作软件触发的选通信号发生器。方式4的时序图如图12.10所示。GATE(高)CLKWRCWN=30123OUT图12.10方式4时序图方式4的主要特点是:

(1)若设置计数初值为N,则在写入计数初值后的N+1个CLK脉冲,才输出一个负脉冲。负脉冲的宽度为1个CLK周期。(2)GATE为高时,允许计数;GATE为低时,禁止计数。所以,要实现软件启动,GATE应为高。(3)若在计数过程中改变计数值,则按新的计数值重新开始计数,即改变计数值是立即有效的。方式4可应用于这样一种情况:

CPU经输出端口发送并行数据给接收系统,经过一段时间延迟后,再发送一个选通信号,利用该选通信号将并行数据打入到接收系统的缓冲寄存器中。通过改变计数初值N,可以方便地调整发出选通信号的延迟时间。6.方式5——硬件触发选通

(HardwareTriggeredStrobe)

在方式5,设置了控制字后,输出为高。在设置了计数初值后,计数器并不立即开始计数,而是由门控信号GATE的上升沿触发启动。当计数到0时,输出变低,经过一个CLK周期,输出恢复为高,并停止计数。要等到下次门控GATE信号的触发才能再计数,即方式5的计数是一次性的。方式5的时序图如图12.11所示。

CLKGATE0123CWN=3WROUT图12.11方式5时序图方式5的主要特点是:(1)若设置计数初值为N,则在门控GATE上升沿触发后,经过N+1个CLK脉冲,才输出一个负脉冲。(2)若在计数过程中再次出现门控GATE触发信号,则将使计数器从计数初值开始重新计数,但OUT输出的高电平不受影响。(3)若在计数过程中改变计数值,只要在计数到0之前不出现新的门控触发信号,则原计数过程不受影响;等计数到0并出现新的门控发信号后,再按新的计数值计数。若在写入了新的计数值后,在未计数到0之前有门控触发信号出现,则立即按新的计数值重新开始计数。7.8253工作方式小结

(1)方式2(分频器)、方式4(软件触发选通)和方式5(硬件触发选通),它们的输出波形相同,都是宽度为1个CLK周期的负脉冲。

区别是,方式2是自动重复工作的,而方式4需由软件(设置计数值)触发启动,方式5需由门控GATE信号触发启动。

(2)方式5(硬件触发选通)与方式1(硬件触发单稳),触发信号相同,但输出波形不同.方式1输出为宽度是N个CLK周期的负脉冲(计数过程中输出为低);方式5输出为宽度是1个CLK周期的负脉冲(计数过程中输出为高)。(3)在6种工作方式中,只有方式0,在写入控制字后输出为低;

其余5种方式,都是在写入控制字后输出为高。(4)6种工作方式中的任一种方式,只有在写入计数初值后才能开始计数。方式0、2、3、4都是写入计数初值后,计数过程就开始了。方式1、5在写入计数初值后,需由外部GATE信号的触发启动,才能开始计数过程。(5)6种工作方式中,只有方式2(分频器)和方式3(方波发生器)为自动重复工作方式,其他4种方式都是一次性计数,要继续工作需要重新启动。12.2.58253的初始化编程1.内部寄存器的寻址8253有三个独立的计数器通道,每个通道可以被CPU访问的部件有:

8位的控制寄存器,它只能写入,不能读出;

16位的计数初值寄存器CR,它只能写入,不能读出;

16位的输出锁存器OL,它只能读出,不能写入。

8253芯片是否被选中,决定于片选信号CS,通常CS接自地址译码器输出。

一片8253占用四个连续的端口地址,分别对应于三个计数初值寄存器端口和一个控制寄存器端口。由输入信号A1和A0的四种编码来选择四个端口之一。每个通道都各自有独立的控制寄存器,但三个通道的控制寄存器都共用一个端口地址,即A1和A0都为1时的端口地址。它是三个通道共同使用的控制寄存器端口地址。

为了能够将每个通道的控制字写入它们各自的控制寄存器中,使用控制字的D7和D6的编码,来标志此控制字是写入哪个通道的控制寄存器中。

8253内部寄存器的寻址如表12-1所示。表12-18253内部寄存器的寻址

CSRDWRA1A0寄存器选择和操作01000写通道0计数初值寄存器CR001001写通道1计数初值寄存器CR101010写通道2计数初值寄存器CR201011写控制寄存器00100读通道0输出锁存器OL000101读通道1输出锁存器OL100110读通道2输出锁存器OL22.初始化编程顺序注意:必须按控制字D5,D4位规定的格式进行写入。

设置控制字写入计数初值3.8253的控制字SC1SC0RL1RL0M2M1M0BCD00通道001通道102通道211无效通道选择:00计数器锁存命令01只读/写计数器低8位10只读/写计数器高8位11先读/写计数器低8位

后读/写计数器高8位读/写格式:计数制:0二进制计数1十进制计数工作方式:000方式0001方式1x10方式2x11方式3100方式4101方式5图12.128253控制字格式需要说明的是:

当采用二进制计数时,如果是8位二进制计数(计数值≤256),则在8253初始化编程的传送指令“MOVAL,n”中,n可以写成任何进制数(二进制、十进制或十六进制)的形式;如果是16位二进制计数(计数值≤65536),一种方法是先把计算得到的十进制计数初值n转换成4位十六进制数(即16位二进制),然后分两次写入8253的指定端口。

另一种方法是先把该十进制计数初值n直接传送给AX,然后分两次写入8253指定端口,即:

MOVAX,nOUTPORT,AL;先写低8位(PORT为端口号)

MOVAL,AH

OUTPORT,AL;后写高8位当采用十进制(BCD码)计数时,必须在8253初始化编程中把计算得到的十进制计数初值n加上后缀H,以便在相应的传送指令执行后能够在AL(或AX)中得到十进制数n的BCD码表示形式。

例如n=50,则应按如下方式写入:

MOVAL,50H

OUTPORT,AL

如果n=1250,则需分两次写入,即:

MOVAL,50H

OUTPORT,AL;先写低8位

MOVAL,12H

OUTPORT,AL;后写高8位

也可按如下方法两次写入:

MOVAX,1250HOUTPORT,AL;先写低8位MOVAL,AHOUTPORT,AL;

后写高8位4.初始化编程举例例12.1

若用8253的计数通道1,工作在方式0,按8位二进制计数,计数初值为128,则初始化编程如下:

(1)确定通道控制字-------50H

(2)8位计数初值-----------80H设8253的端口地址为48H~4BH,则初始化程序段为:

MOVAL,50HOUT4BH,AL;设置通道1控制字MOVAL,80HOUT49H,AL;写通道1计数初值,只写低8位

例12.2

若用通道0,工作在方式1,按十进制(BCD码)计数,计数初值为2010,则初始化编程如下:(1)确定通道控制字------33H(2)计数初值低8位为10,高8位为20。若8253的端口地址同例1,则初始化程序段为:

MOVAL,33HOUT4BH,AL;设置通道0控制字MOVAL,10H

OUT48H,AL;写通道0计数初值低8位MOVAL,20HOUT48H,AL;写通道0计数初值高8位12.2.68253的读出操作

1.读之前先暂停计数2.读之前先发锁存命令12.38253的应用例12.4

8253用作脉冲信号发生器。

可用8253产生如图12.14(a)所示的周期性脉冲信号,其重复周期为5μs,脉冲宽度为1μs。

设CLK信号频率为2MHz。图12.148253用作脉冲信号发生器MOVAL,00010010B;设置计数器0为方式1(单稳),只写低8位,二进制计数OUT86H,ALMOVAL,02H;设置计数器0的计数初值为2OUT80HALMOVAL,01010100B;设置计数器1为方式2(分频器),只写低8位,二进制计数OUT86H,ALMOVAL,0AH;设置计数器1的计数初值为10OUT82H,AL例12.3

用8253实现生产流水线上的工件计数,每通过100个工件,扬声器便发出频率为1000Hz的音响信号,持续时间为5秒。设外部时钟频率为2MHZ。INTR(中断请求)+5V时钟2MHz8255APA0GATE1CLK1GATE0OUT08253CLK0OUT1驱动电路扬声器+5V光敏电阻工件光源图12.138253用于工件计数图12.138253用于工件计数INTR+5V设8253的端口地址为40H~43H,8255A的端口地60H~63H,则实现本例功能的程序段如下:主程序:

MOVAL,00010001B;8253计数通道0初始化:方式0,只写低8位,BCD计数.

OUT43H,ALMOVAL,99H;写计数通道0的计数初值

OUT40H,ALMOVAL,10000000B;8255A初始化:A口方式0输出

OUT63H,ALSTI;CPU开中断HERE:JMPHERE;等待中断中断服务程序:MOVAL,01H;8255A的PA0输出高电平,启动8253计数通道1工作OUT60H,ALMOVAL,01110111B;8253计数通道1初始化:先写低8位,后写高8位OUT43H,AL;方式3,BCD计数M

温馨提示

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

最新文档

评论

0/150

提交评论