定时计数器及应用.ppt

上传人:wuy****n92 文档编号:75110607 上传时间:2023-03-02 格式:PPT 页数:28 大小:319.50KB
返回 下载 相关 举报
定时计数器及应用.ppt_第1页
第1页 / 共28页
定时计数器及应用.ppt_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《定时计数器及应用.ppt》由会员分享,可在线阅读,更多相关《定时计数器及应用.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6章章定时定时/计数器及应用计数器及应用教学目标教学目标介绍定时介绍定时/计数器的结构和原理计数器的结构和原理介绍定时介绍定时/计数器的四种工作方式的应用计数器的四种工作方式的应用介绍定时介绍定时/计数器时应注意的几个问题计数器时应注意的几个问题学习要求学习要求了解定时了解定时/计数器的结构计数器的结构熟悉定时熟悉定时/计数器的工作原理计数器的工作原理掌握定时掌握定时/计数器的初始化及应用程序设计计数器的初始化及应用程序设计掌握定时掌握定时/计数器精确定时要采取的相应措施计数器精确定时要采取的相应措施6.1MCS-51定时定时/计数器概述计数器概述在测控技术中,往往需要定时检测某个物理参数

2、,或按一定的时间间隔来进行某种控制。这种定时的获得,可用软件来实现,即编制一段延时程序,但会降低CPU的工作效率。为此,在微机测控系统中,常采用硬件来实现定时,即使用定时/计数器,它还可以对某种事件进行计数,然后根据计数结果来进行控制。在在MCS-51单单片片机机内内部部含含有有两两个个16位位定定时时/计计数数器器:T0和和T1,它们既可以用于定时,也可用于对外部计数脉冲的计数,还可作为串行接口的波特率发生器,这些功能都可通过软件来设定与修改。6.1.1定时器定时器/计数器的结构计数器的结构MCS-51定时/计数器由振荡器分频输入电路、外部计数脉冲输入电路、计数脉冲选择电路、计数启停电路、加

3、1计数器和中断标志等组成。图6-1所示其结构框图,图中X=0或1,代表定时/计数器T0或T1相应的信号或寄存器的相应位。C/T=0中断TXC/T=1控制TRXGATEINTX图图6-1定时定时/计数器计数器T0或或T1的结构原理图的结构原理图12振荡器加1计数器TFX定时器定时器/计数器的工作原理计数器的工作原理由图6-1可见,定时/计数器的核心是一个加1计数器,每输入一个脉冲,计数值加1,当计数到计数器全为1时,再输入一个脉冲就使计数值回零,同时从最高位溢出一个脉冲使控制寄存器TCON的TFX(X=0或1)位置1,作为计数器的溢出中断标志。加1计数器由两个8位特殊功能寄存器THX和TLX(X

4、=0或1)组成,它们可以被程控为不同的组合状态(13位、16位、两个分开的8位等),从而形成定时/计数器的四种工作方式。加1计数器计数工作的启动和停止由相应的电路控制,方式寄存器TMOD的GATE位为0时,由寄存器TCON的TRX(X=0或1)位启动(这时TRX=1)或停止(这时TRX=0);GATE位为1,且TRX(X=0或1)为1时,由中断引脚INT X(X=0或1)的外部信号电平启动(这时INTX=1)或停止(这时INTX=0)。通过方式寄存器通过方式寄存器TMOD的C/T位来选择加1计数器计数脉冲的来源:当C/T=1时,计数脉冲来自系统外部的脉冲源,这时定时/计数器成为外部事件计数器,

5、工作于计数器状态;当C/T=0时,计数脉冲来自系统的时钟振荡器的12分频,由于这时的计数脉冲为一时间基准,脉冲数乘以脉冲间隔时间就是定时时间,这时定时/计数器工作于定时器状态。作为定时器用时,加1计数器的值每过一个机器周期增1。作为计数器用时,外部输入脉冲加在定时/计数器的外部输入端T0(P3.4)或T1(P3.5),每出现一次从1到0的跳变,加1计数器便加1。6.2定时器定时器/计数器的控制计数器的控制定时器定时器/计数器的方式寄存器计数器的方式寄存器TMOD定时器方式字TMOD的格式如下:M1和M0:方式选择位,定义如表6-1所示:C/T:功能选择位。C/T=0为定时器方式;C/T=1为计

6、数器方式。GATE:门控位。GATE=0,允许软件控制位TR0或TR1启动定时器。T0或T1;GATE=1,且TR 0(或TR 1)=1,允许外部中断引脚电平启动定时器,即由INT 0(P3.2)和INT 1(P3.3)引脚分别控制T0和T1。定时器10位编号D7D6D5D4D3D2D1D0位功能GATEC/TM1M0GATEC/TM1M0 TMOD的地址为89H,不可按位寻址,只能用字节指令设置定时器工作方式。低半字节定义定时器T0,高半字节定义定时器T1。复位时,复位时,TMODTMOD所有位均为零所有位均为零。表表6-1方式选择位意义方式选择位意义M1M0工作方式功能说明00方式013位

7、计数器01方式116位计数器10方式2自动再装入8位计数器11方式3定时器0:分成两个8位计数器定时器定时器/计数器的控制寄存器计数器的控制寄存器定时器控制字TCON的格式如下:TF1(TCON.7):定时器1溢出标志。定时器1溢出时由硬件置1,定时器1以其作为标志去申请中断,当此中断获得响应时由硬件自动清零。TR1(TCON.6):定时器运行控制位。由软件对其置1或清0来启动或关闭定时器1的运行。TF0(TCON.5):定时器0溢出标志。其意义同TF1。TR0(TCON.4):定时器0运行控制位。其意义同TR1。TCON的其余四位与中断有关,在第5章有关章节已论述。TCON的位地址位88H,

8、可按位寻址。复位时,TCON所有位均为零。位编号D7D6D5D4D3D2D1D0意义TF1TR1TF0TR0IE1IT1IE0IT06.3定时器定时器/计数器的四种工作方式及应用计数器的四种工作方式及应用方式方式0及其应用及其应用一、方式一、方式0介绍介绍当M1M0两位为00时,定时/计数器被选为工作方式0。在这种方式下,16位寄存器(TH0和TL0)只用13位,由TH0的8位和TL0的低5位构成。TL0的高3位是不定的,可以不必理会。因此方式0是一个13位的定时/计数器。当TL0的低5位计数溢出时,即向TH0进位,而TH0计数溢出时向中断标志位TF0进位(称为硬件置位TF0),并请求中断。若

9、这时定时/计数器中断被开放,并且没有其他中断请求或其他中断请求的优先级较低,CPU会自动相应中断,进入相应的中断服务程序;也可以在定时/计数器中断被禁止的情况下,通过查询TF0是否置位来判断定时/计数器的操作完成与否。C/T=0时,作为定时器方式工作,T0对机器周期计数,其定时时间为:(213-T0初值初值)振荡周期振荡周期12当GATE=1,且TR0=1时,外部信号通过INT0引脚直接开启或关断定时/计数器的计数。当输入高电平时允许计数,否则停止计数。这种操作方法可用于测量加到INT0的外部信号脉冲宽度。作为计数器方式工作时,T0对外部事件计数。以上的说明同样适合于定时器T1。二、应用举例二

10、、应用举例 由前面的论述可知,MCS-51单片机的定时/计数器是可编程的,因此,在使用定时/计数器进行定时或计数之前,首先要通过软件对它进行初始化。初始化包括下述几个步骤:初始化包括下述几个步骤:1.确定工作方式:对确定工作方式:对TMODTMOD寄存器赋值;寄存器赋值;2.置定时置定时/计数器初值:对计数器初值:对TH0、TL0或或TH1、TL1寄存器赋值;寄存器赋值;设加1计数器的最大值为N(方式0,N=213;方式1,N=216;方式2、3,N=28),由于采用加法计数,则初值X的计算方法如下:计数方式时:X=N-M 定时方式时:X=N-t/T 在上两式中,M为计数模值,即从计数器启动到

11、溢出时所需计数值;t为定时值;T为计数周期,单片机振荡周期的12倍。3.根据需要,开放定时器中断:对根据需要,开放定时器中断:对IEIE寄存器赋值;寄存器赋值;4.4.启启动动定定时时/计计数数器器:使使TCONTCON寄寄存存器器的的TRTR0 0或或TRTR1 1置置位位,或或由由加加到到引脚引脚INTINTX X上的外部信号电平启动。上的外部信号电平启动。之后,定时/计数器即按规定的工作方式和初值进行定时或开始计数。例例6-16-1 利用T0方式0产生宽度为2s,周期为2ms的定时负脉冲,由P1.7送出,系统采用12MHz的晶振。解解 由于晶振为12MHz,机器周期为1s,这样利用T0方

12、式0产生周期为2ms定时的初值X为:X=N-t/T=213-210-3/(110-6)=8192-2000=6192=1830H 则TH0=11000001B=0C1H,TL0=00010000B=10H 由于CLR bit和NOP指令的执行时间为1个机器周期,当晶振为12MHz时,这两条指令的执行时间都为1s。这样,每当定时时间到时,利用T0产生中断,在中断服务程序中,先执行CLR P1.7和NOP两条指令,然后执行SETB P1.7,最后重装TH0和TL0的初值,就可以产生题目所要求的定时脉冲。置 T0为 定 时 方 式 0,GATE=0,C/T=0,M1M0=00H,T1不用,可任意,一

13、般取0,故TMOD=00H,并由TR0启停T0。初始化程序初始化程序:MOVTMOD,#00HMOVTH0,#0C1H MOVTL0,#10H;初始化T0 MOVIE,#82H;开T0中断 SETB TR0;启动T0 T T0 0溢出中断服务程序溢出中断服务程序:T0INT:CLR P1.7NOPSETB P1.7MOVTH0,#0C1H;T0重置初值MOVTL0,#10HRETI方式方式1 1及其应用及其应用一、方式一、方式1 1介绍介绍当当M1M0两两位位为为01时时,定定时时/计计数数器器被被选选为为工工作作方方式式1。它与方式0基本相同,只是方式1改用了16位寄存器(TH0和TL0)全

14、部16位。要求定时周期较长时,13位计数器不够用时,可改用16位计数器。当C/T=0时,作为定时器方式工作,T0对机器周期计数,其定时时间为:(2(21616-T0初值初值)振荡周期振荡周期1212 当GATE=1,同时TR0=1时,外部信号通过INT0引脚直接开启或关断定时/计数器的计数。当输入高电平时允许计数,否则停止计数。这种操作方法可用于测量加到INT0的外部信号脉冲宽度。作为计数器方式工作时,T0对外部事件计数。以上的说明同样适合于定时器T1。二、应用举例二、应用举例 例例6-26-2 利用T0方式1产生一个50Hz的方波,由P1.7送出。系统采用12MHz的晶振,并假定CPU不作其

15、它工作。解解 由于周期为1/50Hz=20ms,则这种方波的正负脉冲宽度都为10ms。只要利用T0方式1产生10ms定时,每次定时时间到时,使P1.7取反一次,并让T0的重装初值,即可得到50Hz的方波。由于晶振为12MHz,机器周期为1s,这样利用T0方式1产生10ms定时的初值X为:X=N-t/T=216-1010-3/(110-6)=65536-10000=55536=D8F0H 则TH0=11011000B=0D8H,TL0=11110000B=0F0H 置T0为定时方式1,GATE=0,C/T=0,M1M0=01H,T1不用,可任意,一般取0,故TMOD=01H,并由TR0启停T0。

16、由于 CPU不作其它工作,则可采用查询方式进行控制。程序清单:程序清单:MOVTMOD,#01H MOVTH0,#0D8H MOVTL0,#0F0H;初始化T0SETB TR0;启动T0LOOP:JBC TF0,AGN;查询定时时间到否?AJMP LOOP;定时时间未到,则继续查询等待AGN:MOVTH0,#0D8H;定时时间到,T0重置初值MOVTL0,#0F0H CPL P1.7;输出取反NOPAJMP LOOP;重复循环方式方式2 2及其应用及其应用一、方式2介绍当M1M0两位为10时,定时/计数器被选为工作方式2。这种方式使定时/计数器成为能重置初值的8位定时/计数器。在这种方式下,1

17、6位计数器分作两个8位计数器:TL0作为8位计数器,TH0用作保存计数初值。一旦TL0计数溢出,便置位TF0,并将TH0的内容重新装入TL0中进行新的一轮计数,如此循环重复不止。因此,这种方式特别适合用作较精确的脉冲信号发生器,脉冲信号的周期计算如下:(2(28 8-TH0初值初值)振荡周期振荡周期1212 以上的说明同样适合于定时器T1。二、应用举例二、应用举例 由于方式2可省去用户软件重装初值的操作,可获得相当精确的定时时间,因此T1常用作串行口波特率发生器。在程序初始化时,要对TH0和TL0赋同样的初值。例例6-36-3 采用11.059MHz晶振,将T1用作串行口波特率发生器,按方式2

18、产生1200的波特率.解解 参9.1节可以知道,波特率的计算如下:波特率=若SMOD=0,则可以算得重装载值:(TH1)=256-232=E8H 置T1为定时方式2,GATE=0,C/T=0,M1M0=02H,T0不用,可任意,一般取0,故TMOD=20H,并由TR1启停T1。程序清单:MOVTMOD,#20HMOVTH1,#0E8HMOVTL1,#0E8H;初始化T1SETB TR1;启动T1方式方式3 3及其应用及其应用当当M1M0两两位位为为11时时,定定时时/计计数数器器被被选选为为工工作作方方式式3。在方式3下,定时器T1将停止计数,只是保持其计数值,与置TR1为0等效。定时器T0在

19、方式3下分成两个独立的计数器TL0和TH0,见图6-5所示。其中,TL0可用作定时或计数器,并占用定时器T0的所有控制位:GATE,C/T,TR0,INT0和TF0;而TH0固定作为定时器用,并借用定时器T1的TR1和TF1,这时TH0控制着定时器的T1中断。当定时器T0在方式3时,定时器T1仍可按方式0、1、2工作,只是不能使用其溢出标志TF1和请求中断而已。图图6-2定时定时/计数器计数器T0方式方式3的结构图的结构图 C/T=0 中断 T0 C/T=1控制 TR0 GATE INT0 中断 TR112振荡器TL0(8位)TF012振荡器TH0(8位)TF1 二、应用举例二、应用举例 当按

20、方式2将定时器T1用作串行口波特率时,为增加一个额外的定时器,可将定时器T0设置成方式3工作。例例6-46-4假设某用户系统中,采用12MHz晶振,已将T1按方式2工作,用作串行口波特率发生器,并且已使用了2个外部中断。现要求再增加一个外部中断源,并由P1.7口输出一个5KHz的方波。解解为了不增加其它硬件的开销,可把定时器T0置于计数工作方式3,利用T0端作为附加的外部中断输入端,把TL0预置为0FFH,这样当T0输入端出现由1至0的负跳变时,TL0立即溢出,申请中断,相当于边沿触发的外部中断源。在方式3下,TH0总是作为8位定时器用,可以用它来控制P1.7口输出的方波频率。由P1.7输出5

21、KHz的方波,即每隔100s使P1.7口的电平变化一次,TH0初值X为:X=N-t/T=28-10010-6/(110-6)=256-100=156=9CH 置T1为定时方式2,GATE=0,C/T=0,M1M0=02H,T0为计数方式3,GATE=0,C/T=1,M1M0=03H,,故TMOD=27H,并由TR0启停T0。采用中断方式来判断TH0的定时时间到否,每次时间到时,在定时器T0中断服务程序中将P1.7口取反一次。初始化程序:初始化程序:MOVTMOD,#27HMOVTH0,#9CHMOVTL0,#0FFH;初始化T0MOV TCON,#55H;置外部中断边沿触发方式,并启动T0和T

22、1MOV IE,#9FH;开放全部中断TLTL0溢出中断服务程序溢出中断服务程序:TL0INT:MOV TL0,#0FFH(相关中断处理)RETITHTH0溢出中断服务程序溢出中断服务程序:TH0INT:MOV TH0,#9CH CPLP1.7 RETI定时器定时器/计数器应用的其它问题计数器应用的其它问题一、定时器溢出和中断的同步一、定时器溢出和中断的同步 定时器溢出时,自动产生内部中断请求,若此时中断已经开放,该中断会被响应。但真正进入中断服务程序要经过的时间并非固定不变,而取决于其它中断服务程序是否正在运行,或取决于正在执行什么样的指令。若定时器溢出中断是唯一的中断源,则延时时间取决于正

23、在执行什么样的指令,可能在3至8个机器周期内变化,在这种情况下,相邻2次定时中断响应的间隔的变化不大,在对定时精度要求不高的场合,可以忽略。但在对定时精度要求高的场合,需要对由此引起的误差进行补偿,可采用以下方法:在定时器溢出中断得到相应时,停止定时器计数,读出计数值(它反映了中断响应的延迟时间),根据此数值计算出到下一次中断所需的时间,并修改相应的定时器初值和重新启动定时器。二、读运行中定时二、读运行中定时/计数器计数器 为了对定时时间进行补偿,需要读出和改变定时/计数器的计数值。采用先停定时器,后读出并改变计数值的方法。在某些场合,希望不间断定时过程的情况下,读出定时器某刻的瞬时计数值,但

24、如不注意,读出的计数值可能出错,因为THX和TLX不可能同时读出。解解决决办办法法:先读THX,后读TLX,再读THX。若2次读得的THX没有变化,则读得的内容是正确的;若前后2次读得的THX有变化,则重复上述过程,直到2次读得的THX没有变化。三、定时器门控位三、定时器门控位GATE的应用的应用前面讲过,门控位GATE用于选择控制定时/计数器启停的信号,当GATE=0时,定时/计数器的运行由TRX控制;当GATE=1,且TRX=1时,外部信号通过INTX引脚直接开启或关断定时/计数器的计数。当输入1电平时允许计数,否则停止计数。这一特点可极为方便地用于测量加到INTX的外部信号脉冲宽度。小小

25、结结在在MCS-51单单片片机机内内部部含含有有两两个个16位位定定时时/计计数数器器:T0和和T1,它们由振荡器分频输入电路、外部计数脉冲输入电路、计数脉冲选择电路、计数启停电路、加1计数器和中断标志等组成。其核心是一个加1计数器,每输入一个脉冲,计数值加1,当计数到计数器全为1时,再输入一个脉冲就使计数值回零,同时从最高位溢出一个脉冲使控制寄存器TCON的TFX(X=0或1)位置1,作为计数器的溢出中断标志。T0和和T1的的启启动动和和停停止止由由方方式式寄寄存存器器TMODTMOD的的GATEGATE位位控控制制:GATE为0时,由寄存器TCON的TR X(X=0或1)位启动(这时TR

26、X=1)或停止(这时TR X=0);GATE位为1,且TR X(X=0或1)为1时,由中断引脚INT X(X=0或1)的外部信号电平启动(这时INT X=1)或停止(这时INT X=0)。通通过过方方式式寄寄存存器器TMODTMOD的的C/TC/T位位来来选选择择加加1 1计计数数器器计计数数脉脉冲冲的的来来源源:当C/T=1时,计数脉冲来自系统外部的脉冲源,这时定时/计数器成为外部事件计数器,工作于计数器状态;当C/T=0时,计数脉冲来自系统的时钟振荡器的12分频,由于这时的计数脉冲为一时间基准,脉冲数乘以脉冲间隔时间就是定时时间,这时定时/计数器工作于定时器状态。通通过过方方式式寄寄存存器

27、器TMODTMOD的的M1M0位位来来设设定定T0和和T1的的工工作作方方式式:当M1M0两位为00时,定时/计数器被选为工作方式0,16位寄存器(TH0和TL0)只用13位,由TH0的8位和TL0的低5位构成,因此方式0是一个13位的定时/计数器;当M1M0两位为01时,定时/计数器被选为工作方式1,它与方式0基本相同,只是方式1改用了16位寄存器(TH0和TL0)的全部16位;当M1M0两位为10时,定时/计数器被选为工作方式2,16位计数器分作两个8位计数器,TL0作为8位计数器,TH0用作保存计数初值,一旦TL0计数溢出,便置位TF0,并将TH0的内容重新装入TL0中进行新的一轮计数,

28、如此循环重复不止,常将T1设定为方式2用作串行接口的波特率发生器;当M1M0两位为11时,定时/计数器被选为工作方式3,定时器T0在方式3下分成两个独立的计数器TL0和TH0,其中,TL0可用作定时或计数器,并占用定时器T0的所有控制位(GATE,C/T,TR0,INT0和TF0),而TH0固定作为定时器用,并借用定时器T1的TR1和TF1,这时TH0控制着定时器的T1中断,在方式3下,定时器T1将停止计数,只是保持其计数值,与置TR1为0等效。思考题与习题六思考题与习题六1.8051单片机内部设有几个定时/计数器?它们是由哪些专用寄存器组成?定时、计数的速率(即计数频率)各为多少?2.简述定

29、时/计数器的四种工作方式及其特点,并说明如何选择和设定?3.选用T1方式0产生500s的定时,在P1.0,输出周期为1ms的方波,晶振fosc=6MHz。4.已知8051单片机系统时钟频率为6MHz,试用定时器T0方式2和P1口输出周期性矩形脉冲,其周期为400s,正脉冲宽度为400s。5.试用定时器T1设计外部事件计数器。要求每计数1万个脉冲,就将T1转为10ms定时方式,当定时到后,又转为计数方式,如此反复循环不止。当系统的时钟频率为6MHz时,编写相应程序。6.已知8051单片机系统时钟频率为6MHz,利用其定时器方式1测量某正脉冲宽度时,能测量的最大脉宽是多少?若脉宽大于此极限值时,采用何种办法测量?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁