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

下载本文档

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

文档简介

1、定时器定时器/计数器的计数器的 工作方式工作方式 知识点:知识点: 定时器工作原定时器工作原 理理 在实际工作、生活中,许多控制离不开时间。尤其是在实际工作、生活中,许多控制离不开时间。尤其是 定时控制更是以时间为核心,如家用的洗衣机中的洗涤、定时控制更是以时间为核心,如家用的洗衣机中的洗涤、 脱水都是定时的。脱水都是定时的。 单片机又是如何完成定时的呢?单片机又是如何完成定时的呢? 通过前面的学习,通过前面的学习,当晶振频率一定时,单片机当晶振频率一定时,单片机 的机器周期相应固定,如晶振频率为的机器周期相应固定,如晶振频率为12mhe12mhe时单片机的机时单片机的机 器周期为器周期为1s

2、1s。单片机对其机器周期进行计数便可以实现。单片机对其机器周期进行计数便可以实现 定时。如计数值为定时。如计数值为10001000则定时则定时1ms1ms、如计数值为、如计数值为10000001000000则则 定时定时1s1s,以此类推。,以此类推。 本章要解决的是单片机如何完成对机器周期进本章要解决的是单片机如何完成对机器周期进 行计数。行计数。 问 题 的 提 出 振荡器振荡器12 加加1计数器计数器tfx 起停起停 控制信号控制信号 ct=0 ct=1 中断中断 tx端端 mcs-51mcs-51单片机片内有两个单片机片内有两个1616位的定时器计数位的定时器计数 器,定时器器,定时器

3、0(t0)0(t0)和定时器和定时器1(t1)1(t1)。它们均可用作定。它们均可用作定 时控制、延时以及对外部事件的计数及检测。时控制、延时以及对外部事件的计数及检测。 当外部晶体振当外部晶体振 荡器为荡器为12mhz时,时, 它提供它提供(输出输出) 12mhz的脉冲。的脉冲。 经过除以经过除以12变成变成 1mhz的脉冲的脉冲 记住:此时脉冲的周期记住:此时脉冲的周期 为为11mhz= 1s 当当ct=0 时,开关接时,开关接 通通 在起停控制在起停控制 信号中信号中“起起”信号信号 作用下开关接通作用下开关接通 加加1计数器对计数器对 1mhz的脉冲进行的脉冲进行 自动计数,直至计自动

4、计数,直至计 数器计满数器计满 当计数器计满时,当计数器计满时, 自动将自动将tfx置置“1”, 作为向单片机中断作为向单片机中断 请求信号。请求信号。 当当ct=1时,开时,开 关向下接通,关向下接通,tx 端的外部信号至此端的外部信号至此 在起停控制在起停控制 信号中信号中“起起”信号信号 作用下开关接通作用下开关接通 加加1计数器对计数器对 1mhz的脉冲进行的脉冲进行 自动计数,直至计自动计数,直至计 数器计满数器计满 当计数器计满时,当计数器计满时, 自动将自动将tfx置置“1”, 作为向单片机中断作为向单片机中断 请求信号。请求信号。 由此可见:定时器计数器的核心是一个加由此可见:

5、定时器计数器的核心是一个加1 1计数器。计数器。 1616位的定时器计数器分别由两个位的定时器计数器分别由两个8 8位的专用寄存位的专用寄存 器组成,即器组成,即t0t0由由th0th0和和tl0tl0构成,构成,t1t1由由thlthl和和tlltll构成。构成。 0000000000000000 th0tl0th0tl0 0000000100000000 t0 输入输入 tl0tl0、tl1tl1、th0th0、th1th1的地址顺序依次是的地址顺序依次是8ah8ah、8bh8bh、8ch8ch、8dh8dh。这。这 些寄存器用来存放定时或计数初值,每个定时器都可以由软件设置成定时工些寄存

6、器用来存放定时或计数初值,每个定时器都可以由软件设置成定时工 作方式或计数工作方式。作方式或计数工作方式。 定时器计数器可工作在定时方式或计数方式,由方式寄存器定时器计数器可工作在定时方式或计数方式,由方式寄存器tmodtmod确确 定,由控制寄存器定,由控制寄存器tcontcon控制。控制。 注意:注意: 1 1、当定时器工作在计数方式时,外部输人信号是加到、当定时器工作在计数方式时,外部输人信号是加到t0(p3t0(p34)4)或或 t1(p3t1(p35)5)端。端。 一个外部输入信号的下降沿触发加一个外部输入信号的下降沿触发加1 1计数器加计数器加1 1,直至计满溢出。,直至计满溢出。

7、 外部输入信号的高电平与低电平保持时间均需大于一个机器周期。外部输入信号的高电平与低电平保持时间均需大于一个机器周期。 2 2、当定时、当定时/ /计数器工作在定时方式时,加计数器工作在定时方式时,加1 1计数器每一个机器周期加计数器每一个机器周期加1 1, 直至计满溢出。直至计满溢出。 一旦定时器计数器被设置成某种工作方式后,它就会按设定的工一旦定时器计数器被设置成某种工作方式后,它就会按设定的工 作方式独立运行,不再占用作方式独立运行,不再占用cpucpu的操作时间,直到加的操作时间,直到加1 1计数器计满溢出,计数器计满溢出, 才向才向cpucpu申请中断。申请中断。 定时器计数器是一种

8、可编程的部件,在定时器计数器是一种可编程的部件,在 其工作之前必须做三件事:其工作之前必须做三件事: 1、将方式字写入、将方式字写入tmod 2、将计数初值写入相应计数器、将计数初值写入相应计数器 这个过程称为定时器计数器的初始化这个过程称为定时器计数器的初始化 3、将控制字写入、将控制字写入tcon 定时器计数器工作定时器计数器工作 方式及控制方式及控制 tmodtmod用于控制用于控制t0t0和和t1t1的工作方式,其各位定义如下:的工作方式,其各位定义如下: 工工 作作 方方 式式 寄寄 存存 器器 t m o d tcontcon用于控制定时器的启动、停止以及标明定时器的用于控制定时器

9、的启动、停止以及标明定时器的 溢出和中断情况。各位的含义如下:溢出和中断情况。各位的含义如下: 控控 制制 寄寄 存存 器器 t t c c o o n n tmod tmod中的中的m1m1、m0m0具有具有4 4种组合,从而构成了种组合,从而构成了 定时器计数器的定时器计数器的4 4种工作方式,这种工作方式,这4 4种工作方式种工作方式 除了方式除了方式3 3以外,其它以外,其它3 3种工作方式的基本原理都种工作方式的基本原理都 是一样的。是一样的。 下面分别介绍下面分别介绍4 4种工作方式的特点及工作情种工作方式的特点及工作情 况。况。 定定 时时 器器 计计 数数 器器 的的 工工 作

10、作 方方 式式 在单片机中在单片机中定时定时计数的原理是对其寄存器的内容完成对计数的原理是对其寄存器的内容完成对机器周机器周 期期外部脉冲进行外部脉冲进行+1+1计数直至溢出。为了获取计数直至溢出。为了获取不同时间不同时间不同脉冲个数,不同脉冲个数, 只要对寄存器预先写入一个数据就可以实现。这个数据称为只要对寄存器预先写入一个数据就可以实现。这个数据称为初值初值。 工工 作作 方方 式式 0 0 x 200ml n 其中:其中: 200ml:最大值:最大值 n:计数值:计数值 x: 初值初值 方式方式0:16位的计数器位的计数器(tho和和tl0)只只 用了用了13位构成位构成13位定时器计数

11、器。位定时器计数器。 tl0的高的高3位未用,当位未用,当tl0的低的低5位计满位计满 时,向时,向th0进位,而进位,而th0溢出后对中断标志溢出后对中断标志 位位tf0置置1,并向,并向cpu申请中断。申请中断。 1313位计数器位计数器: : 最大计数值为最大计数值为 8192(8192(相当相当200ml) ) 定时值t(相当n ,但t 是时间单位) 初值(相当x ) 即:t/机器周期机器周期+初值初值= 81928192 t=( t0初值初值)机器周期机器周期 1、初值、初值 根据上式可知:初值根据上式可知:初值= - - t/机器周期机器周期 例如:定时值为例如:定时值为5000s

12、s,机器周期为,机器周期为1 1s 初值初值=8192-5000/=8192-5000/s=3192=0000110001111000b 将初值写入将初值写入t0寄存器的方法是寄存器的方法是:高高8位写入位写入01100011th0,低,低5位位11000写入写入tl0 例如:要求计满例如:要求计满129129个外部脉冲后溢出中断,则个外部脉冲后溢出中断,则 计数初值为计数初值为8192-129=8063=1f7fh8192-129=8063=1f7fh 即即tlo=1fhtlo=1fh、th0=fbhth0=fbh 又如:已知单片机的机器周期为又如:已知单片机的机器周期为1s1s,要,要 求

13、定时值到达求定时值到达5000s5000s时溢出中断,则定时初值时溢出中断,则定时初值 为为8192-8192-(5000s5000sss) = 3192=0c78h= 3192=0c78h 即即tlo=18htlo=18h、th0=63hth0=63h 2 2、控制、控制 t0工作在方式工作在方式1的逻辑结构如下图所示。的逻辑结构如下图所示。 由图可见,它与工作方式由图可见,它与工作方式0的差别仅在于工的差别仅在于工 作方式作方式1是以是以16位计数器参加计数,且定时位计数器参加计数,且定时 时间为:时间为: t=(216t0初值初值)机器周期机器周期 即:即:初值初值= 216t/机器周期

14、机器周期 工工 作作 方方 式式 1 1 t0t0在工作方式在工作方式2 2的逻辑结构如下图所示。的逻辑结构如下图所示。 工工 作作 方方 式式 2 2 定时器定时器/计数器构成一个能重复置初值的计数器构成一个能重复置初值的8位计位计 数器。数器。 在工作方式在工作方式0、工作方式、工作方式1中,若用于重复定中,若用于重复定 时计数,则每次计满溢出后,计数器变为全时计数,则每次计满溢出后,计数器变为全0, 故还得重新装入初值。故还得重新装入初值。 而工作方式而工作方式2可在计数器计满溢出时自动装可在计数器计满溢出时自动装 入初值,工作方式入初值,工作方式2把把16位的计数器拆成两个位的计数器拆

15、成两个8位位 计数器。计数器。tl0用作用作8位计数器,位计数器,th0用来保存初值,用来保存初值, 每当每当tl0计满溢出时,可自动将计满溢出时,可自动将th0的初值再装的初值再装 入入tl0中。工作方式中。工作方式2的定时时间为:的定时时间为: t=(28t0初值)初值)机器周期机器周期 即:即:初值初值=256- t/机器周期机器周期 工作方式工作方式3 3的逻辑结构图如下图所示。的逻辑结构图如下图所示。 工工 作作 方方 式式 3 3 该工作方式只适用于定时器计数器该工作方式只适用于定时器计数器t0。t0 在工作方式在工作方式3被拆成两个相互独立的计数器,其被拆成两个相互独立的计数器,

16、其 中,中,tl0使用原使用原t0的各控制位、引脚和中断源的各控制位、引脚和中断源c t 、gate、tr0、int0 和和tf0; 而而th0则只能作为定时器使用,但它占用则只能作为定时器使用,但它占用t1 的的tr1和和tf1,即占用了,即占用了t1的中断标志和运行控的中断标志和运行控 制位。制位。 一般在系统需增加一个额外的一般在系统需增加一个额外的8位定时器时,位定时器时, 可设置为工作方式可设置为工作方式3,此时,此时,t1虽仍可定义为工虽仍可定义为工 作方式作方式0、工作方式、工作方式1和工作方式和工作方式2,但只能用在,但只能用在 不需中断控制的场合。不需中断控制的场合。 1、要

17、求计满要求计满20002000个外部脉冲后溢出中断,方式个外部脉冲后溢出中断,方式0 0,求,求 计数初值的计数初值的tl0=tl0=?、?、th0=th0=? 2 2、已知单片机的机器周期为、已知单片机的机器周期为1s1s,要求定时值到达,要求定时值到达 7000s7000s时溢出中断,定时、方式时溢出中断,定时、方式1 1,求定时初值的,求定时初值的 tl0=tl0=?、?、th0=th0=? 3、t0方式方式1,定时值,定时值5ms,th0=?、?、tl0=? 4、t1方式方式2,定时值,定时值250s,th1=?、?、tl1=? th0=c1tl0=10 th0=e4tl0=a8 th

18、0=ectl0=78 th0=06tl0=06 应用定时器应用定时器/ /计数器时应注意两点:一是初始计数器时应注意两点:一是初始 化(写入控制字),二是对初值的计算。化(写入控制字),二是对初值的计算。 初始化步骤为:初始化步骤为: 向向tmodtmod写工作方式控制字。写工作方式控制字。 向计数器向计数器tltl、thth装入初始值。装入初始值。 置置tr=1tr=1,启动计数。,启动计数。 置置et=1et=1,允许定时器计数器中断,允许定时器计数器中断( (若需要时若需要时) )。 置置ea=1ea=1,cpucpu开中断开中断( (若需要时若需要时) )。 定定 时时 器器 / /

19、计计 数数 器器 应应 用用 举举 例例 例如:设例如:设t0t0为工作方式为工作方式1 1,设置为定时状态,定时时间,设置为定时状态,定时时间 为为2ms2ms,每当,每当2ms2ms到,申请中断,在中断服务程序中将到,申请中断,在中断服务程序中将p1.0p1.0 的内容取反送出的内容取反送出( (假设晶振为假设晶振为6mhz)6mhz)。 解:已知晶振频率为解:已知晶振频率为6mhz6mhz,机器周期,机器周期=2s=2s 下面先计算下面先计算2ms2ms定时的定时的toto初始值初始值 当当t0t0工作在方式工作在方式1 1时时 toto初始值初始值=2=216 16- -定时时间机器周

20、期 定时时间机器周期 =2=216 16-2ms -2ms 2s 2s 2 216 16 2 21010-3 -3 1010-6 -6 =65536-1000=64536 =fc18h=65536-1000=64536 =fc18h。 即:即:th0=fchth0=fch、tl0=18htl0=18h 由于题目要求由于题目要求t0工作在方式工作在方式1,所以,所以tmod=01h 编程如下编程如下: : org 0000h ; ajmp main ;转主程序;转主程序 org 000bh ; int: mov tl0,#18h ;t0中断服务程序中断服务程序 mov th0,#0fch ;重设

21、计数初值;重设计数初值 cpl p1.0 ; 输出取反输出取反 reti ; main:mov sp,#63h ;置堆栈指针;置堆栈指针 mov tmod,#01h ;t0初始化初始化 mov tl0;#18h ; mov th0;#0fch; setb tr0 ;启动;启动t0计数计数 setb et0 ;允许;允许t0中断中断 setb ea ;cpu开中断开中断 rll: sjmp rll ;等待;等待 end 主程序与中断服务程序的关系 中断程序 主程序main 中断响应 中断服务程 序入口地址 reti org 000bh int: mov tl0,#18h mov th0,#0fc

22、h cpl p1.0 reti main:mov sp,#63h mov tmod,#01h mov tl0;#18h mov th0;#0fch setb tr0 setb et0 setb ea rll: sjmp rll end 又例如:当又例如:当gate=1gate=1时,时,tr0=1tr0=1时,只有时,只有into into 引脚上出现高电平时,引脚上出现高电平时,t0t0才被允许计数。试利用才被允许计数。试利用 这一功能测试这一功能测试intointo引脚上的正脉冲的宽度(机器引脚上的正脉冲的宽度(机器 周期数)。周期数)。 设外部待测脉冲由设外部待测脉冲由intointo(

23、p3.2p3.2)输入,)输入,t0t0工工 作在作在方式方式1 1,设置为,设置为定时状态定时状态,gategate置为置为“1 1”, 测试时,在测试时,在intointo端为端为“0”0”时置时置tr0tr0为为“1”1”,当,当 into into 端变为端变为“1”1”时启动计数;时启动计数;intointo端再次变为端再次变为 “0”0”时停止计数,此时的计数值就是被测正脉冲时停止计数,此时的计数值就是被测正脉冲 的宽度。的宽度。 编程思路:编程思路: 在此期间对机器周期进行计数在此期间对机器周期进行计数 根据题意:根据题意:t0t0工作在方式工作在方式1 1、定时状态、定时状态、int0=“1”int0=“1”期间对机器周期进行计数。期间对机器周期进行计数。 于是,确定方式字如下:于是,确定方式字如下:即即tmod=09htmod=09h。并在。并在int0=0int0=0期间置期间置tr0=1tr0=1 tr0=1、int0=1时开时开 始计数始计数 tr0=0、int0=0时停时停 止计数止计数 编程如下:编程如下: org 0000horg 0000h mov tmod mov tmod,#09h #09h ;t0t0工作方式工作方式1 1定时,定时,gate=1gate=1 mov tl0 mov tl0,#00h #00h ;

温馨提示

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

评论

0/150

提交评论