第9章计数器定时器_第1页
第9章计数器定时器_第2页
第9章计数器定时器_第3页
第9章计数器定时器_第4页
第9章计数器定时器_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、本章内容:n概述n可编程计数器/定时器8253n8253的应用在计算机系统中经常要用到定时信号:n微机系统中动态存储器的刷新定时n系统日历时钟的计时n喇叭的声源在计算机实时控制和处理系统中,计算机主机需要每隔一定的时间就对处理对象进行采样,再对获得的数据进行处理,这也要用到定时信号。定时的实现方法:n软件定时n不可编程的硬件定时n可编程定时器电路让计算机执行一个延迟程序段。通过正确地挑选指令和安排循环次数很容易实现软件定时。优点:节省硬件缺点:执行延迟程序期间,CPU一直被占用,降低了CPU的效率。可以采用小规模集成电路器件如555,外接电阻和电容构成。定时电路简单,而且通过改变电阻和电容,可

2、以使定时在一定的范围内改变。这种定时电路在硬件连接好以后,定时值及定时范围不能由程序(软件)来控制和改变。定时值及定时范围可以很容易地由软件来确定和改变,功能较强,使用灵活。优点:计数时不占用CPU的时间,并且如果利用定时器产生中断信号,就可以建立多作业的环境,可以大大提高CPU的利用率。计数器/定时器本身的开销并不很大,因此,这种方法得到了广泛应用。8253的主要功能:n有3个独立的、功能相同的16位减法计数器。n每个计数器都可以按照二进制或BCD码进行计数。n每个计数器的计数速率可高达2MHz。n每个计数器有6种工作方式,可由程序设置和改变。n所有的输入输出引脚电平都与TTL电平兼容。 本

3、节内容:n8253的内部结构和引脚特性n8253的控制字n8253的工作方式n8253的编程数据总线缓冲器是8253与CPU数据总线连接的8位双向三态缓冲器,有三方面的功能:n往计数器设置计数初值n从计数器读取计数值n往控制寄存器设置控制字接收CPU送来的读/写信号(RD/WR),片选信号(CS),端口选择信号(AlA0),以决定3个计数器、控制寄存器中哪一个进行工作,以及数据传送的方向。每个计数器都有一个控制寄存器,用来接收CPU送来的控制字,这个控制字用来选择计数器及相应的工作方式等。控制寄存器只能写入不能读出,且共用一个控制端口地址。 8253内部有3个结构完全相同的计数器:计数器0、计

4、数器1和计数器2。每个计数器的输入和输出都决定于本身所带的控制寄存器的控制字,互相之间工作完全独立。每个计数器通过3个引脚和外部联系:n时钟输入端CLKn门控信号输入端GATEn输出端OUT。每个计数器内部有:n1个8位控制寄存器CWn1个16位计数初值寄存器CRn1个16位减1计数执行部件CEn1个16位输出锁存器OL。由程序首先写控制字给控制寄存器,再写计数初值给相应计数器,初值在CR中保存,并送CE中,在GATE门控信号允许或触发下,CE便开始对CLK脉冲进行减l计数,直到计数值被减到0时,计数结束或本周期结束,输出OUT端产生相应波形。输出信号的波形由事先规定的工作方式决定并受控于GA

5、TE信号。在减1计数过程中,CE中当前的计数值同时送给OL。因此,若想要知道计数过程中的当前计数值,则必须用指令将当前值锁存,然后从OL中读出,同时又不影响CE的连续计数。注意:不能直接从CE中读出。 数据线 控制线 电源线 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 CS VCC GND 8 7 6 5 4 3 2 1 22 23 19 20 21 24 12 Intel 8253 9 11 10 15 14 13 18 16 17 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 计数器0 计数器1 计数器2 双向三

6、态输入/输出数据线,与系统数据总线相连,供8253与CPU之间传送数据、命令信息用。CS片选信号片选信号n输入,低电平有效。n只有在保持低电平的情况下,8253才能被选中,才能对它进行读/写操作。RD读信号读信号n输入,低电平有效。n有效时,表示CPU正在对8253的一个计数器进行读操作。WR写信号写信号n输入,低电平有效。n有效时,表示CPU正在对8253的一个计数器写入计数初值或者对控制寄存器写入控制字。A1、A0地址线地址线n3个独立的计数器各有一个端口地址,另外三个控制寄存器共用一个端口地址,所以8253共有4个端口地址。n当A1A011时,为控制寄存器端口;n当A1A0=00、01、

7、10时,分别为计数器0、计数器1、计数器2的端口。计数器0、1、2的(时钟)脉冲输入端,它们各自独立。8253进行定时或计数工作时,每输入一个CLK脉冲,计数值减1。计数器0、1、2的门控信号输入端,它们各自独立,用来禁止、暂停、停止、允许、启动计数的控制。在不同的6种工作方式中,GATE控制作用也不同。计数器0、1、2的输出信号端,它们各自独立。当定时或计数值减为0时,在OUT端输出信号,该信号的波形取决于工作方式。该信号可供CPU检测、查寻,或作为中断请求信号使用,也可作为控制信号或信号源使用。 在使用8253前,必须对它进行初始化编程。对8253的工作方式、计数方式、操作方式的确定和计数

8、器的选择都是由控制字来确定的。不同计数器的控制字必须分别设置,但它的端口地址共用一个。 图图9.4 82539.4 8253控制字格式控制字格式基本规则基本规则:n控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态(高电平或者低电平)。n初始值写入以后,要经过时钟的一个上升沿和一个下降沿,计数执行部件才开始进行计数。n通常,在时钟脉冲CLK的上升沿,门控信号GATE被采样。n在时钟脉冲的下降沿,计数器作减1计数。n0是计数器所能容纳的最大初始值,当选用二进制时,0相当于216;用BCD码时,0相当于l04。能使OUT端产生正阶跃信号,常被用来作为中断请求信号。(1)写入控

9、制字,WR信号的上升沿使OUT端输出低电平作为初始状态。(2)再写入计数初值n,WR信号的上升沿将这个计数初值先送到CR中,在WR信号上升沿之后的第一个CLK脉冲的下降沿时才将初值从CR送到CE中。此时如果GATE=0,那CE仍不能减1计数,只有GATE=1条件下,CE立即开始对CLK脉冲下降沿作减1计数。在计数过程中,OUT端仍输出低电平,直到减1计数到0,OUT端才变为高电平。此高电平一直保持到CPU又写入控制字或又重新写入新计数初值时,OUT端才变为低电平,重新开始新的计数周期。(3)在计数过程中,可由门控制信号GATE控制暂停。若GATE由1变为0,则CE立即暂停计数,并保持当前计数值

10、,一旦GATE变为1,CE接着计数。在暂停过程中,OUT端仍输出低电平,也就是说GATE信号的变化不影响输出端状态。利用这一功能,可延长定时时间。(4)在计数过程中可改变计数初值。若CPU重新写入新的计数初值,则CE停止原计数,直到信号上升沿后的第1个CLK脉冲的下降沿时将按新的初值n重新开始计数。 能使OUT端产生单脉冲波形信号,单脉冲宽度可由程序设定。 (1)写入控制字后,WR信号的上升沿使OUT端输出高电平作为初始状态(若原为低电平,则由低电平变为高电平)。(2)再写入计数初值n,WR信号上升沿将这个计数初值先送到CR中,在WR信号上升沿之后的第一个CLK脉冲的下降沿时才将初值从CR送到

11、CE中。然后,只有当GATE信号出现上升沿并在上升后的第一个CLK脉冲下降沿时才启动计数并使OUT端变为低电平,直到计数值减到0时,使OUT端再变为高电平,由此OUT端上产生一个负单稳态脉冲波形,脉冲宽度为n个CLK脉冲周期宽度。 (3)在计数过程中,如果CPU又写入新的计数初值,当前计数值将不受影响,仍继续计数直到结束。计数结束后,只有再次出现GATE上升沿脉冲,才按新初值启动计数。(4)在计数过程中,如果GATE又出现上升沿脉冲,则计数器将立即从初值开始重新计数,直到计数结束,OUT端才变为高电平。利用这一功能,可延长OUT输出的单脉冲宽度。(5)当计数到0后,如果GATE又出现上升沿脉冲

12、,则可以再输出一个同样宽度的单脉冲,而不用再次送计数初值。 使OUT端输出固定频率的脉冲,输出脉冲周期等于n个CLK脉冲的宽度,也相当于对CLK信号n分频。这种方式给自动控制中的实时检测、实时控制提供了实时时钟,也可作为一个可编程脉冲速率发生器。 (1)写入控制字后,OUT端输出高电平作为初始状态。(2)写入计数初值后的第一个CLK脉冲下降沿,初值才送入CE。在GATE=l时,开始减1计数,当计数减到1(注意不是减到0)时,OUT端变为低电平;再减1,即计数减到0,OUT端又变为高电平,同时计数器自动重新从计数初值开始新的减1计数过程,如此重复进行,输出固定频率的脉冲。(3)在计数过程中,CP

13、U写入新的初值并不影响当前计数,而是影响后面的计数。(4)在计数过程中,GATE变为低电平,则停止计数,直到GATE恢复高电平后,计数器则从计数初值开始重新计数。由此可见,这种方式下,门控信号既可用电平触发,也可用上升沿触发。方式3与方式2工作原理相似,但输出波形则为占空比1:1或近似1:1的连续方波或矩形波。 (1)写入控制字后,OUT端输出高电平作为初始状态。(2)写计数初值n,该WR信号上升沿将这个计数初值先送到CR中,在WR信号上升沿之后的第个CLK脉冲的下降沿时才送入CE中。此时,若GATE=1,CE就启动减1计数。n若计数初值n为偶数时,当计数器开始减1计数,计数到一半(n/2)时

14、,OUT端就由高电平变为低电平。再继续减1计数,计到0时,OUT端由低电平变为高电平,从而完成一个周期的工作,然后又自动开始重复计数。由此OUT端输出占空比为1:1的连续方波。n当计数初值n为奇数时,OUT端输出矩形波,正半周(高电平)为(n+1)/2个CLK脉冲的宽度,负半周(低电平)为(n-1)/2个CLK脉冲的宽度,即OUT输出为高电平的时间将比其为低电平的时间多一个CLK周期。 (3)其它功能时序与方式2相同。 计数器主要靠写入新的计数初值来触发计数器工作,所以常称它为软件触发。OUT端输出的负单脉冲信号常作为选通信号使用;另外还可用作定时功能,定时时间为n个CLK周期。 (1)写入控

15、制字后,OUT端输出高电平作为初始状态。(2)写计数初值n,该 信号上升沿将这个计数初值先送到CR中,在 信号上升沿之后的第一个CLK脉冲的下降沿时才送入CE中。此时,若GATE=1,CE就启动减1计数,直到计数值减到0时,OUT端才由高电平变为低电平,并且仅保持一个时钟周期的低电平后,就自动变为高电平,也就是在OUT端产生一个负脉冲信号波形。(3)在计数过程中,若CPU又写入新的计数初值,则 信号下降沿使计数器停止计数,然后在 的上升沿后的第一个CLK脉冲下降沿开始按新计数初值作减1计数。n注意:若该初值为双字节数,则写第一个字节时,不影响原计数,写第二个字节时 信号才起作用。(4)在计数过

16、程中,若GATE由高电平变为低电平,计数器立即停止计数,但OUT端输出仍保持高电平,直到GATE恢复到高电平时,计数器将从初值开始重新减1计数。(5)由程序置入的计数初值只一次有效,减1计数到0输出一个负单脉冲信号后,计数结束,不再计数。若要继续进行计数,必须重新写计数初值,在GATE=1条件下,启动计数。方式4时,计数器主要靠写入新的计数初值来触发计数器工作,所以常称它为软件触发。OUT端输出的负单脉冲信号常作为选通信号使用;另外还可用作定时功能,定时时间为n个CLK周期。WRWRWRWRWR方式5与方式l工作原理相似,由门控信号GATE的上升沿触发计数器计数,但OUT端输出波形为单脉冲选通

17、信号,同方式4。 (1)写入控制字后,OUT端输出高电平作为初始状态。(2)写计数初值n,在 信号上升沿将这初值先送到CR中,在GATE信号出现上升沿后的第一个CLK脉冲的下降沿时将初值送入CE,并开始减1计数,直到减到0时,OUT端由高电平变为低电平,并仅保持一个CLK脉冲周期的低电平后就自动变为高电平,也就是在OUT端产生一个负单脉冲信号波形。(3)在计数过程中或计数结束后,若GATE信号再次出现上升沿,则计数器将自动重装初值并开始新的计数周期。(4)在计数过程中,若CPU又写入新的计数初值,只要GATE不出现上升沿,就不影响当前计数。如果在这以后,GATE出现上升沿,则在其后的第一个CL

18、K脉冲下降沿启动计数器,并按新初值开始计数。 WR8253有6种不同的工作方式,它们的特点不同,因而应用的场合也就不同。8253没有复位RESET输入,开机加电后,其工作方式和OUT端输出都是不确定的,必须对其进行初始化编程,初始化编程包括写控制字和写计数初值。先写控制字,使OUT端输出初始状态电平,其中只有方式0的初始状态为OUT端输出低电平,其它方式的初始状态都是OUT端输出高电平。OUT端输出波形都是在CLK脉冲下降沿时产生电平的变化。门控信号的触发方式有二种;高电平触发,上升沿触发。方式0、4中GATE为高电平触发;方式l、5中GATE为上升沿触发;方式2、3中GATE既可用高电平触发

19、也可用上升沿触发。方式0与方式1的OUT端输出波形类似,在计数过程中都保持低电平,计数结束立即变为高电平,这种正阶跃信号输出常可用作中断请求信号。但它们的OUT端初始状态不一样,方式0的OUT端输出正阶跃信号,方式1的OUT端输出负单稳态脉冲波。方式2与方式3有一共同的特点,都具有减到0后计数初值自动再重装功能,所以OUT端都能输出连续的波形。它们主要的区别在于占空比不同,方式2输出连续的负脉冲波,其中负脉冲宽仅为一个CLK脉冲,而周期为n个CLK脉冲;方式3输出连续方波或矩形波,占空比为1:1或近似1:1。方式4与方式5的输出波形相同,它们主要区别是计数启动的触发信号不同,方式4由写计数初值

20、指令的上升沿启动计数,方式5由GATE上升沿启动计数。6种工作方式都受GATE门控信号的控制。在使用计数器前,必须先写入计数初值n。在某些工作方式下初值只能用一次,如下次要用,必须重新写入初值n;而在另外些方式下,能自动重新装入初值n实现循环计数。 方式0:写入的初值n一次有效 方式1:写入的初值n一次有效,但可触发重装 方式2:写入的初值n能自动重装 方式3:写入的初值n能自动重装 方式4:写入的初值n一次有效 方式5:写入的初值n一次有效,但可触发重装6种工作方式在计数过程中都可写入新计数初值,但是在不同方式时对当前计数及OUT输出的影响各不相同。 本小节内容:n8253的初始化编程n82

21、53计数值的读取编程初始化编程的步骤为:初始化编程的步骤为:(1)写控制字,规定计数器的工作方式。(2)写计数初值。 若规定只写低8位,则写入的为计数初值的低8位,高8位自动置0。 若规定只写高8位,则写入的为计数初值的高8位,低8位自动置0。 若是16位计数初值,则分两次写入,先写入低8位,再写入高8位。 若要使计数器0工作在方式1,按BCD码计数,计数初值为5080,若端口地址分别为F8HFBH,则初始化程序为: MOV AL,33H OUT 0FBH,AL;向计数器0写控制字 MOV AL,80H OUT 0F8H,AL;向计数器0写计数初值的低8位 MOV AL,50H OUT 0F8

22、H,AL;向计数器0写计数初值的高8位注意:采用BCD码计数时,计数初值为十进制数,但在初始化写初值时,一定要在十进制数值后加十六进制后缀H。 CPU可以用输入指令读取8253任一计数器的计数值,此时CPU读到的是执行输入指令瞬间计数器的现行值。8253的计数器是16位的,要分两次读至CPU,在读入过程中,计数值可能发生变化。因此,在读取计数值之前,需对现行计数值进行锁存。 在例9.1的计数过程中,若要读取计数器0的当前16位计数值,并且读取的数值存入CX寄存器中,其程序为:MOV AL,03H ;锁存控制字为00000011B OUT 0FBH,AL ;向计数器0写控制字,实现锁存 IN A

23、L,0F8H ;读取计数器0的锁存器低8位计数值 MOV CL,AL ;保存至CL IN AL,0F8H ;再读一次计数器0的锁存器,读取高8位计数值 MOV CH ,AL ;保存至CH例9.3例9.4例9.5利用8253和8255实现对扬声器的控制。试设计一个程序,使扬声器发出262Hz频率的声音,按下任意键声音停止。已知8253计数器2与控制口地址为42H与43H,8255PB口的地址为61H。在PC/XT计算机系统中,PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2得到不同频率的方波输出。计数器2定义为工作方式3,控制字为10110110B

24、。对于要求OUT2输出600Hz的声音驱动信号,可以得出计数初值:1.19MHz/262Hz=4542。另外,PC/XT计算机的发声系统受8255芯片B口的两个输出端线PB0、PB1的控制:nPB0为1,使GATE2为1,计数器2能正常计数,可以控制扬声器何时可以发声;nPB1为1,打开输出控制门,可以控制扬声器发声时间长短。 MOV AL,10110110B;对8253计数器2初始化OUT 43H,ALMOV AX, 4542;设置计数初值OUT 42H, ALMOV AL,AHOUT 42H,ALIN AL, 61H;读8255PB口当前值OR AL, 03H;使PB1与PB0置1,其余位

25、不变OUT 61H,AL;打开GATE2并且允许发声MOV AH, 01HINT 21H;等待按任意键IN AL,61HAND AL,0FCH;清PB1与PB0OUT 61H,AL;停止发声 利用8253控制LED的点亮或熄灭。 要求循环点亮10秒钟后再让它熄灭10秒钟(周期为20秒),设计接口电路并编程实现。已知8253的各端口地址为81H,83H,85H和87H,提供的时钟信号频率为2MHz。对8253编程,使其输出周期为20秒的方波信号,就能使LED交替亮灭。时间常数计算n已知输出周期为20秒,则输出频率为:(1/20)Hz。n时钟频率为2MHz,时间常数:2M/(1/20)=40M。接口设计n 一个计数器的计数初值最多为65536,所以单纯的使用单个计数器不能满足要求。因此,采用多计数器级联的方法实现。n让计数器0和计数器1都工作在方式3,让计数器0的OUT输出脉冲信号作为计数器1的时钟输入信号,即计数器1的CLK端接计数器0的OUT端。其接口结构如图9.12所示。计数器0和计数器1都工作在方式3,其控制字分别为:00100111B和01100111B。在2个计数器的初值设置上只要满足两个计数初值的乘积为N0*N1=40M即可。可以取计数器0的计数初值为:5000;则计数器1的计数初值则为:8000。初始化程序

温馨提示

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

评论

0/150

提交评论