南京航空航天大学微机原理与应用_薛重德_MCS-51定时器_计数器_第1页
南京航空航天大学微机原理与应用_薛重德_MCS-51定时器_计数器_第2页
南京航空航天大学微机原理与应用_薛重德_MCS-51定时器_计数器_第3页
南京航空航天大学微机原理与应用_薛重德_MCS-51定时器_计数器_第4页
南京航空航天大学微机原理与应用_薛重德_MCS-51定时器_计数器_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、2v熟悉熟悉MCS-51片内两个片内两个16位定时器位定时器/计数器计数器T0和和T1的硬件结的硬件结构及其与构及其与CPU的关系的关系;v掌握掌握T0和和T1的两种工作方式的两种工作方式,即计数方式与定时方式即计数方式与定时方式,四种四种工作模式工作模式(即计数器长度即计数器长度);v牢记牢记TMOD和和TCON各位的含意各位的含意,学会定时器控制及应用方学会定时器控制及应用方法法;掌握定时器的四种模式的应用掌握定时器的四种模式的应用.3v 在工业检测、控制中,许多场合都要用到计数或定时功在工业检测、控制中,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数、产生精确的定时时间、能。例

2、如,对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发生器。作串行口的波特率发生器。MCS-51单片机内有两个可编单片机内有两个可编程的定时器程的定时器/计数器,以满足这方面的需要计数器,以满足这方面的需要.它们具有两种它们具有两种工作模式工作模式(计数器模式和定时器模式计数器模式和定时器模式)及及4种工作方式种工作方式(方式方式0、方式、方式l、方式方式2和方式和方式3),其控制字均在相应的特殊功能,其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,用户可方寄存器中,通过对它的特殊功能寄存器的编程,用户可方便地选择适当的工作模式和工作方式。便地选择适当的工作模式和工

3、作方式。46. 1 6. 1 定时器定时器/ /计数器的结构计数器的结构 Timer/ Counter MCS-51MCS-51单片机内部有二单片机内部有二个个1616位的可编程的定时器位的可编程的定时器/ /计数器:计数器: 定时器定时器/ /计数器计数器0 0(T/C0T/C0) 定时器定时器/ /计数器计数器1 1(T/C1T/C1) 它们都有定时和对外部它们都有定时和对外部事件计数的功能,可用于定事件计数的功能,可用于定时控制、延时、对外部事件时控制、延时、对外部事件检测和计数等场合检测和计数等场合. . T/C0T/C0和和T/C1T/C1的结构及与的结构及与CPUCPU的关系如图的

4、关系如图6-16-1所示。所示。5结构组成:结构组成: T/C0由两个由两个8位的位的TH0(8CH)和和TL0(8AH)组成组成 T/C1由由TH1(8DH)和和TL1(8BH)组成组成软件设置:软件设置: 计数初值:计数初值: 对对TH1、TL1 、TH0、和和TL0的初始化编程的初始化编程 工作方式:工作方式: 通过通过TMOD和和 TCON对每个对每个T/C设置定时或计数设置定时或计数特殊功能寄存器特殊功能寄存器 TMOD(Timer Mode Register) TCON(Timer Control Register ) THx 存放计数初值的高存放计数初值的高8位位 TLx 存放计

5、数初值的低存放计数初值的低8位位定时器定时器/ /计数器(计数器(T/C0T/C0和和T/C1T/C1)的组成的组成T/C0T/C0和和T/C1T/C1都是都是1616位的位的加加1 1计数器计数器6从选票的统计谈起:画从选票的统计谈起:画“正正”。这就是计数,生活中计数的。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里用的电度表、例子处处可见。例:录音机上的计数器、家里用的电度表、汽车上的里程表等等汽车上的里程表等等.7从一个生活中的例子看起:一个水盆在水龙头下,水龙没关从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限

6、紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。电表上的计数器最的,过一段时间之后,水就会逐渐变满。电表上的计数器最多只计到多只计到9999.那么单片机中的计数器有多大的容量呢?那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为单片机中有两个计数器,分别称之为T0和和T1,这两个这两个计数器分别是由两个计数器分别是由两个8位的位的RAM单元组成的,即每个计数器单元组成的,即每个计数器都是都是16位的计数器,最大的计数量是位的计数器,最大的计数量是65536。88031中的计数器除了可以作为计数之用外,还可以用作时钟中的计数器除了

7、可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,我将它定时在一个闹钟,我将它定时在1个小时后闹响,换言之,也可以个小时后闹响,换言之,也可以说是秒针走了(说是秒针走了(3600)次,所以时间就转化为秒针走的次数)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次

8、确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是走动的时间正好是1秒。秒。9只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是同一个事物,只不过计由此,单片机中的定时器和计数器是同一个事物,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。一个非常稳定的计数源。那么提供组定时器的是计数源是什么呢?看图那么提供组定时器的是计数源是什么呢?看图1,原来就是,原来就是由单片机的晶振经过由单片机的晶振经过12分频后

9、获得的一个脉冲源。晶振的频分频后获得的一个脉冲源。晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是的晶振,它提供给计数器的脉冲时间间隔是多少呢?当然这很容易,就是多少呢?当然这很容易,就是12M/12等于等于1M,也就是也就是1个微个微秒。秒。结论:计数脉冲的间隔与晶振有关,结论:计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的晶振,计数脉冲的间隔是的间隔是1微秒。微秒。10图图1 由单片机的晶振经过由单片机的晶振经过12分频后获得的一个脉冲源。分频后获得的一个脉冲源。11让我

10、们再来看水滴的例子,当水不断落下,盆中的水不断变让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出溢出”。 水溢出是流到地上,而计数器溢出后将使得水溢出是流到地上,而计数器溢出后将使得TF0变为变为“1”。至于至于TF0是什么我们稍后再谈。一旦是什么我们稍后再谈。一旦TF0由由0变成变成1,就是产,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到生了变化,产生了变化就会引

11、发事件,就象定时的时间一到,闹钟就会响一样。现在我们来研究另一个问题:要有多少,闹钟就会响一样。现在我们来研究另一个问题:要有多少个计数脉冲才会使个计数脉冲才会使TF0由由0变为变为1。12刚才已讲过,计数器的容量是刚才已讲过,计数器的容量是16位,也就是最大的计数值到位,也就是最大的计数值到65536,因此计数计到,因此计数计到65536就会产生溢出。这个没有问题,就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于问题是我们现实生活中,经常会有少于65536个计数值的要个计数值的要求,如包装线上,一打为求,如包装线上,一打为12瓶,一瓶药片为瓶,一瓶药片为100粒,怎么样粒,怎么

12、样来满足这个要求呢?来满足这个要求呢?提示:如果是一个空的盆要提示:如果是一个空的盆要1万滴水滴进去才会满,我在开万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要始滴水之前就先放入一勺水,还需要10000滴嘛?滴嘛?我们采用预置数的方法,我要计我们采用预置数的方法,我要计100,那我就先放进,那我就先放进65436,再来再来100个脉冲,不就到了个脉冲,不就到了65536了吗。了吗。定时也是如此,每个脉冲是定时也是如此,每个脉冲是1微秒,则计满微秒,则计满65536个脉冲需时个脉冲需时65.536毫秒,但现在我只要毫秒,但现在我只要10毫秒就可以了,怎么办?毫秒就可以了,怎么办?10

13、个毫秒为个毫秒为10000个微秒,所以,只要在计数器里面放进个微秒,所以,只要在计数器里面放进55536就可以了。就可以了。13单片机中的定时单片机中的定时/计数器都可以有多种用途,那么我怎样才能计数器都可以有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时让它们工作于我所需要的用途呢?这就要通过定时/计数器的计数器的方式控制字来设置。方式控制字来设置。在单片机中有两个特殊功能寄存器与定时在单片机中有两个特殊功能寄存器与定时/计数有关,这就是计数有关,这就是TMOD和和TCON。TMOD和和TCON是名称,我们在写程序时是名称,我们在写程序时就可以直接用这个名称来指定它们,

14、当然也可以直接用它们就可以直接用这个名称来指定它们,当然也可以直接用它们的地址的地址89H和和88H来指定它们。来指定它们。TMOD不能位寻不能位寻址址GATE-门控位门控位CT-功能选择位功能选择位M1、M0工作方式选择位工作方式选择位2. TCON可以位寻址可以位寻址IE1 IT1 IE0 IT0IE1 IT1 IE0 IT0TR0(TCON4)T0的运行控制位。的运行控制位。TF0(TCON5)T0的溢出标志。的溢出标志。TR1(TCON6)T1的运行控制位的运行控制位TF1(TCON5)T1的溢出标志。的溢出标志。16我们再来看图我们再来看图1,计数脉冲要进入计数器还真不容易,有层层关

15、要通过,最起计数脉冲要进入计数器还真不容易,有层层关要通过,最起码,就是码,就是TR0(1)要为要为1,开关才能合上,脉冲才能过来。,开关才能合上,脉冲才能过来。因此,因此,TR0(1)称之为运行控制位,可用指令称之为运行控制位,可用指令SETB来置位来置位以启动计数器以启动计数器/定时器运行,用指令定时器运行,用指令CLR来关闭定时来关闭定时/计数器计数器的工作,一切尽在自已的掌握中。的工作,一切尽在自已的掌握中。17 8051单片机的定时器计数器T0和T1可由软件对特殊功能寄存器TMOD中控制位 CT的设置,以选择定时功能或计数功能。对M1、M0位的设置,可选择四种工作模式,即模式0、模式

16、1、模式2和模式3。在模式0、I和2时,T0与T1的工作模式相同;在模式3时,两个定时器的工作模式不同。 18方式0是选择定时器(T0或T1)高8位加低5位的个13位定时器计数器。 在这种方式下,16寄存器(TH0和TL0)只用13位,其中TL0的高3位末用,其余位占整个13位的低5位,TH0占高8位。当TL0的低5位溢出时向TH0进位而TH0溢出时向中断标志位TF0进位(硬件置位TF0),并申请中断。 T0溢出否可查询TF0是否置位,以产生T0中断。 1920 C/T0时,控制开关接通振荡器十二分频输出端,就是定时工作方式。其定时时间为: t(213一T0初值)振荡周期12 当C/T1时,控

17、制开关使引脚T0(P34)与13位计数器相连,外部计数脉冲由引脚T0P34输入,当外部信号电平发生“1”到“0”跳变时计数器加1,这时,T0成为外部事件计数器。这就是计数工作方式。 2122 GATE0时,使或门输出A点电位为常“1”,或门被封锁,于是,引脚INT0输入信号无效。这时或门输出的常“1”打开与门,B点电位取决于TR0状态,于是由TR0一位就可控制计数开关K开启或关断T0。 若软件使TR0置1,便接通计数开关K,启动T0在原值上加1计数,直至溢出。溢出时,13位寄存器清0,TF0置位,并申请中断,T0仍从0重新开始计数。 若TR00。则关断计数开关K,停止计数。 当GATE =1时

18、,A点电位取决于(P3.4)引脚的输入电平。仅当(P3.4)输入高电平时TR0l时,B点才是高电平,计数开关K闭合T0开始计数,当INT0由1变0时,T0停止计数。这一特性可以用来测量在(P3.4)端出现的正脉冲的宽度。 23 该方式是一个16位定时器计数器。 其结构与操作几乎与模式0完全相同,唯一的差别是:在方式1中,寄存器TH0和TL0是以全16位参与操作,用于定时工作方式时,定时时间为: t t(2(21616一一T0T0初值初值) ) 时钟周期时钟周期1212 用于计数工作方式时,计数长度为21665536(个外部脉冲) 2425方式2把T0(或T1)配置成个可以自动重装载的8位定时器

19、计数器。 TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重装载到TL0中。这时16位的计数器被拆成两个8位; TL0用作8位计数器,TH0用以保持初值。 2627在程序初始化时,TL0和TH0由软件赋予相同的初值。旦TL0计数溢出,置位TF0,并将TH0中的初值再自动装入TL0,继续计数,循环重复。用于定时器工作方式时,其定时时间(TF0溢出周期)为; t(28TH0初值)振荡周期12用于计数器工作方式时,最大计数长度(TH0初值0)为: 28256(个外部脉冲)。 这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。特别适用作串行口波待率发生

20、器。 28操作方式3对T0和T1是大不相同的。 若将T0设置为方式3,TL0和TH0被分成为两个互相独立的8位计数器。 其中TL0用原T0的各控制位、引脚和中断源。即CT、GATE、TR0、TF0和T0 (P34)引脚、 (P32)引脚。 TL0除仅用8位寄存器外,其功能和操作与方式0(13位计数器)、方式1(16位计数器)完全相同。 TL0也可工作为定时器方式或计数器方式。 TH0只可用作简单的内部定时功能,它占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TRl的控制。 定时器T1无操作方式3状态。 2930 设置为定时工作方式时,定时器计数的设置为定时工作方式时,

21、定时器计数的脉冲是由脉冲是由8051片内振荡器输出经片内振荡器输出经12分频分频后产生的。后产生的。 每个机器周期使定时器每个机器周期使定时器(T0或或T1)的数值的数值加加1直至计数满产生溢出。直至计数满产生溢出。如:当如:当8051采用采用12MHz晶体时,每个机器晶体时,每个机器周期为周期为1s,计数额率为计数额率为1MHz。31设置为计数工作方式时,通过引脚设置为计数工作方式时,通过引脚T0(P34)和和T1(P35)对外部脉冲信号计数。对外部脉冲信号计数。当输入脉冲信号产生由当输入脉冲信号产生由1至至0的下降沿时,定时器的下降沿时,定时器的值加的值加1, 在每个机器周期的在每个机器周

22、期的S5P2期间采样期间采样T0和和T1的输的输入电平。若前一个机器周期采样值为入电平。若前一个机器周期采样值为1,下一个,下一个机器周期采样值为机器周期采样值为0,则计数器加,则计数器加1。此后的机器。此后的机器周期周期S3P1期间,新的数值装入计数器。期间,新的数值装入计数器。检测一个检测一个1至至0的跳变需要二个机器周期,故最高的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。计数频率为振荡频率的二十四分之一。32 虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。33不管是定时工作方式还是计数方式,定时

23、器T0或T1在对内部时钟或对外部事件计数时,不占用CPU的时间,除非定时器计数器溢出,才可能中断CPU的当前操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。 除了可以选择定时器或计数器工作方式外,每个定时器计数器还有四种工作模式,也就是每个定时器可构成四种电路结构模式。其中,模式0一模式2对T0和T1是一样的,模式3对两者是不同的。 34例例 判断下列说法的正误。判断下列说法的正误。1。MCS-51单片机中两个定时器的工作方式是由同一个方式单片机中两个定时器的工作方式是由同一个方式选择控制字设定的。选择控制字设定的。2。T0或或Tl作计数器用时,计数频率不能超过晶振频率的作计数器用时

24、,计数频率不能超过晶振频率的1/24。3。定时器不重复装入初值与不再启动定时器是一回事。定时器不重复装入初值与不再启动定时器是一回事。4。无论是定时还是计数方式,当选用外启动时还需要。无论是定时还是计数方式,当选用外启动时还需要TRi=1配合配合(i=0,1)。5。MCS-51系统中两个定时器能够实现硬件直接级联。系统中两个定时器能够实现硬件直接级联。6。当定时器。当定时器0工作在方式工作在方式3时,定时器时,定时器1就不能工作在中断方就不能工作在中断方式。式。35 答答 1正确。定时器正确。定时器0和和1的工作模式都是由的工作模式都是由TMOD这个方式这个方式选择控制字设定的。选择控制字设定

25、的。2正确。因为计数时的触发脉冲是边沿有效类型,而对每个正确。因为计数时的触发脉冲是边沿有效类型,而对每个计数脉冲的识别至少需要两个计数脉冲的识别至少需要两个M周期。周期。3错误,不是一回事。没有重装计数初值的动作,定时器仍错误,不是一回事。没有重装计数初值的动作,定时器仍然会继续工作,只是此时的计数初值是全然会继续工作,只是此时的计数初值是全0而已。而已。4正确。正确。5错误,无法直接级联。因为每个定时器虽然配有计数输入错误,无法直接级联。因为每个定时器虽然配有计数输入外引脚外引脚(T0和,和,T1),却没配备计满溢出信号的外引脚。却没配备计满溢出信号的外引脚。 6正确。因为正确。因为T1申

26、请中断有效的必备条件之一是申请中断有效的必备条件之一是TF1l,而此时而此时T0已占用了已占用了TF1作为其独立高作为其独立高8位定时器的计满溢出信位定时器的计满溢出信号,所以号,所以T1此时不能工作在中断方式。此时不能工作在中断方式。36T0和T1在系统复位后均为00H,若需要改变其计数个数,则要预先设置一定的初值.1.定时器/计数器在各种工作方式下的最大计数和最长定时:37 38 39 40所谓一个机器周期是指所谓一个机器周期是指CPU访问存储器一次所需要的时间。访问存储器一次所需要的时间。例如取指令、读存储器、写存储器等等。例如取指令、读存储器、写存储器等等。 MCS-51的一个机器周期

27、包括的一个机器周期包括12个振荡周期,分为六个个振荡周期,分为六个S状态状态:S1一一S6。而每个状态又分为两拍,称为而每个状态又分为两拍,称为P1和和P2。因此,一个机器周期中的因此,一个机器周期中的12个振荡周期表示为个振荡周期表示为SlPl、SlP2、S2Pl,S6P2。41设一个单片机工作于设一个单片机工作于12M晶振,它的时钟周期是晶振,它的时钟周期是1/12(微秒(微秒)。它的一个机器周期是)。它的一个机器周期是12*(1/12)也就是)也就是1微秒。微秒。smssssM121101211012110121121366一个机器周期一个机器周期ss11211242。 43(3)计算定

28、时初值)计算定时初值 TM12/fosc12/(12106 )S1s 计数个数计数个数 : X1ms/1s1000 定时初值定时初值: C( -X) 8192-1000 7192D 1C18H 0001,1100,0001,1000B 11100000,11000B 高高8位位0E0H 低低5 位位18H TH0初值为初值为0E0H,TL0初值为初值为18H 。若采用方式若采用方式1,16位,则位,则 定时初值:定时初值: C 65536-1000 64536 FC18H TH0初值为初值为0FCH,TL0初值为初值为18H 13244 ORG 0000H AJMP MAIN ; 转到主程序转到主程序MAIN ORG 000BH AJMP TC0S ; 转到转到T/C0的中断服务程序的中断服务程序TC0S主程序:主程序: ORG 1000H MAIN: MOV SP,#6FH MOV TMOD ,#00H ;置置T/C0为方式为方式0,定时。,定时。 MOV TH0,#0E0H ;送计数初值送计数初值 MOV TL0,#18H SETB ET0 ;T/C0允许中断允许中断 SETB EA ;

温馨提示

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

评论

0/150

提交评论