微型计算机原理与接口技术第8章_第1页
微型计算机原理与接口技术第8章_第2页
微型计算机原理与接口技术第8章_第3页
微型计算机原理与接口技术第8章_第4页
微型计算机原理与接口技术第8章_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

第八章可编程计数/定时器8253/8254及其应用

定时/计数的基本概念在微机系统中,常常需要为CPU和外部设备提供时间基准以实现定时或延时控制。如定时中断、定时检测、定时扫描等,或对外部事件进行计数并将计数结果提供给CPU。实现定时或延时控制有三种方法:软件定时、不可编程硬件定时器、可编程硬件定时器。软件定时让CPU执行一段程序段,由于执行每条指令都需要时间,因此执行一个程序段就需要一定的时间,通过改变指令执行的循环次数就可以控制定时时间。这种软件定时方式计时不够准确,尤其是当CPU内部有多个并行处理时更为明显。同时,由于它占用了CPU,因而降低了CPU的利用率。不可编程的硬件定时器采用中小规模器件(如NE555),外接定时元件——电阻和电容。这种方式实现的定时电路简单,通过改变电阻和电容可使定时在一定范围内变化。但是,这种定时电路在连接好硬件后,定时值就不易用软件来控制和改变,由此产生了可编程的硬件定时器电路。所谓可编程的硬件定时器电路就是其工作方式、定时值和定时范围可以很方便地由软件来确定和改变。通常,一个可编程定时/计数器的主要用途有:①以均匀分布的时间间隔中断分时操作系统,以便切换程序。依所需时间间隔,设置计数器的时间常数,在一外部脉冲驱动下进行减1计数,计数值为0时,产生输出信号,供系统使用。

②向I/O设备输出精确的定时信号,该信号的周期由程序控制。③用作可编程波特率或速率发生器。产生精确的时间间隔,形成各种脉冲序列,灵活性强。④检测外部事件发生的频率或周期。⑤统计外部事件处理过程中某一事件发生的次数。⑥在定时或计数达到编程规定的值之后,产生输出信号,向CPU申请中断。如系统的日历时钟,动态存储器的刷新,应用系统的定时中断、定时查询与检测等。8.18253工作原理3个独立的16位计数器通道每个计数器有6种工作方式按二进制或十进制(BCD码)计数8254是8253的改进型8253/8254的内部结构D7~D0计数器0控制字寄存器计数器1计数器2内部数据总线数据总线缓冲器读写控制逻辑RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT28.1.18253的内部结构和引脚信号计数器结构示意图预置寄存器GATECLKOUT减1计数器输出锁存器计数初值存于预置寄存器;在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令,锁定当前计数值计数器的3个引脚CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号8253引脚图8253的引脚功能8253的引脚如图所示。计数器0、1、2和控制字寄存器的低2位地址由A1、A0确定,A1、A0的值依次为00~11。8253的4个端口的操作情况如表所示。8253的计数器0、1、2各有3个引脚。不同计数器的相同定义的引脚,其功能也是相同的。CLK:计数脉冲输入端。计数器对该引脚的输入脉冲进行计数。如果CLK信号是周期精确的时钟脉冲,则具有定时作用。8253规定CLK端的输入脉冲周期不能小于380ns。GATE:门控输入端。这是控制计数器工作的一个外部信号。当GATE为低电平时,禁止计数器工作;当GATE为高电平时,允许计数器工作。GATE信号从计数开始到计数过程中都起作用。OUT:输出信号端。当计数器计数到零时,在OUT引脚上输出一个信号,该信号的波形取决于工作方式。(1)数据总线缓冲器。数据总线缓冲器是8253与CPU数据总线连接的8位双向三态缓冲器。CPU用输入/输出指令对8253进行读/写操作的所有信息都是通过这8条总线传送的。这些信息包括:CPU在初始化编程时写入8253的控制字、CPU向8253某一计数器写入的计数初值、CPU从8253某一计数读取的计数值。(2)读/写控制逻辑。读/写逻辑是8253内部操作的控制部分。当片选信号有效,即=0时,读/写逻辑才能工作。该控制逻辑根据读/写命令及送来的地址信息,决定三个计数器和控制字寄存器中哪一个工作,并控制内部总线上数据传送的方向。(3)计数器0、1、2。计数器0、1、2是3个16位减1计数器,它们互相独立,内部结构和功能相同。每个计数器有3根信号线,它们是时钟输入CLK、门控输入GATE和输出OUT。计数器从CLK端接收时钟脉冲或事件计数脉冲,在脉冲下降沿按照二进制或二—十进制从预置的初值开始进行减1计数。当计数值减到零时,从OUT端送出一个信号。计数器在开始计数和计数过程中,受到门控信号GATE的控制。在开始计数之前,必须由CPU用输出指令预置计数器的初值。在计数过程中,CPU可以随时用指令读取计数器的当前值。8253控制字的格式(4)控制字寄存器。在8253初始化编程时,由CPU向控制字寄存器写入控制字,以决定每个计数器的工作方式。此寄存器只能写入而不能读出。

控制字的功能是:选择计数器,确定对计数器的读/写格式,选择计数器的工作方式以及确定计数的数制。8253控制字的格式如图所示。

SC1、SC0:计数器选择位。这两位表示这个控制字是对哪一个计数器设置的。00——计数器0;01——计数器1;10——计数器2;11——非法选择。RW1、RW0:数据读/写格式选择位。CPU在对计数器写入初值和读取它们的当前值时,有几种不同的格式,由这两位来决定。00——将计数器当前值锁存于输出锁存器中,以便读出;01——只读/写计数器的低8位,写入时高8位自动设置为0;10——只读/写计数器的高8位,写入时低8位自动设置为0;11——对16位计数器进行两次读/写操作,低字节在前,高字节在后,两次操作的地址相同。M2、M1、M0:计数器工作方式选择位。8253的每个计数通道有6种不同的工作,工作方式由这3位决定。000——方式0;001——方式1;010——方式2;011——方式3;100——方式4;101——方式5。BCD:数制选择。8253的每个计数器有两种数制二进制和二—十进制,由这一位决定选择哪一种。BCD=0表示采用二进制计数,写入的初值范围为0000H~FFFFH,其中0000H是最大值,代表65536;BCD=1表示采用二—十进制计数,写入的初值范围为0000~9999,其中0000是最大值,代表10000。

8.1.2初始化编程步骤和门控信号的功能8253加电后的工作方式不确定,8253必须初始化编程,才能正常工作

写入控制字写入计数初值

门控信号的功能例:置计数器0在工作方式3,按二进制计数,计数初值200H。解:确定方式控制字为36H,实现程序如下:MOV AL,36HMOV DX,CtrlPortOUT DX,AL ;方式方式控制字为36H送端口MOV DX,Port0MOV AL,00H ;计数初值的低8位OUT DX,ALMOV AL,02H ;计数初值的高8位OUT DX,AL8253初始化编程SC1SC0RW1RW0M2M1M0BCD000011118253有6种工作方式,由方式控制字确定熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式每种工作方式的过程类似:⑴设定工作方式⑵设定计数初值〔⑶硬件启动〕⑷计数初值进入减1计数器⑸每输入一个时钟计数器减1的计数过程⑹计数过程结束8.1.38253的工作方式(1)方式0——计数结束时产生中断。当写入方式0控制字CW后,计数器输出端OUT立即变成低电平。当写入计数初值N后,若GATE为高电平,计数器开始计数。在计数过程中,OUT端一直维持为低,直到计数0(结束)时,OUT端变为高,向CPU发出中断请求。8253用作计数时,一般都工作在方式0。方式0的特点是:①计数器只计一遍数。当计数到0时,并不恢复计数初值,不开始重新计数,输出端OUT由低变高且一直保持为高。只有当写入一个新的计数初值后,OUT才变低,开始新的计数。②在计数过程中可改变计数值。如果计数器为8位(RW1RW0=01),在写入新的8位计数值后,计数器将按新的计数值重新开始计数。如果计数器为16位(RW1RW0=11),在写入第一个字节后,计数器停止计数,在写入第二个字节后,计数器按照新的数值开始计数。③在计数过程中,可由门控信号GATE控制暂停。当GATE=0时,计数器暂停计数;当GATE变为1后,就接着计数。④方式0的OUT信号在计数到0时由低变高,可作为中断请求信号。但由于在8253内部没有中断控制电路,因此在多中断源系统中需外接中断优先权排队电路和中断向量产生电路。方式0计数结束中断①②⑤④⑥GATEOUTCLK

031244方式0WR①设定工作方式②设定计数初值④计数值送入计数器⑤计数过程⑥计数结束(MODE0)CLOCKWRn#OUTPUT(中断)43210n=4WRm#OUTPUT(中断)GATEm=5543210方式0:计数结束时发中断(2)方式1——可程控的单脉冲。在设定工作方式1和写入计数初值后,OUT输出高电平,此时并不开始计数。当门控信号GATE变为高电平时,启动计数,OUT输出变低。在整个计数过程中,OUT都维持为低,直到计数到0时,输出变为高。因此,输出为一单脉冲,其低电平维持时间由装入的计数初值来决定。方式1的特点是:①当计数到0后,计数器可再次由外部启动,按原计数初值重新开始计数,输出单脉冲,而不需要再次送一个计数初值。②在计数过程中,外部可发出门控脉冲,进行再触发。这时不管原来计数到何值,计数器将重新开始计数,输出端仍保持低电平。③在计数过程中改变计数初值不影响本次计数过程。若门控信号再次被触发,则计数器才按新的计数值计数。比较方式0和方式1,有以下几点不同:①方式0设置计数初值后立即计数;方式1设置计数初值后不立即计数,直到有外部触发信号后才开始计数。②方式0在计数过程中能用门控信号暂停计数;方式1在计数过程中若有门控脉冲时不停止计数,而是使计数过程重新开始。③方式0在计数过程中改变计数初值时,原计数停止,立即按新的计数初值开始计数;方式1在计数过程中当改变计数初值时,现行计数不受影响,新计数初值在下次启动计数后才起作用。④方式0在一次计数结束后,必须重新设置计数初值才能再次计数,即计数初值只能使用一次,方式1的计数初值在一次计数过程完成后继续有效。

方式1可编程单拍脉冲①②⑤④⑥①设定工作方式②设定计数初值③③硬件启动④计数值送入计数器⑤计数过程⑥计数结束GATEOUTCLK

031244方式1WRWRn#GATE(TRIGGER)43210OUTPUT34210(MODE1)CLOCKGATE(TRIGGER)OUTPUT234方式1:可编程单稳电路(3)方式2——分频器。在这种方式下,CPU输出控制字后,计数器输出端为高电平。当写入计数初值后,计数器立即对CLK端的输入脉冲计数。在计数过程中输出端始终保持为高,直到计数器减为1时,输出变低。经过一个CLK周期,输出恢复为高,同时按照原计数初值重新开始计数。如果计数值为N,则在CLK端每输入N个脉冲后,就输出一个脉冲。因此,这种方式可以作为分频器或用于产生实时时钟中断。方式2的特点是:①不用重新设置计数初值,计数器能够连续工作,输出固定频率的脉冲。

②计数过程可由门控信号GATE控制。当GATE为0时,暂停计数。当GATE变为1后,下一个CLK脉冲使计数器恢复初值,重新开始计数。③在计数过程中可以改变计数初值,这对正在进行的计数过程没有影响。但当计数到1时输出变低,过一个CLK周期输出又变高,计数器将按新的计数值计数。所以对方式2改变计数初值时,在下一次计数有效。方式2频率发生器(分频器)03124GATEOUTCLK

4方式2031240312403124WRWRn#43210(3)OUTPUTGATE(RESET)OUTPUT(MODE2)CLOCKn=4n=3

0(4)3212100(3)3210(3)210(3)21方式2:可变频率脉冲发生器0(4)方式3——方波发生器。在方式3时,当CPU设置控制字后,输出为高电平。在写入计数初值后就开始计数,输出保持为高。当计数到一半计数初值时,输出变为低,直至计数到0,输出又变为高,重新开始计数。方式3与方式2的输出都是周期性的,它们的主要区别是:方式3在计数过程中的输出有一半时间为高电平,另一半时间为低电平。所以,若计数值为N,则方式3的输出为周期=(N×CLK周期)的方波。方式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脉冲来到时立即装入新的计数初值并开始计数。

方式3方波发生器03124GATEOUTCLK

4方式3031240312403124WR42210(4)OUTPUTn=4GATE(RESET)OUTPUTn=4n=4n=3

0(4)2103210(4)21331(MODE3)CLOCKOUTPUTn=53210(5)43210(5)430(5)43方式3:方波发生器0(5)方式4——软件触发的选通信号发生器。在这种方式下,当写入控制字后,输出端OUT变为高电平,以此作为初始电平。当写入计数初值后开始计数,称为软件触发。当计数到0后,输出变低,经过一个CLK周期,输出又变高,计数器停止计数。这种方式计数也是一次性的,只有在输入新的计数值后,才开始新的计数过程。若设置的计数初值为N,则是在写入了计数初值后经过(N+1)个CLK脉冲,才输出一个负脉冲。一般将此负脉冲作为选通信号。方式4的特点是:①当GATE=1时,允许计数;当GATE=0时,禁止计数。所以,要做到软件触发,GATE应保持为1。②在计数过程中,若改变计数初值,则按新的计数初值开始计数。这称为软件再触发。方式4软件触发选通信号GATEOUTCLK031244方式42233310WR(MODE4)CLOCKWRn#n=4OUTPUTn=401234443210WRn#

GATEOUTPUT方式4:软件触发选通(6)方式5——硬件触发的选通信号发生器。在这种方式下,当写入控制字后,输出端出现高电平作为初始电平。在写入计数初值后,计数器并不立即开始计数,而是要由门控脉冲的上升沿来启动计数,这称为硬件触发。当计数到0时,输出变低,又经过一个CLK脉,输出恢复为高。这样在输出端得到一个负脉冲选通信号。计数器停止计数后要等到下次门控脉冲触发,才能再进行计数。方式5的特点是:①若设置计数初值为N,则在门控脉冲触发后,经过(N+1)/2个CLK脉冲,才输出一个负脉冲。②在计数过程中,若GATE端又出现一个脉冲进行触发,则使计数器重新开始计数,但对输出状态没有影响。③若在计数过程中改变计数值,只要没有门控信号的触发,就不影响本次计数过程。当计数到0后,若有新的门控信号的触发,则按新的计数初值计数。方式5和方式4都产生选通脉冲。这两种方式的区别在于:方式4每次要靠软件设置计数初值后才能计数(软件触发),方式5的计数初值只需设置一次,但是每次计数要靠门控信号的触发(硬件触发);方式4软件更改计数初值后立即起作用,方式5软件更改计数初值后要有新的门控信号的触发才能起作用。方式5硬件触发选通信号GATEOUTCLK031244方式522333110WR(MODE5)CLOCKOUTPUT(n=4)0123443210GATE

GATEOUTPUT43方式5:硬件触发选通各种工作方式的输出波形方式0计数结束中断方式1可程控的单脉冲方式2频率发生器(分频器)方式3方波发生器方式4软件触发选通方式5硬件触发选通0N0N0N0/N110NN/2N/20/N0N01N01N01

数据采集系统在一个实际的数据采集系统中,要求每5秒采一个数,现场的主时钟的振荡频率为2.5MHz。解:若外部时钟为2.5MHz,则计数次数(计数初值)为 5/(1/2.5*106)=1.25*107一个计数器最大的计数次数为65536,所以必须采用二次计数器。用计数器0的输出OUT0接计数器1的输入时钟CLK1。 若计数器0(方式3)的计数初值为50000;则OUT0的输出脉冲频率为着(2.5*106)/(5*104)=50Hz。即周期为0.02s。为了每5秒产生一个脉冲输出,计数器1为分频器(方式2),计数次数为5s/0.02=250经以上分析,总结如下:8.28253的应用举例计数器0:方式3,输出50Hz脉冲,控制字36H,计数初值C350H计数器1:方式2,分频,控制字54H,计数初值FAH程序如下:MOV AL,36HMOV DX,CtrPortOUT DX,AL ;写计数器0方式3控制字MOV DX,Port0MOV AL,50HOUT DX,AL ;送低8位计数器值MOV AL,0C3HOUT DX,AL ;送高8位计数器值MOV AL,54HMOV DX,CtrPortOUT DX,AL ;写计数器1方式2控制字MOV AL,0FAHOUT Port1,AL ;送计数器1初值

8253工作在方式3下,输出是一个周期准确的方波,可以作为定时单位。如CLK0=1.1931816MHz,初值为最大值65536,则计数器0输出的方波频率为 f0=1.1931816MHz/65536=18.2Hz, 周期为T0=1/f0=54.945ms1天=24×60×60×1000ms/54.945ms=1572482(计时单位)=0017FE82H; 即计满1572482个计时单位,就是1天。 同理计满65520是1个小时,计满1092就是1分钟,计满18.2就是1秒钟。具体做法是8253的OUT0输出连到8259的IR0上。8253输出的方波每隔54.945ms申请一次中断,在中断服务程序中做双字变量的加1操作。当低字计到65536时,向高字进位,直至高字计到0017H,低字计到FE82H,就计到24小时。然后清零,开始第二天的计时。

用8253实现日时钟硬件连接如图所示。图中在内存开辟了两个字单元,低字TIMER-LO(40H:6CH)和高字TIMER-HI(40H:6EH)。发光二极管

现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为1MHz。要求利用8253做一个秒信号发生器,其输出接一发光二极管,以0.5秒点亮,0.5秒熄灭的方式闪烁指示。设8253的通道地址为80H~86H(偶地址)解:1、时间常数计算这个例子要求用8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为1MHz信号的周期为1微妙,而1Hz信号的周期为1秒,所以分频系数N可按下式进行计算:

由于8253一个通道最大的计数值是65536,所以对于N=1000000这样的大数,一个通道是不可能完成上述分频要求的。由于即取两个计数器,采用级联方式。2、电路

3、工作方式选择由于通道1要输出方波信号推动发光二极管,所以通道1应选工作方式3。对于通道0,只要能起分频作用就行,对输出波形不做要求,所以方式2和方式3都可以选用。这样对于通道0,我们取工作方式2,BCD计数;对于通道1,我们取工作方式3,二进制计数(当然也可选BCD计数)4、程序 moval,00110101b ;通道0控制字 out86h,al moval,00 ;通道0初始计数值 out80h,al moval,10h out80h,al moval,01110110b ;通道1控制字 out86h,almoval,0e0h ;通道1初始计数值,03E8H=1000BCD out82h,al moval,03h out82h,al计件系统。计件系统的功能就是记录脉冲的个数。

一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,PC机可以显示当前计数器的内容,当完成10000个工件记录后,系统发出1KHz信号推动喇叭发音通知用户。解:1、电路。需要两个通道,一个作为计数,选用通道0。另一个产生1KHz信号,选用通道1。工作原理如下,传感器电路把物理事件转换为脉冲信号输入到通道0计数,当记录10000个事件后,通道0计数器溢出,GATE端输出高电平,这时通道1开始工作,产生1KHz信号推动喇叭发音。2、工作方式选择对于通道1,由于要产生1KHz信号,故选用工作方式3。对于通道0,要求初始计数值写入计数通道后,计数器就可以工作,则通道0的启动方式应是软件启动。另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式0和方式4,对于图所示方案,通道1的GATE信号由通道0的OUT信号产生,这个OUT信号应该是电平型的,所以通道0应选用方式0。3、时间常数N0=10004、程序(略)

IBMPC/XT与8253连接图8253在PC/XT机中的应用

三个计数器通道时钟输入CLK均从时钟发生器PCLK端经二分频得到,频率为1.19318MHz,周期为838ns。(1)计数器0—实时时钟。门控GATE0接+5V为常启状态。OUT0输出接8259A的IRQ0,用作XT中日时钟的中断请求信号。设定时/计数器0为方式3,计数值写入0,产生最大的计数初值65536,因此输出信号频率为1.19318MHz÷65536=18.206Hz,即每秒产生18.2次中断,或者说每隔55ms申请一次日时钟中断。其程序如下:MOVAL,36H;设定计数器0为

温馨提示

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

评论

0/150

提交评论