第7章计数器定时器.ppt_第1页
第7章计数器定时器.ppt_第2页
第7章计数器定时器.ppt_第3页
第7章计数器定时器.ppt_第4页
第7章计数器定时器.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第六章 计数器/定时器,在微机系统或微机应用系统,特别是控制系统中,经常有计数和计时的要求。如汽车里程表 的公里计数,电话通话时间计时等。这些应用在计算机中的处理方法不外乎两种:硬件方法和软件方法。 软件定时就是根据所需要的时间常数来设计一个延迟子程序,这样作的优点是节 省硬件,但耗费CPU的资源较多,降低了CPU效率,且编写软件略显麻烦,通常延迟时间较小且重复 次数有限的情况下,使用该方法。 硬件定时就要用到计数器/定时器,其优点是不占用CPU时间,且利用计数器/定 时器产生中断信号,就可以建立多作业环境,以提高CPU效率,由于计数器/定时器开销不大,因此的 到了广泛应用。,2,第一节

2、计数与定时,一. 计数与定时的概念 在计算机处理计数问题时,首先要将计数量转化为电脉冲的形式,计数的任务即是对某电脉冲的出现次数进行度量的工作。引发计数工作的电脉冲称为计数脉冲。 在进行计数时,计数脉冲的出现与否受外界控制,不具有一定的规律性,所以要求计数系统具有良好的实时性,即无论计数脉冲出现的快慢,计数系统必须准确记录计数脉冲的出现。 在计算机系统中,更常用的是定时工作(计时和延时) 计时即对两事物发生的时间间隔进行计量; 延时是对某事件发生后的时间进行计量,直到某个时间间隔后发生另一事件。 时间计量 是在统一的时间标准上进行的,这个标准时间通常由振荡器一类电路提供的恒定频率的电脉冲来担

3、当,这样定时的工作就可转化为对具有恒定频率的计数脉冲进行技术的工作。,3,二. 计数方法与计数器 通常按计数的实现方法可将计数器操作分为增量计数器和减量计数器两种。增量计数器是指当计数脉冲到来后,计数的计数值加“1”;减量计数器反之。 增量计数器常用于对事件的累计,而减量计数常用于限量计数。增量计数关心的是当前计数的量,减量计数 关心的是计数终到的时刻。 如人们为了了解汽车行驶的里程而为汽车设置了里程表,使用里程表是为了了解当前汽车以运行的公里数, 这时就需要增量计数器;在控制药片装瓶的药品包装机中,需要记录药片装入的数量,我们关心的是药品装 满的时刻,以便换瓶,此时可采用减量计数器。,4,在

4、计算机系统中,计数操作可采用软件实现也可采用硬件实现,或者将二者结合使用。 软件实现计数的方法是将计数脉冲直接锁存到计算机的输入引脚,查到了计数脉冲后便进行计数处理,并清除锁存器,否则继续查询,在软件中即可采用增量计数也可采用减量计数,灵活性很大,但这样CPU的占 用率太大。也可以利用计数脉冲引发中断进行计数,可解决CPU占用率的问题,但由于CPU响应中断的周期 的限制,当计数脉冲的频率很高时,可能发生漏计。,5,由于以上原因,实际应用系统中多采用硬件方法进行计数操作。利用多个级联的触发器构成计数器,将计数脉冲接到计数器的时钟输入端,则随着计数脉冲的到来,触发器的状态输出可反映计数的二进制 或

5、十进制的值。如果使用可预置初值的计数器,则可控制计数器的计数总量,当计数达到这个量时,可输出计数终到脉冲。如果使用可重载计数器,则可实现连续计数。 将这种计数器连到计算机系统中,由CPU来设置初值,由CPU启动计数,并由CPU来读取计数器的当前值, 计数终到后向CPU发出中断请求,由CPU处理计数终到后的工作,则构成一种可编程计数器。这种计数器的计数过程自动进行。不需CPU的干预,仅在CPU需要时提供计数的当前值,或在计数终到后向CPU发出中断请求,因而CPU占用率极低,在实际应用系统中被广泛应用。,6,三. 定时方法与定时器 计算机系统中的,定时操作又分成延时操作和计时操作两种。 延时操作只

6、关心时间间隔和延时终到的时刻,而计时操作则要求随时了解现在时刻的标准时间。延时操作的 实现方法很多,而计时操作的实现方法则很单一。 在模拟电路中,延时操作多是利用电子器件本身的特性来实现的,最常用的延时器件是电容器。如单稳态触 发器,延时线等,这类电路的设计安装一旦完毕,其延时的时间就已经固定(或仅可在小范围内手工调节), 仅适用于延时间隔较为固定的场合。 在数字电路中,实现延时操作则借用于计数器,给计数器输入一故定频率的计数脉冲(也称为定时脉冲),并 给计数器输入一定的初始计数值,给计数器发一个启动脉冲后,计数器以固定频率进行计数,延时一定时刻 后,计数器计数终到,发出终到脉冲。这种方法,只

7、要改变计数器的初始值,就可一改变延时的时间长度, 适当增加计数器的位数,就可以实现较大时间内的可调延时。,7,软件延时是利用CPU的指令周期进行的延时。在程序中设计一种循环,循环的内部仅进行空操作(NOP),只 要准确的计算指令周期和循环次数,就可以在CPU执行该循环程序时延时指定的时间。这种方法的优点是不 需要附加的硬件,且延时范围灵活;缺点是一方面占用CPU资源,降低了CPU的利用率,另一方面是当CPU 的指令中期不固定时(如发生DMA操作或插入数个Tw状态时);延时的时间可能发生较大的变化。如为8086 编写的程序中使用的延时,在80486系统下,延时的时间明显缩短。,8,计算机中实现延

8、时的另一种方法是利用硬件,借助于可编程的计数器进行延时。在电路上给计数器输入恒定 的定时脉冲,新要延时时,首先由CPU给计数器赋以初值,然后CPU给计数器发出启动脉冲,计数器就开始 工作了,计数器终到时,计数器输出终到脉冲,或者用以引发CPU中断,进行延时后的处理,或者直接将计 数脉冲输出到外设,驱动外设工作。这种方法延时准确,占用CPU时间少,且不会因系统升级而改变延时时 间,故被广泛采用。 当计算机系统中配置有定时时钟的情况下,还可以利用查询系统时钟的方法来进行软件延时,系统时钟由计 时机构产生,这样可保证延时的准确性,但仍需占用较多的CPU时间。,9,在计算机系统中,计时的工作一般是由计

9、数器来进行的。首先在系统中设置一个计数器,给这个计数器输入 稳定频率的定时脉冲作为计数脉冲,并使其工作在可重载的状态,使其输出连续的终到脉冲,这个脉冲是定 时脉冲的N分频,用这个脉冲引发CPU的定时中断,CPU根据这个定时脉冲来修改内部的时钟,就可以进行 计时操作。 在采用了计数器定时后,可从事就成为计数的一种特例,是对标准频率的定时脉冲进行的计数。 因此,把具有计数终到输出的可重载计数器称为计数器/定时器。 Intel公司生产的可编程计数器/定时器8253就是一种典型的专用计数器/定时器芯片,是PC系列微机的标准设备之一。,10,四. 计数/定时的工作原理,计数/定时的功能 对外部事件发生次

10、数进行计数 计算机系统经常用到定时信号,如DRAM刷新定时,计数和计时本质上是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。 例如输入脉冲频率为2MHz,那么计数2106 计时1秒,因此,使用同一个芯片,既能计数,又能计时计时器/计数器,11,控制寄存器,初始值寄存器,计数器,计数输出寄存器,状态寄存器,CLK,GATE,OUT,组成:,控制寄存器决定工作模式 状态寄存器反应工作状态 初值寄存器计数的初值 计数输出寄存器 CPU从中读当前计数值 计数器 执行计数操作, CPU不能访问,12,工作原理:对CLK信号进行减1计数 首

11、先,CPU把控制字写入控制寄存器,计数初始值写入初值寄存器 计数从初值开始,每当CLK信号出现一次,计数值减1 当计数值减到0,从OUT端输出规定的信号 CLK信号出现时,计数器是否减1,由门控信号GATE控制,13,CLK是计数输入信号,计数器对CLK端出现的脉冲个数进行计数 CLK端可以输入外部事件 CLK端可以接入固定频率的时钟信号,从而实现计时 OUT信号在计数结束时发生变化 可将OUT作为外部设备的控制信号 可将OUT作为向CPU申请中断的信号 CPU可以从计数输出寄存器读出当前计数值。 读前,应向控制寄存器发送锁存命令,14,第二节 可编程计数器/定时器 8253,8253芯片上集

12、成有3个独立的16位计数器,可用来进行二进制或BCD码计数,计数速率可达1.6MHz;每个计数器(或称计数通道)有独立的计数脉冲输入引脚CLK,独立的计数启动控制引脚GATE和独立的计数终到 输出引脚OUT。 可由程序设置和改变各计数器的工作方式,共有6种工作方式供选择。通过对8253的控制寄存器编程,可以控制每个计数器的工作方式,计数制式以及计数初值的装入。 8253设有数据总线缓冲器,用来实现与系统数据总线的连接。有读写控制逻辑,可接收来自系统总线的控制信号,并产生输出信号。,15,一. 8253的编程结构,8253 是24引脚双列直插式芯片,它与CPU的接口引线除了没有RESET引脚外,

13、其他与8255相同。其中: D7D0是数据线引脚,RD和WD分别是读写控制引脚,CS是片选信号。A1,A0是片内地址选择引脚。 8253的三个计数通道在结构上和功能上完全一样,每个通道均有两个输入引脚CLK和GATE,一个输出信号 引脚OUT。,16,17,8253的计数过程是由其硬件电路独立完成的。使用时,使用时只需在计数开始前由CPU通过程序向8253写入 控制字和计数初值,确定它的计数方式和计数范围即可,而计数过程完全不需CPU干预,计数器可以和CPU同时工作,当计数完成后,8253可以向CPU申请中断。显然,这种独立于CPU的计数/定时器,可以使CPU开销最小,并可通过适当分配优先级的

14、办法实现延时。 由于8253的读/写操作对系统时钟没有特殊要求,因此,它可以应用于任何一种微处理器组成的系统当中,作为可编程的方波频率发生器,分频器,实时时钟,事件计数器,单脉冲发生器等。,18,数据总线缓冲器,8253与数据总线的接口部件,是8位的三态双向缓冲器,CPU对8253读写的数据,控制及状态信息 都通过这8条数据线传送,读写的内容包括: CPU向8253传送的确定8253工作方式的控制字 CPU向某一计数器装入计数初值 CPU从某一计数器读出计数初值,19,读/写逻辑电路,8253内部操作的控制电路,它从系统控制总线上接收控制信号,然后产生8253内部操作的各种控制 信号,具体接收

15、的控制信号为: CS片选信号,低电平有效,有效时可以访问8253,为高电平时,数据总线缓冲器 处在高阻状态,与系统数据总线脱离,故不能进行数据总线编程,也不能进行读写操作,但不影 响计数器的工作。 RD,WR读写控制信号,控制数据的传送方向,当RD有效时,数据由8253传向CPU (读当前计数值);当WR有效时,数据由CPU传向8253(写控制字和计数初值)。 A1,A0接系统总线的A1,A0,用于选择8253那的计数器和控制寄存器。 A1 A0 计数器 0 0 计数器0 0 1 计数器1 1 0 计数器2 1 1 控制寄存器,20,控制寄存器,21,计数器0,1,2,8253有3个独立的计数

16、器/定时器,计数器0,1,2,每个计数器的内部结构相同,操作完全相同。 每个通道的外部均有两个输入信号CLK和GATE,一个输出信号OUT. CLK时钟脉冲输入 GATE门控制信号输入 OUT输出信号,22,每个计数器内部都有三个16位寄存器CR,CE和OL。 CR计数初值寄存器 存放CPU写入的计数初值(也称时间常数)。CPU可以写,但 不能读CR寄存器。CPU向CR写入计数初值后的第一个CLK脉冲下降沿,CR寄存器的内容被送到CE计数器 单元内,随后CE开始工作。如果是在非重载方式下(方式0,方式1,方式4,方式5),CR的内容只向CE 写入一次;在重载方式下(方式2,方式3),当计数终到

17、后,CR的内容又重新写入CE,一维持CE以同样的 计数初值连续工作。 CE计数执行部件 接收CR送来的计数初值,在GATE的控制下决CLK进行减1计数, 当计数终到时减1到0,该计数通道的OUT引脚发出OUT信号。CPU不能访问CE寄存器。 OL输出锁存器 用来锁存某一时刻CE中的计数值。由于8253的数据总线只有8 位,而CE是16位的,不可能在一个总线周期内将CE的内容全部读入CPU,因此用OL将不断变化的CE值保 持住,以便CPU读到正确的CE值。CPU可随时用IN指令读出该寄存器的当前计数值,但不能写该寄存器。,23,8253输入信号与各功能的对应关系,24,初始化,1)写入控制字 2

18、)按控制字要求写入计数初值 计数器初值计算:N=fCLK/fOUT,二.8253编程,8253控制寄存器的格式如下:,25,例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器1,工作模式1,CR/OL使用16位,初值为1234,计数值使用BCD,MOV AL, 73H OUT 73H, AL MOV AX, 1234H OUT 71H, AL MOV AL, AH OUT 71H, AL,例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器0,工作模式2,CR/OL仅使用低8位,初值为100,计数值使用二进制

19、,MOV AL, 14H OUT 73H, AL MOV AL, 100 OUT 70H, AL,26,读操作,1)发出锁存命令,使当前计数值锁存在OL中 2)读OL,获得当前计数值,例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。读出计数器0的当前计数值,放在BX中,MOV AL, 0H OUT 73H, AL IN AL, 70H MOV BL, AL IN AL, 70H MOV BH, AL,27,写操作 写命令字 A1A0=11 写计数值,对各计数器口地址 一个计数器在工作之前,需要先设置控制字,用来选择计数器,设定工作模式和计数格式等。 设置

20、初值命令用来给出计数的初始值,初值可为8位,也可为16位。如为16位,则要用两条输出指令完成初值设置。,28,例:设8253的口地址为40H 43H,则下列程序意义为:MOV AL,74H ;01110100B初始化计数 器1为方式2,OUT 43H,AL ;先读低8字节再读高8字节二进制数MOV AL,20H ;写入计数器1计数初值0420H OUT 41H,AL MOV AL,04H OUT 41H,AL MOV AL,40H ;01000000B向计数器1 发锁存命令 OUT 43H,AL,29,三. 8253工作模式,8253作为一个可编程计数器/定时器,可以用6种工作模式,不论工作在

21、那种模式,都会遵守下面几条基本规则: 1) 控制字写入寄存器时,所有控制逻辑电路立即复位,输出端OUT进入初始状态。2) 初值写入后,要经过一个时钟上升沿和一个下降沿,计数执行部件才开始进行计数。 3) 通常在时钟脉冲CLK的上升沿时,门控信号GATE被采样。 模式0,4中,门控信号为电平触发 模式1,5中,门控信号为上升沿触发 模式2,3中,门控信号为电平或上升沿触发4) 在时钟脉冲的下降沿,计数器作减1计数。 0是计数器所能容纳的最大初始值。 二进制时,0相当于216;BCD码时,0相当于104。,30,工作模式决定以下内容: 1)门控信号的影响 高电平允许,当GATE=0,即使出现CLK

22、,也不计数 模式0,2,3,4 上升沿允许(上升沿触发) 模式1,5 2)OUT信号的状态 写入控制字后, OUT的状态 计数过程中, OUT的状态 计数终了, OUT的状态 3)计数操作可否重复 不可重复模式0,4 自动重复模式2,3 条件重复模式1,5,31,6种工作模式主要区别:,输出波形不同。 启动计数器的触发方式不同。 计数过程中门控信号GATE对计数操作的影响不同。 有的工作方式具备“初值自动重装”的功能。初值自动重装的功能是:当计数值减到规定的数值后,计数初值将会自动地重新装入计数器。,32,33,6种工作模式,方式0: 计数初值写入CR后,OUT由0到1跳变出现在n+1个时钟脉

23、冲之后 延迟时间TD=(n+1)TCLK 方式1: 单脉冲宽度T=n TCLK 方式2: 对输入端n个时钟脉冲,在输出端仅出现一个时钟脉冲 N分频计数器,34,方式3: 例:计数器工作模式3,计数器初值15,时钟脉冲频率为2MHz,确定OUT端输出方波的特性。 解:TCLK=1/2MHz=500ns 计数器初值15为奇数,输出分频波高电平宽度 TCLK(N+1)/2=4s 输出分频波低电平宽度 TCLK(N-1)/2=3.5s 方式4、5: 触发后n+1个时钟脉冲之后输出端产生选通脉冲信号,35,例:计数器0工作模式4,初始化计数器,使装入计数器10 s后产生选通信号(设时钟频率2MHz,82

24、53端口地址为50H53H)。 解:n+1=T/ TCLK=10/0.5=20 n=19=13H MOV AL, 18H OUT 53H, AL MOV AL, 13H OUT 50H, AL,36,四. 8253的应用,1. PC机中8253的应用,计数器0:向系统日历时钟提供定时中断 模式3,控制字36H,计数器初始值0 计数器1:动态RAM刷新 模式2,控制字54H,计数器初始值18(12H) 计数器2:控制扬声器发声 模式3,控制字B6H,计数器初始值1331(533H),PC机中,8253的端口地址为40H43H,37,BIOS对8253初始化 :计数器0 MOV AL,36H 控制

25、字00,11,011,0 OUT 43H,AL 二通道0,16位,方式3,二进制MOV AL,0 初值0,计数65536次(最大) OUT 40H,AL 写入CRO的低计数值 OUT 40H,AL 写入CRO的高计数值 OUT0输出两次变高的间隔为840ns*65536 = 55ms,即每隔55ms发出一次请求。,38,计数器1 MOV AL,54H ; 控制字00,11,011,0 OUT 43H,AL; 二通道1,只装低8位,方式2,二进制MOV AL,12H; 初值18 OUT 41H,AL; 写入计数器低8位,高8位自动为0 OUT1输出两次变高的间隔为840ns*18 = 15us,

26、于是2ms内可有132次刷新。,39,计数器2 MOV AL,0B6H ; 控制字00,11,011,0 OUT 43H,AL ;二通道2,16位,方式3,二进制MOV AX,533H; 初值 533H = 1331 OUT 42H,AL; 写入计数器低8位 MOV AL,AH; OUT 42H,AL; 写入计数器高8位 OUT2输出两次变高的间隔为840ns*1331 = 1.12ms,频率为894Hz。,40,3. 以2MHz输入8253,实现每5秒定时中断(设8253端口地址40H43H),分析:8253最大初值65536,CLK=2MHz可实现最大时间间隔: 65536/(2106)=32.769ms 所以需要两个计数器串联,一个计数器的输出作为另一个计数器的输入,计数器1:模式2,OUT1每5ms输出一个脉冲 初值(2106)/(1/0.005)=10000 计数器0:模式2,OUT0每5s输出一个脉冲 初值(1/0.005)/(1/5)=1000,41,程序:,MOV AL, 74H OUT 43H, AL MOV AX, 10000 OUT 41H, AL MOV AL,

温馨提示

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

最新文档

评论

0/150

提交评论