第6章MCS-51的定时器、计数器(4学时)_第1页
第6章MCS-51的定时器、计数器(4学时)_第2页
第6章MCS-51的定时器、计数器(4学时)_第3页
第6章MCS-51的定时器、计数器(4学时)_第4页
第6章MCS-51的定时器、计数器(4学时)_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1、定时器计数器结构与原理定时器计数器结构与原理定时器计数器方式、控制寄存器定时器计数器方式、控制寄存器 在单片机实时应用系统中,往往需要实时时钟在单片机实时应用系统中,往往需要实时时钟或对外部参数计数的功能。一般常用软或对外部参数计数的功能。一般常用软 件、专门的硬件电路或可编程定时器计数器件、专门的硬件电路或可编程定时器计数器来实现。采用软件只能定时,且占用来实现。采用软件只能定时,且占用CPU的时的时 间,降低了间,降低了CPU的使用效率。若用专门的硬件的使用效率。若用专门的硬件电路,参数调节不便。最好的方法是利用可电路,参数调节不便。最好的方法是利用可 编程定时器计数器。编程定时器计数器。

2、MCS-51单片机内部提单片机内部提供了两个供了两个16位的可编程的定时器计数器,通位的可编程的定时器计数器,通过编程可方便灵活地修改定时或计数的参数或过编程可方便灵活地修改定时或计数的参数或方式,并能与方式,并能与CPU并行工作,大大提高并行工作,大大提高CPU的的 工作效率。工作效率。6.1定时器计数器结构与原理定时器计数器结构与原理功能:对外部事件脉冲计数;每隔特定时间功能:对外部事件脉冲计数;每隔特定时间执行某一操作、如定时检测定时控制执行某一操作、如定时检测定时控制定时器计数器的内部结构与功能定时器计数器的内部结构与功能8051单片机内置了两个单片机内置了两个16位的定时器计数位的定

3、时器计数器器T0/P3.4(14)、T1/P3.5(15),其内部结构如图其内部结构如图1-13所示。所示。定时器计数器主要由几个特殊功能寄存定时器计数器主要由几个特殊功能寄存器器TH0, TL0、TH1、TL1、TMOD及及TCON组成组成。其中,其中,TH0、TL0和和TH1、TL 1分别构成分别构成定时器计数器的两个核心部件定时器计数器的两个核心部件16位位加法计数器加法计数器.TH0, TH1分别为两个加法计数器的高分别为两个加法计数器的高8位,位,TL0、TL1分别为两个加法计数器的低分别为两个加法计数器的低8位。位。定时器计数器方式寄存器定时器计数器方式寄存器TMOD用于设置用于设

4、置定时器计数器定时器计数器T0、T1的工作模式和工作的工作模式和工作方式。方式。定时器定时器/计数器控制寄存器计数器控制寄存器TCON用于启动和用于启动和停止定时器计数器的计数,并于计数器停止定时器计数器的计数,并于计数器计满时向计满时向CPU提出中断请求。提出中断请求。各寄存器中的内容可以由软件设定。系统复各寄存器中的内容可以由软件设定。系统复位时,位时,TMOD、TCON两个寄存器中所有两个寄存器中所有位都被清零。位都被清零。定时器计数器有两种工作模式,即定时工作定时器计数器有两种工作模式,即定时工作模式和计数工作模式。模式和计数工作模式。两者的工作原理相同,只是计数脉冲来源有所两者的工作

5、原理相同,只是计数脉冲来源有所不同。不同。在这两种模式下,又可单独设定为方式在这两种模式下,又可单独设定为方式0、方式、方式1、方式、方式2、方式、方式3工作工作MCS-51 计数计数/定时器的实质定时器的实质 实质是计数器,脉冲每一次下降沿,计数寄存器数值将加实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1. 计数的脉冲如果来源于单片机内部的晶振由于其周期极为计数的脉冲如果来源于单片机内部的晶振由于其周期极为准确,这时称为定准确,这时称为定时器时器。 计数的脉冲如果来源于单片机外部的引脚,由于其周期一般计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不大准确,这时称为计不大准确,这时

6、称为计数器数器。+1计数器溢出中断脉冲控制开关8051 有2个可独立控制的16位定时器/计数器:T0、T1 处于处于计数工作模式计数工作模式时,时,加法计数器对芯片端子加法计数器对芯片端子T0 (P3. 4 )或或Tl (P3. 5)上的输入脉冲计数。上的输入脉冲计数。每输入一个脉冲,加法计数器在事先设定的初每输入一个脉冲,加法计数器在事先设定的初值基础上加值基础上加1,计数器计满溢出时可向计数器计满溢出时可向CPU发出发出中断请求信号。中断请求信号。中断服务程序入口中断服务程序入口:00B(T0) , 001B(T1)处于处于定时器工作模式定时器工作模式时,时,加法计数器对内部机加法计数器对

7、内部机器周期脉冲计数。器周期脉冲计数。由于机器周期是定值由于机器周期是定值(1个机器周期由个机器周期由12个时钟周个时钟周期组成),所以对机器周期计数就是定值。期组成),所以对机器周期计数就是定值。计算公式如下计算公式如下: 定时时间定时时间=机器周期机器周期计数值计数值 定时定时/计数器是一个二进制计数器,当计数满计数器是一个二进制计数器,当计数满回零时能自动产生溢出中断请求,表示时间已回零时能自动产生溢出中断请求,表示时间已到或计数已经终止到或计数已经终止6.2定时器计数器方式、控制寄存定时器计数器方式、控制寄存器器定时器计数器方式控制寄存器定时器计数器方式控制寄存器TMOD(89H) 定

8、时器计数器有两种工作模式、四种工作方定时器计数器有两种工作模式、四种工作方式,可以通过设置方式控制寄存器式,可以通过设置方式控制寄存器TMOD来来选择。选择。TMOD的低的低4位用于控制定时器计数器位用于控制定时器计数器T1方式,方式,高高4位用于控制定时器计数器位用于控制定时器计数器T1方式。其位方式。其位定义如下。定义如下。M1、M0定时器定时器计数器工作方式选计数器工作方式选择位。择位。GATEC/TM1M0GATEC/TM1M0M1 M0方方式式功功能能描描述述0 0013位位0 1116位位1 028位位自自动动重重装装1 13T0为为两两个个 8位位定时器控制、状态寄存器1)TMO

9、D定时器方式寄存器(89H)1)功能选择位C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚T0(T1)输入的负脉冲。2)方式选择位M1、M0:4种工作方式:3)门控方式选择位GATE 计数器启动方式的选择GATEC/TM1M0GATEC/TM1M0T1T0 C/T定时或计数工作模式选择位定时或计数工作模式选择位C/T=1时为计数方式;时为计数方式;C/T=0时为定时为定时方式。时方式。 GATE门控位。门控位。GATE=0,只要用软件对,只要用软件对TR0或或TR1置置1就就启动了定时器计数器;启动了定时器计数器;GATE= 1,只有,只有/INT0(或(或/INT1)端

10、子为)端子为1,且用软件对,且用软件对TR0(或(或TR1)置置1才能启才能启动定时器计数器工作。动定时器计数器工作。TMOD的所有位整机复位后清零。的所有位整机复位后清零。TMOD不能位寻址,只能用字节不能位寻址,只能用字节方式设置工作方式设置工作方式。方式。确定定时器工作方式指令:确定定时器工作方式指令:20142014年年1111月月1717日日 M MOV TMV TMOD D,# #方式字方式字例:设例:设T0T0用方式用方式2,2,非门控定时,非门控定时,T1T1用方式用方式1,1,门控计数。门控计数。 M MOV TMV TMOD D,#0D2H ; #0D2H ; 1101 0

11、010 B 1101 0010 B(2)定时器计数器控制寄存器)定时器计数器控制寄存器TCON 控制寄存器控制寄存器TCON用于控制定时器用于控制定时器/计数器计数器的启动、停止以及标明定时器计数器的启动、停止以及标明定时器计数器的溢出和中断情况的溢出和中断情况.高高4位存放定时器计数器的运行控制位和位存放定时器计数器的运行控制位和溢出标志位,低溢出标志位,低4位与外部中断有关。各位与外部中断有关。各位的定义如下。位的定义如下。TF1定时器计数器定时器计数器T1溢出标志。当溢出标志。当TI溢出(计数完成)时,此位由硬件置溢出(计数完成)时,此位由硬件置1TF1可以由程序查询,也可以作为中断源可

12、以由程序查询,也可以作为中断源向向CPU申请中断,申请中断,系统响应中断后,又系统响应中断后,又由硬件自动清零由硬件自动清零。TFl也可以由软件清零。也可以由软件清零。TRl定时器计数器定时器计数器T1运行控制位。可运行控制位。可以通过以通过用软件对该位置用软件对该位置1或清零来启动或或清零来启动或停止停止T1的工作。的工作。 TF0定时器计数器定时器计数器T0溢出标志。其功溢出标志。其功能与操作同能与操作同TF1 TR0定时器计数器定时器计数器T0运行控制位。其功能运行控制位。其功能与操作同与操作同TR1。 IE1外部中断外部中断1的中断标志。若检测到外部中的中断标志。若检测到外部中断断1端

13、子端子/INT1信号有效(低电平触发或边沿触信号有效(低电平触发或边沿触发)时,由硬件置发)时,由硬件置1,向,向CPU申请中断,中断申请中断,中断响应后不能自动清零。响应后不能自动清零。IT1外部中断外部中断1触发方式控制位,触发方式控制位,IT1= 0,为低,为低电平触发;电平触发; IT1 =l,为下降沿触发。,为下降沿触发。IE0 外部中断外部中断0的中断标志。其功能与操作同的中断标志。其功能与操作同IE1。IT1外部中断外部中断0触发方式控制位。其功能与操触发方式控制位。其功能与操作同作同IT1定时器计数器控制寄存器定时器计数器控制寄存器TCON可以进行位寻可以进行位寻址,其各位位地

14、址为址,其各位位地址为8FH88H,整机复位时,整机复位时,所有位均被清零。所有位均被清零。6.3 定时器工作方式定时器工作方式 由方式选择位由方式选择位M1M1、M0M0设定设定, ,有四种组合有四种组合1.方式方式0 M1M0=000 M1M0=001313位定时位定时/ /计数器计数器。 THx 8THx 8位和位和TLxTLx低低5 5位组成位组成1313位加位加1 1计数器计数器,此种,此种方式与方式与MCSMCS4848系列兼容,如果不是为了兼容的系列兼容,如果不是为了兼容的目的,一般不用方式目的,一般不用方式0.0.方式方式0 0的全部功能,方式的全部功能,方式1 1都可以代替。

15、都可以代替。TL1的低的低5位计数器计满则向位计数器计满则向TH1进位进位,而,而TH1计数器计满(溢出)时,则会令计数器计满(溢出)时,则会令TF1=1(硬件(硬件置置1),并请求中断。,并请求中断。CPU可以通过查询可以通过查询TF1为为1或为或为0来判断定时器计数器是否计数完成。来判断定时器计数器是否计数完成。 当当C/T=1,为计数器工作模式。多路开关为计数器工作模式。多路开关与与T1端子端子(P3. 5)接通。接通。T1对来自外部端对来自外部端子子T1的输入脉冲进行计数。当外部信号的输入脉冲进行计数。当外部信号发生由发生由“1” 变变“0”的跳变时,计数器的跳变时,计数器加加1。即。

16、即计负跳变的次数计负跳变的次数。定时时间定时时间t= (213-T1初值)初值)机器周期机器周期计数范围为计数范围为02 13,即,即08192。注意:注意:由于识别一个跳变需两个机器周期,所以外部由于识别一个跳变需两个机器周期,所以外部输入脉冲的频率应小于输入脉冲的频率应小于fosc / 24 ( f osc:为振荡为振荡频率)频率)当当GATE=0时,时,/INT1被封锁,被封锁,T1的开启和关闭的开启和关闭仅由仅由TRl置置1或清零来控制。或清零来控制。当当GATE=1时,时,T1的开启和关闭由的开启和关闭由TR1和和/INT1相与的结果来控制。相与的结果来控制。仅当仅当TR1=1,且且

17、/INT1端子上出现高电平(即无外端子上出现高电平(即无外部中断请求信号)时,开关闭合,定时器计部中断请求信号)时,开关闭合,定时器计数器数器T1开始工作。当开始工作。当/INT1端子上出现低电平端子上出现低电平(即有外部中断请求信号)时,(即有外部中断请求信号)时,T1停止工作。停止工作。2.工作方式工作方式1当当M1M0=01时,定时器计数器设定为工作方时,定时器计数器设定为工作方式式1,电路结构框图如图,电路结构框图如图1-15所示。可见,方所示。可见,方式式1与方式与方式0的差别仅在于工作方式的差别仅在于工作方式1是是16位计位计数器参与计数。计数最大值为数器参与计数。计数最大值为2

18、16方式方式1 M1M0=011 M1M0=011616位定时位定时/ /计数器。计数器。 THx8THx8位和位和TLx8TLx8位组成位组成1616位位加加1 1计数器计数器 最大计数脉冲个数:165536(216):t=(216-T1初值)机器周期最长定时时间(晶振12MHz T=1s):1s 65536T= 65.54ms非门控方式:当非门控方式:当GATE0, 控制权由控制权由 TRx 决定决定 TRx1 计数开始计数开始 TRx 0 计数停止计数停止门控方式:当门控方式:当GATE1、TRx1 控制权由控制权由 / INTx 决定决定 /INTx1 计数开始计数开始 /INTx 0

19、 计数停止计数停止启动计数方式:启动计数方式:即即65536;定时时间为定时时间为:t=(216-T1初值)初值)机器周期机器周期3.工作方式工作方式2当当M1M0=10时,定时器计数器设定为工作时,定时器计数器设定为工作方式方式2,构成一个能重复置初值的,构成一个能重复置初值的8位定时器位定时器计数器,其电路结构框图如图计数器,其电路结构框图如图1-16所示所示(以(以T1为例)。为例)。TL1用作用作8位加法计数器,位加法计数器,TH1用来保存初值。用来保存初值。在工作方式在工作方式0、工作方式、工作方式1,计数器计满溢出,计数器计满溢出时,计数器变为全时,计数器变为全0,再次计数还得用软

20、件重再次计数还得用软件重新装入初值。新装入初值。而工作方式而工作方式2中,计数器计满溢出时,不仅置位中,计数器计满溢出时,不仅置位TF 1,而且将,而且将TH1中的初值自动送入中的初值自动送入TL1并从并从初值开始重新计数,初值开始重新计数,TH1中内容保持不变。中内容保持不变。工作方式工作方式2对定时控制特别有用,因为在这种工对定时控制特别有用,因为在这种工作方式下,用户不必在程序中重新装入初值,作方式下,用户不必在程序中重新装入初值,就能获得高精度的定时时间。计数最大值为就能获得高精度的定时时间。计数最大值为28,即即256,定时时间为定时时间为 t=(28-T1初值)初值)机器周期机器周

21、期方式2 做串口波特率发生器自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器。用于需要重复定时和计数的场合。最大计数值:256 (28)最大定时时间(晶振12MHz时 T=1s): 256s4.工作方式工作方式3当当M1 M1=11时,定时器计数器设定为工作方时,定时器计数器设定为工作方式式3,该方式只适用于定时器计数器,该方式只适用于定时器计数器T0。T1停止计数。停止计数。电路结构框图如图电路结构框图如图1-17所示。所示。T0中的中的TH0、TL0被分成两个独立的被分成两个独立的8位定时器计数器,适合位定时器计数器,适合使用在需要多个使用在需要多个8位定时器

22、计数器的场合。位定时器计数器的场合。TL0使用所有定时器计数器使用所有定时器计数器T0的控制位,如的控制位,如GATE, C/T、TF0, TR0及及/INT0;而而TH0则占用定时器计数器则占用定时器计数器T1的两个控制位的两个控制位TR1, TF1,并且并且由于由于TH0只有内部时钟输入信只有内部时钟输入信号,故只能充当定时器使用。号,故只能充当定时器使用。房房在这种情况下,在这种情况下,T1虽仍可工作于方式虽仍可工作于方式0、1、2,但不能使用中断方式。,但不能使用中断方式。这时这时T1的运行由方式来控制,方式的运行由方式来控制,方式3停止停止计数,计数, 方式方式02设置后自动开始计数

23、,设置后自动开始计数,溢出后对溢出后对TF1无影响无影响通常当作串行端口的波特率发生器或是不通常当作串行端口的波特率发生器或是不需中断的场所使用。需中断的场所使用。TH0、TL0定时时定时时间的计算方法如方式间的计算方法如方式2 6.46.4定时计数器的初始化定时计数器的初始化 用程序对定时计数器进行初始化,一般有以用程序对定时计数器进行初始化,一般有以下几个步骤。下几个步骤。 确定工作方式确定工作方式对方式寄存器对方式寄存器TMOD赋值。赋值。 预置定时或计数初值,直接将初值写入预置定时或计数初值,直接将初值写入TL0、TH0或或TL1、TH1中。中。 根据需要对中断允许寄存器有关位赋值,以

24、根据需要对中断允许寄存器有关位赋值,以开放或禁止定时计数器中断。开放或禁止定时计数器中断。 启动定时计数器,使启动定时计数器,使TCON中的中的TR1或或TR0置置“1”,计数器即按确定的工作方式和初,计数器即按确定的工作方式和初值开始计数或定时。值开始计数或定时。 设计数器最大计数值为设计数器最大计数值为M,选择不同的工作方式,选择不同的工作方式,最大计数值最大计数值M不同。不同。 方式方式0:M2138192。 方式方式1:M21665 536。 方式方式2、3:M28256。 置入计数初值置入计数初值X计算如下。计算如下。 计数方式,计数方式,X=M-计数值(计数值(X即为计数值的即为计

25、数值的补码)。补码)。 定时方式,(定时方式,(M-X)x T=定时值,故定时值,故X=M-定时值定时值T 其中其中T为计数周期,是单片机时钟的为计数周期,是单片机时钟的12分分频,即单片机机器周期。当晶振为频,即单片机机器周期。当晶振为6MHz时时,T=2s,当晶振当晶振12MHz时时, T=1 例例6-1若单片机晶振为若单片机晶振为12MHz,要求产生,要求产生500 s定时,试计算定时,试计算X的初值。的初值。 由于由于T= 1 s ,产生,产生500 s定时,则需定时,则需要要“1500次,定时器方能产生溢出。次,定时器方能产生溢出。 采用方式采用方式0 X213-(500 X 10-

26、61x10-6)=7692=1E0CH 但在方式但在方式0中中TL1高高3位是不用的,都设为位是不用的,都设为“0 ”;则则1E0CH应写成应写成 实际上从上述表达式中我们可以清楚地实际上从上述表达式中我们可以清楚地看出看出F00CH,去掉了去掉了3个不用的位后,就个不用的位后,就是是1E0CH,即将即将F0H装入装入TH1,0CH(带下带下划线的划线的01100B)装入装入 TL1的低的低5位。位。 如果采用方式如果采用方式1 X=216-(500 x10-61x10-6)=65036=FE0CH 即即FEH装入装入TH1,0CH装入装入TL1,时间,时间常数(初值)的计算就相对简单。常数(

27、初值)的计算就相对简单。 6.5定时计数器应用举例定时计数器应用举例 1作定时器用作定时器用 1)定时器方式定时器方式0的应用的应用 例例6-2设主频为设主频为12MHz,利用定时器,利用定时器T1定时,定时,使使P1. 0输出周期为输出周期为2ms的方波。的方波。 用用P1.0作方波输出信号,周期为作方波输出信号,周期为2ms的方波即的方波即每每1ms改变一次电平,故定时值应为改变一次电平,故定时值应为1ms,可作,可作“1运算运算1000次,使次,使T1作定时器工作在方式作定时器工作在方式0,即,即13位计数器。位计数器。 定时初值:定时初值:X=M一计数次数一计数次数=8192-1000

28、=71921C18H。 由于由于TL1的高的高3位不用,位不用,1C18H可写成:可写成:11100000 000 11000B=E018H TH1初值为初值为E0 H,TL1初值为初值为18H。 MOV TMOD;#0;T1按方式按方式0工作工作 MOV TH1,#0E0H MOV TL1, # 18H;给计数器赋值;给计数器赋值 SETB EA ;CPU开中断开中断 SETB ET1 :T1允许中断允许中断 SETB TR1;启动;启动Tl SJMP;主程序等待;主程序等待 ORG 001BH;T1中断入口中断入口 AJMP BRT1;转;转T1中断服务中断服务 BRT1:MOV TH1,

29、#0E0H MOV TL1,#18H;重装;重装T1初值初值 CPL P1.0;输出方波;输出方波 RETI;返回;返回 2)定时器方式定时器方式1的应用的应用 若定时器若定时器T1按方式按方式1工作,即工作,即16位计数器,则位计数器,则定时初值:定时初值: X=M-计数次数计数次数65 536-1000=64 536=FC18H TH1初值为初值为FCH, TL1初值为初值为18H.其他编程与其他编程与方式方式0类同。类同。 例例6-3根据例根据例5-2要求产生周期为要求产生周期为2ms方波,但方波,但不用中断方式,而用查询方式工作,查询标志不用中断方式,而用查询方式工作,查询标志位位TF

30、1。 利用方式利用方式1,16位计数器,当定时时间到位计数器,当定时时间到,T1计数器溢出使计数器溢出使TF1置置“1”,由于不采用中断方,由于不采用中断方式式TF1置置“1”后不会自动复后不会自动复“0”,故需要指,故需要指令给令给TF1清清“0”。 MOV TMOD,#10H;置;置T1为方式为方式1 SETB TR1;启动;启动T1定时定时 LOOP:MOV TH1,#0FCH MOV TL1,#18H;装入初值;装入初值 JNB TF1,$;TF1=0,则继续查询,则继续查询 CPL P1.0 ;输出方波;输出方波 CLR TF1;0TF1 SJMP LOOP;重复下一次循环;重复下一

31、次循环 程程序很简单,但序很简单,但CPU效率不高。效率不高。 2.作计数器用作计数器用 计数器方式计数器方式2的应用。的应用。 例例6-4用用T0监视一生产流水线,每生产监视一生产流水线,每生产100个个工件,发出一包装命令,包装成一箱,并记录工件,发出一包装命令,包装成一箱,并记录其箱数。其箱数。 硬件电路如图硬件电路如图5-9所示。所示。 用用T0作计数器作计数器,RL为光敏电阻,当有工件通为光敏电阻,当有工件通过时,过时,RL阻值升高,三极管输出高电平,即阻值升高,三极管输出高电平,即每通过一个工件,便会产生一个计数脉冲。每通过一个工件,便会产生一个计数脉冲。 方式字方式字TMOD 计

32、数初值计数初值X=M-64H9CH。 用用P1. 0启动外设发包装命令。启动外设发包装命令。 用用R5R4作箱数计数器。作箱数计数器。 MOV P1.0,#0;P1.0为低为低 MOV R5,#0 MOV R4,#0;箱数计数器清;箱数计数器清”0” MOV TMOD,#6;置;置T0工作方式工作方式 MOV TH0,#9CH MOV TL0,#9CH;计数初值送计数器;计数初值送计数器 SETB EA ;CPU开中断开中断 SETB ET0 ;T0开中断开中断 SETB TR0;启动;启动T0 SJMP $;模拟主程序;模拟主程序 ORG 000BH;T0中断入口中断入口 AJMP COUN

33、T;转向中断服务;转向中断服务 COUNT:MOV A,R4 ADD A,#1 MOV R4,A MOV A,R5 ADDC A,#0 MOV R5,A;箱计数器加;箱计数器加”1” SETB P1.0;启动外设包装;启动外设包装 MOV R3,#100 DLY:NOP;给外设足够时间;给外设足够时间 DJNZ R3,DLY;延时;延时 CLR P1.0;停止包装;停止包装 RETI;中断返回;中断返回 3.门控位门控位GATE的应用的应用 例例6-5用用GATE控制位,测量控制位,测量/INT1(P3. 3)引引脚上正脉冲的宽度(设晶振为脚上正脉冲的宽度(设晶振为12MHz,正脉,正脉冲宽度

34、小于冲宽度小于65 ms)。)。 MOV TMOD,#90H;置;置T1方式控制字方式控制字 MOV TL1,#0 MOV TH1,#0;T1从从0开始计数开始计数 JB P3.3,;等待,;等待/INT1低电平低电平 JNB P3.3,;等待,;等待/INT1高电平高电平 SETB TR1;T1允许计数允许计数 JB P3.3,;等待,;等待/INT1低电平低电平 CLR TR1;停止计数;停止计数 执行完执行完CLR TR1后后T1停止计数,此时停止计数,此时TH1, TL1的内容即为正脉冲宽度(单位:的内容即为正脉冲宽度(单位:s)。测)。测量误差将小于量误差将小于3个机器周期。个机器周

35、期。6.5应用举例应用举例例:应用定时器计数器时,例:应用定时器计数器时,首先首先应完成计算初值和初始化应完成计算初值和初始化(写入(写入控制字)两个过程。其中初始化控制字)两个过程。其中初始化步骤如下。步骤如下。 向向TMOD写工作方式控制字写工作方式控制字 向计数器向计数器TL、TH装入初值。装入初值。TFx=0,置置TRx=1,启动计数。,启动计数。置置ET= 1,允许中断(若需要)。,允许中断(若需要)。 置置EA=1,CPU开中断(若需要)。开中断(若需要)。定时器定时器/计数器初始化步骤计数器初始化步骤MOV TMOD,# 方式字方式字 ;选择方式;选择方式MOV THx,#XH;

36、装入;装入Tx时间常数时间常数MOV TLx,#XLCLR TFxSETB EA;开;开Tx中断中断SETB ETxSETB TRx ;启动;启动TxTx定时器定时器例例:利用定时器利用定时器T1的工作方式的工作方式1,使定时器,使定时器产生产生2 ms的定时,并使的定时,并使P1. 0端输出一个端输出一个周期为周期为4ms的方波(设晶振为的方波(设晶振为6MHz)。分析分析:定时器每到定时器每到2ms,就申请中断,在中,就申请中断,在中断服务子程序中将断服务子程序中将P1. 0的内容取反送出,的内容取反送出,即可实现上述功能。即可实现上述功能。解解:计算定时器初值计算定时器初值X晶振为晶振为

37、6MHz,则机器周期为,则机器周期为12/6MHz=2 10-6 s=2s方式方式1为为16位加位加1计数器,初值计数器,初值X计算公式如计算公式如下下: 定时时间定时时间=(216-T1初值)初值)机器周期机器周期210-3=(216 X)210-6X=65536-100064536=1111110000011000=FC18HTH1=FCH,TL1=18H设置设置TMOD 0 0 010000B=10H例:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。2ms解:每隔1ms改变一次P1.0的输出状态。用T1非门控方式1定时。 计算时间常数:X = 216 - t/T = 21

38、6 (1/1000)/10-6 = 65536-1000 = 64536 = FC18H ORG 0000HAJMP MAINORG 001BHAJMP PT1INTORG 0100H MAIN:MOV TMOD,#10HMOV TL1,#18HMOV TH1,#0FCHSETB EASETB ET1SETB TR1 HERE:SJMP HERE PT1INT:MOV TL1,#18HMOV TH1,#0FCHCPL P1.0RETI T1如果采用方式如果采用方式0工作则初值计算:工作则初值计算: X = 213 - t/T = 213 (1/1000)/10-6 = 8192-1000 =

39、7192 = 1C18H7192=1110000011000=1C18HTH1=E0H,TL1=18H程序如下:程序如下: ORG 0000HAJMP MAINORG 001BHAJMP PT1INTORG 0100H MAIN:MOV TMOD,#00HMOV TL1,#18HMOV TH1,#0E0HSETB EASETB ET1SETB TR1 HERE:SJMP HERE PT1INT:MOV TL1,#18HMOV TH1,#0E0HCPL P1.0RETI例:P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。 长定时方法:增加一个软件计数器或一个硬件计数器。硬件方式: T

40、0定时,T1计数T0的定时跳变信号P1.0的负跳变次数,计满5个跳变为1秒。T0定时100msT1计数5次 ORG 0000HAJMP START ORG030HSTART:MOV TMOD,#61H MOV TL1,#0FBH MOV TH1,#0FBH CLR P1.0 SETB TR1LOOP1: CPL P1.7LOOP2 :MOV TL0,#0B0H MOV TH0,#3CH SETBTR0LOOP3:JBC TF0,LOOP4SJMPLOOP3 LOOP4:CPL P1.0JBC TF1,LOOP1SJMPLOOP2 END中断编程中断编程 ORG0000H AJMP START

41、ORG000BH AJMPIT0 ORG001BH AJMPIT1 ORG030HSTART:MOV SP, #40H MOV TMOD, #61H MOV TL1, #0FBH MOV TH1, #0FBH CLR P1.0 SETB TR1 SETB ET1 MOV TL0, #0B0H MOV TH0, #03CH SETB TR0 SETB ET0 SET EAHERE: AJMP HERE IT0: CPL P1.0 MOV TL0,#0B0H MOV TH0,#03CH RETIIT1: CPL P1.7 RETI END应用:定时器外部引脚T0(T1)用作外部中断信号输入端。外部

42、负脉冲引起中断请求,选计数方式,时间常数为FFH。例:门控方式测量正脉冲宽度解: /INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。设脉宽小于65.5ms等待查询INT1,正脉冲过后,读出TH1TL1。TR1=1 T1启动 TR1=0 T1停止INT1 ORG 000H AJMP START ORG 100HSTART:MOV TMOD,#90H MOV TL1,#0H MOV TH1,#0HWAIT1:JBP3.3,WAIT1WAIT2 :JNB P3.3,WAIT2 SETB TR1WAIT3 : JB P3.3,WAIT3CLR TR1MOVR2,TL1MOVR3,TH1SJMP $ END设脉宽大于65.5ms,中断方式记录TH1TL1溢出中断次数。SETB ET1;开T1中断SETB EAWAIT2: JNBP3.3,WAIT2;等待正脉冲到来SETB TR1WAIT3: JBP3.3,WAIT3;等待正脉冲结束CLRTR1;关闭T1MOV IE,#00;关闭中断MOV R2,TL

温馨提示

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

评论

0/150

提交评论