1 / 31

定时器 / 计数器的控制

知识点:. 定时器 / 计数器的工作方式. 定时器工作原理. 定时器 / 计数器的控制. 定时器 / 计数器的初值的设置. 问题的提出. 在实际工作、生活中,许多控制离不开时间。尤其是定时控制更是以时间为核心,如家用的洗衣机中的洗涤、脱水都是定时的。 单片机又是如何完成定时的呢? 通过前面的学习, 当晶振频率一定时,单片机的机器周期相应固定,如晶振频率为 12MHE 时单片机的机器周期为 1μs 。单片机对其机器周期进行计数便可以实现定时。如计数值为 1000 则定时 1ms 、如计数值为 1000000 则定时 1s ,以此类推。

Télécharger la présentation

定时器 / 计数器的控制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 知识点: 定时器/计数器的工作方式 定时器工作原理 定时器/计数器的控制 定时器/计数器的初值的设置

  2. 问题的提出 在实际工作、生活中,许多控制离不开时间。尤其是定时控制更是以时间为核心,如家用的洗衣机中的洗涤、脱水都是定时的。 单片机又是如何完成定时的呢? 通过前面的学习,当晶振频率一定时,单片机的机器周期相应固定,如晶振频率为12MHE时单片机的机器周期为1μs。单片机对其机器周期进行计数便可以实现定时。如计数值为1000则定时1ms、如计数值为1000000则定时1s,以此类推。 本章要解决的是单片机如何完成对机器周期进行计数。

  3. 当计数器计满时,自动将TFX置“1”,作为向单片机中断请求信号。当计数器计满时,自动将TFX置“1”,作为向单片机中断请求信号。 MCS-51单片机片内有两个16位的定时器/计数器,定时器0(T0)和定时器1(T1)。它们均可用作定时控制、延时以及对外部事件的计数及检测。 经过除以12变成1MHz的脉冲 记住:此时脉冲的周期为1/1MHz= 1μs 当外部晶体振荡器为12MHz时,它提供(输出)12MHz的脉冲。 加1计数器对1MHz的脉冲进行自动计数,直至计数器计满 在起/停控制信号中“起”信号作用下开关接通 当C/T=0时,开关接通 ÷12 振荡器 C/T=0 中断 加1计数器 TFX TX端 C/T=1 当C/T=1时,开关向下接通,TX端的外部信号至此 加1计数器对1MHz的脉冲进行自动计数,直至计数器计满 当计数器计满时,自动将TFX置“1”,作为向单片机中断请求信号。 起/停 控制信号 在起/停控制信号中“起”信号作用下开关接通

  4. TH0 TH0 TL0 TL0 16位的定时器/计数器分别由两个8位的专用寄存器组成,由此可见:定时器/计数器的核心是一个加1计数器。 即T0由TH0和TL0构成,T1由THl和TLl构成。 T0 输入 TL0、TL1、TH0、TH1的地址顺序依次是8AH、8BH、8CH、8DH。这些寄存器用来存放定时或计数初值,每个定时器都可以由软件设置成定时工作方式或计数工作方式。 定时器/计数器可工作在定时方式或计数方式,由方式寄存器TMOD确定,由控制寄存器TCON控制。

  5. 注意: 1、当定时器工作在计数方式时,外部输人信号是加到T0(P3.4)或T1(P3.5)端。 一个外部输入信号的下降沿触发加1计数器加1,直至计满溢出。 外部输入信号的高电平与低电平保持时间均需大于一个机器周期。 2、当定时/计数器工作在定时方式时,加1计数器每一个机器周期加1,直至计满溢出。 一旦定时器/计数器被设置成某种工作方式后,它就会按设定的工作方式独立运行,不再占用CPU的操作时间,直到加1计数器计满溢出,才向CPU申请中断。

  6. 定时器/计数器工作方式及控制 定时器/计数器是一种可编程的部件,在其工作之前必须做三件事: 1、将方式字写入TMOD 2、将控制字写入TCON 3、将计数初值写入相应计数器 这个过程称为定时器/计数器的初始化

  7. 工作方式寄存器TMOD TMOD用于控制T0和T1的工作方式,其各位定义如下:

  8. 控制寄存器TCON TCON用于控制定时器的启动、停止以及标明定时器的溢出和中断情况。各位的含义如下:

  9. 定时器/计数器的工作方式 TMOD中的M1、M0具有4种组合,从而构成了定时器/计数器的4种工作方式,这4种工作方式除了方式3以外,其它3种工作方式的基本原理都是一样的。 下面分别介绍4种工作方式的特点及工作情况。

  10. 工作方式0 其中: 200ML:最大值 N:计数值 X: 初值 200ML N X 在单片机中定时/计数的原理是对其寄存器的内容完成对机器周期/外部脉冲进行+1计数直至溢出。为了获取不同时间/不同脉冲个数,只要对寄存器预先写入一个数据就可以实现。这个数据称为初值。

  11. 方式0:16位的计数器(THO和TL0)只用了13位构成13位定时器/计数器。方式0:16位的计数器(THO和TL0)只用了13位构成13位定时器/计数器。 TL0的高3位未用,当TL0的低5位计满时,向TH0进位,而TH0溢出后对中断标志位TF0置1,并向CPU申请中断。 13位计数器: 最大计数值为213=8192(相当200ML) 定时值t(相当N,但t 是时间单位) 初值(相当X) 即:t/机器周期+初值= 213=8192 t=(213-T0初值)×机器周期

  12. 1、初值 根据上式可知:初值= 213- t/机器周期 例如:定时值为5000μs,机器周期为1μs 初值=8192-5000/μs=3192=0000110001111000B 将初值写入T0寄存器的方法是:高8位写入01100011TH0,低5位11000写入TL0

  13. 例如:要求计满129个外部脉冲后溢出中断,则计数初值为8192-129=8063=1F7FH例如:要求计满129个外部脉冲后溢出中断,则计数初值为8192-129=8063=1F7FH 即TLO=1FH、TH0=FBH 又如:已知单片机的机器周期为1μs,要求定时值到达5000μs时溢出中断,则定时初值为8192-(5000μs/1μs) = 3192=0C78H 即TLO=18H、TH0=63H

  14. 2、控制

  15. 工作方式1 T0工作在方式1的逻辑结构如下图所示。由图可见,它与工作方式0的差别仅在于工作方式1是以16位计数器参加计数,且定时时间为: t=(216-T0初值)×机器周期 即:初值= 216-t/机器周期

  16. 工作方式2 T0在工作方式2的逻辑结构如下图所示。

  17. 定时器/计数器构成一个能重复置初值的8位计数器。定时器/计数器构成一个能重复置初值的8位计数器。 在工作方式0、工作方式1中,若用于重复定时计数,则每次计满溢出后,计数器变为全0,故还得重新装入初值。 而工作方式2可在计数器计满溢出时自动装入初值,工作方式2把16位的计数器拆成两个8位计数器。TL0用作8位计数器,TH0用来保存初值,每当TL0计满溢出时,可自动将TH0的初值再装入TL0中。工作方式2的定时时间为: t=(28—T0初值)×机器周期 即:初值=256- t/机器周期

  18. 工作方式3 工作方式3的逻辑结构图如下图所示。

  19. 该工作方式只适用于定时器/计数器T0。T0在工作方式3被拆成两个相互独立的计数器,其中,TL0使用原T0的各控制位、引脚和中断源C/T 、GATE、TR0、INT0 和TF0; 而TH0则只能作为定时器使用,但它占用T1的TR1和TF1,即占用了T1的中断标志和运行控制位。 一般在系统需增加一个额外的8位定时器时,可设置为工作方式3,此时,T1虽仍可定义为工作方式0、工作方式1和工作方式2,但只能用在不需中断控制的场合。

  20. 思考题 TH0=C1 TL0=10 TH0=E4 TL0=A8 TH0=EC TL0=78 TH0=06 TL0=06 1、要求计满2000个外部脉冲后溢出中断,方式0,求计数初值的TL0=?、TH0=? 2、已知单片机的机器周期为1μs,要求定时值到达7000μs时溢出中断,定时、方式1,求定时初值的TL0=?、TH0=? 3、T0方式1,定时值5ms,TH0=?、TL0=? 4、T1方式2,定时值250μs,TH1=?、TL1=?

  21. 定时器/计数器应用举例 应用定时器/计数器时应注意两点:一是初始化(写入控制字),二是对初值的计算。 初始化步骤为: ①向TMOD写工作方式控制字。 ②向计数器TL、TH装入初始值。 ③置TR=1,启动计数。 ④置ET=1,允许定时器/计数器中断(若需要时)。 ⑤置EA=1,CPU开中断(若需要时)。

  22. 例如:设T0为工作方式1,设置为定时状态,定时时间为2ms,每当2ms到,申请中断,在中断服务程序中将P1.0的内容取反送出(假设晶振为6MHz)。例如:设T0为工作方式1,设置为定时状态,定时时间为2ms,每当2ms到,申请中断,在中断服务程序中将P1.0的内容取反送出(假设晶振为6MHz)。 解:已知晶振频率为6MHz,机器周期=2μs 下面先计算2ms定时的TO初始值 当T0工作在方式1时 TO初始值=216-定时时间/机器周期 =216-2ms/ 2μs            =216-2×10-3/2×10-6 =65536-1000=64536 =FC18H。 即:TH0=FCH、TL0=18H

  23. 由于题目要求T0工作在方式1,所以TMOD=01H

  24. 编程如下: ORG0000H; AJMP MAIN ;转主程序 ORG 000BH ; INT: MOV TL0,#18H ;T0中断服务程序 MOV TH0,#0FCH ;重设计数初值 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

  25. 中断程序 主程序与中断服务程序的关系  中断服务程序入口地址 主程序MAIN 中断响应  RETI ORG 000BH INT: MOV TL0,#18H MOV TH0,#0FCH 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 返回

  26. 又例如:当GATE=1时,TR0=1时,只有INTO 引脚上出现高电平时,T0才被允许计数。试利用这一功能测试INTO引脚上的正脉冲的宽度(机器周期数)。 设外部待测脉冲由INTO(P3.2)输入,T0工作在方式1,设置为定时状态,GATE置为“1”,测试时,在INTO端为“0”时置TR0为“1”,当INTO 端变为“1”时启动计数;INTO端再次变为“0”时停止计数,此时的计数值就是被测正脉冲的宽度。

  27. TR0=1、INT0=1时开始计数 TR0=0、INT0=0时停止计数 编程思路: 在此期间对机器周期进行计数 根据题意:T0工作在方式1、定时状态、INT0=“1”期间对机器周期进行计数。 于是,确定方式字如下:即TMOD=09H。并在INT0=0期间置TR0=1

  28. 编程如下: ORG 0000H MOV TMOD,#09H ;T0工作方式1定时,GATE=1 MOV TL0,#00H ; MOV TH0,#00H ; RLL1:JB P3.2,RLL1 ;等待P3.2变低 SETB TR0 ;启动T0 RLL2:JNB P3.2,RLL2 ;等待P3.2变高 RLL3:JB P3.2,RLL3 ;等待P3.2再变低 CLR TR0 ;T0停止计数 MOV A,TL0 ;存放计数值 MOV B,TH0 SJMP $

  29. 思考题 ORG 0000H ; AJMP MAIN ;转主程序 ORG 000BH ; INT: MOV TL0,#0CH ;T0中断服务程序 MOV TH0,#0F0H ;重设计数初值 CPL P1.7 ; 输出取反 RETI ; MAIN:MOV SP,#63H ;置堆栈指针 MOV TMOD,#01H ;T0初始化 MOV TL0;#0CH ; MOV TH0;#0F0H; SETB TR0 ;启动T0计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 RLL: SJMP RLL ;等待 END 1、设T0为工作方式0,设置为定时状态,定时时间为0.5ms,每当0.5ms到,申请中断,在中断服务程序中将P1.7的内容取反送出(假设晶振为12MHz)。请编写该方案的程序.

More Related