1 .软件定时 软件定时是让计算机执行一段程序来进行时间延时。 2...

15
1 1 软软软软 软软软软软软软软软软软 软软软软软软软软 软软软软 软软软软软软软软软软软 软软软软软软软软 软软软软 2 2 软软软软 软软软软软软软软软软软软软软软软软软软 软软软软 软软软软软软软软软软软软软软软软软软软 3 3 软软软软软 软软软软软 / / 软软软 软软软软软软软软软软 软软软 软软软软软软软软软软 CPU CPU 软软软软软软软软软软软软软软软软软软软软第8第 第第第 / 第第第

description

第 8 章 定时器 / 计数器. 1 .软件定时 软件定时是让计算机执行一段程序来进行时间延时。 2 .硬件定时 硬件定时是指由硬件电路来实现定时的功能 。 3 .可编程定时 / 计数器 由于纯软件定时要占用 CPU ,而纯硬件定时又欠灵活。. 8.1 、定时 / 计数器的结构及工作原理. 定时 / 计数器的结构. 1 、定时 / 计数器的模式寄存器 (一)定时 / 计数器模式寄存器 TMOD TMOD 寄存器用来设定定时 / 计数器的工作模式,低 4 位用于 T0 ,高 4 位用于 T1 。. - PowerPoint PPT Presentation

Transcript of 1 .软件定时 软件定时是让计算机执行一段程序来进行时间延时。 2...

Page 1: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

11 .软件定时 软件定时是让计算机执行.软件定时 软件定时是让计算机执行一段程序来进行时间延时。 一段程序来进行时间延时。

22 .硬件定时 硬件定时是指由硬件电路.硬件定时 硬件定时是指由硬件电路来实现定时的功能 。来实现定时的功能 。

33 .可编程定时.可编程定时 // 计数器 由于纯软件定计数器 由于纯软件定时要占用时要占用 CPUCPU ,而纯硬件定时又欠灵活。,而纯硬件定时又欠灵活。

第 8章 定时器 /计数器

Page 2: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

定时 / 计数器的结构

8.18.1 、定时、定时 // 计数器的结构及工作原理计数器的结构及工作原理

Page 3: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

11 、定时、定时 // 计数器的模式寄存器计数器的模式寄存器 (一)定时(一)定时 // 计数器模式寄存器计数器模式寄存器 TMOD TMOD TMODTMOD 寄存器用来设定定时寄存器用来设定定时 // 计数器的工作计数器的工作

模式,低模式,低 44 位用于位用于 T0T0 ,高,高 44 位用于位用于 T1 T1 。。

TMODTMOD D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0

B8HB8H GATEGATE    M1M1   M0M0 GATEGATE M1M1 M0M0TC / TC /

GATE:门控位。 GATE=0,定时 /计数器的运行只受定时 /计数器控制寄存器 TCON中运行控制位 TR的控制; GATE=1,定时 /计数器的运行受 TR和外部中断输入信号或的双重控制。

Page 4: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

计数计数 // 定时器工作方式选择位。 定时器工作方式选择位。 =1=1 ,为计数工,为计数工作方式,定时器对外部脉冲信号进行计数; 作方式,定时器对外部脉冲信号进行计数; =0=0 ,,为定时工作方式,定时为定时工作方式,定时 // 计数器对内部机器周期进计数器对内部机器周期进行计数。行计数。

TC /

TC /

TC /

M1 M0M1 M0 模式模式 功能说明功能说明

0000 模式模式 00 1313 位定时位定时 // 计数器计数器

0101 模式模式 11 1616 位定时位定时 // 计数器计数器

1010 模式模式 22 初值自动装入的初值自动装入的 88 位定时位定时 // 计数计数器器

1111 模式模式 33 22 个个 88 位定时位定时 // 计数器,仅适用计数器,仅适用于于 T0T0

Page 5: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

TF1TF1 :定时:定时 // 计数器计数器 T1T1 的溢出标志位。的溢出标志位。 T1T1 溢出 时由硬件置溢出 时由硬件置““ 1”1” ,向,向 CPUCPU 申请中断,申请中断, CPUCPU 响应中断后,由硬件自动响应中断后,由硬件自动清“清“ 0”0” 。。 TF1TF1 也可由软件置“也可由软件置“ 1”1” 或清“或清“ 0”0” 。。

TR1TR1 :定时:定时 // 计数器计数器 T1T1 的运行控制位。由软件置“的运行控制位。由软件置“ 1”1” 或清或清““ 0”0” 来控制来控制 T1T1 的启动或停止运行。的启动或停止运行。

TF0TF0 :定时:定时 // 计数器计数器 T0T0 的溢出标志位。含义与的溢出标志位。含义与 TF1TF1 类同。类同。 TR0TR0 :定时:定时 // 计数器计数器 T0T0 的运行控制位。含义与的运行控制位。含义与 TR1TR1 类同。类同。

TCONTCON D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0

88H88H TF1TF1   TR1TR1 TF0TF0 TR0 TR0  IE1IE1 IT1IT1 IE0IE0 IT0IT0

2、控制寄存器

Page 6: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

MCS-51MCS-51 单片机的定时单片机的定时 // 计数器计数器 T0T0 有模式有模式00 、模式、模式 11 、模式、模式 22 和模式和模式 33 四种工作四种工作模式,定时模式,定时 // 计数器计数器 T1T1 有模式有模式 00 、模式、模式11 和模式和模式 22 三种工作模式,由模式寄存三种工作模式,由模式寄存器器 TMODTMOD 中的中的 M1M1 、、 M0M0 两个选择位设两个选择位设定。 定。

8.2、定时 /计数器的工作模式

Page 7: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

8.3 8.3 定时定时 // 计数器的初始化计数器的初始化 11 、初始化编程、初始化编程初始化编程主要包括以下几部分:初始化编程主要包括以下几部分: (( 11 )根据确定的定时)根据确定的定时 // 计数器的工作模式,计数器的工作模式,

对模式寄存器对模式寄存器 TMODTMOD 赋值。 赋值。 (( 22 )设置定时或计数初值。即把定时或)设置定时或计数初值。即把定时或

计数初值写入计数初值写入 TH0TH0 、、 TL0TL0 或或 TH1TH1 、、 TL1TL1 。。 (( 33 )系统需要中断方式时,要对寄存器)系统需要中断方式时,要对寄存器 II

EE 赋值,开放相应的中断。赋值,开放相应的中断。 (( 44 )对寄存器)对寄存器 TCONTCON 中的中的 TR0TR0 或或 TR1TR1 置置

位,启动定时位,启动定时 // 计数器进行定时或计数。 计数器进行定时或计数。

Page 8: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

2 、计数器初值的计算定时器 / 计数器可用软件随时随地起动和关闭,起动时它就自动加“ 1” 记数,一直记到满,即全为“ 1” ,若不停止,计数值从全“ 1”变为全“ 0” ,同时将计数溢出位置“ 1” 并向 CPU 发出定时器溢出中断申请。对于各种不同的工作方式最大的定时时间和计数数不同。这里在使用中就会出现两个问题:一是要产生比定时器最大的定时时间还要小的时间和计数器最大计数次数还要小的计数次数怎么办?二是要产生比定时器最大的定时时间还要大的时间和计数器最大计数次数还要大的计数次数怎么办?

解决以上第一个问题只要给定时器 / 计数器一个非零初值,开定时器 / 计数器时,定时器 / 计数器不从 0 开始,而是从初值开始,这样就可得到比定时器 / 计数器最大的定时时间和计数次数还要小的时间和计数次数,解决第二个问题就要用到循环程序了,循环几次就相当于乘几。

Page 9: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

设计数器从初值开始作加 1 计数到计满为全 1 所需要的计数值设定为 C 和计数初值设定为 D ,由此便可得到如下的计算通式: D=M-C ( 1 )式中, M 为计数器模值,该值和计数器工作方式有关。在方式 0时 M 为 213 ;在方式 1 时 M 为 216 ;在方式 2 和方式 3 时 M 为 28 。3 、定时器初值的计算在定时器模式下,计数器由单片机脉冲经 12 分频后计数。因此,定时器定时时间 T 的计算公式为:T= ( TM—TC ) 12/fOSC ( µs ) ( 2 )式中 TM 为计数器从初值开始作加 1 计数到计满为全 1 所需要的时间, TM 为模值,和定时器的工作方式有关; fOSC 是单片机晶体振荡器的频率, TC 为定时器的定时初值。

Page 10: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

在式( 2 )中,若设 TC=0 ,则定时器定时时间为最大(初值为 0 ,计数从全 0 到全 1 ,溢出后又为全 0 )。由于 M 的值和定时器工作方式有关,因此不同工作方式下定时器的最大定时时间也不一样。例如:若设单片机主脉冲晶体振荡器频率fOSC 为 12MHz ,则最大定时时间为:

方式 0 时 TMmax=213×1µS=8.192ms

方式 1 时 TMmax=216 ×1µs=65.536ms

方式 2 和 3 时 TMmax=28 ×1µs=0.256ms

Page 11: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

定时定时 // 计数器应用举例计数器应用举例 用定时用定时 // 计数器计数器 T0T0 模式模式 00 进行定时,在进行定时,在 P1P1..00

引脚上输出周期为引脚上输出周期为 1ms1ms的方波。设单片机晶振的方波。设单片机晶振频率频率 ffOSCOSC=12MH=12MHZZ。 。

11 .确定定时器.确定定时器 T0T0 的模式控制字的模式控制字 TMODTMOD由于定时时间不长,取模式由于定时时间不长,取模式 00 ,, M1M0=00M1M0=00 ;;T0T0 工作于定时器方式, 工作于定时器方式, =0=0 ;;T0T0 用软件控制运行,用软件控制运行, GATE=0GATE=0TMODTMOD 的高的高 44 位用于设置位用于设置 T1T1 ,因,因 T1T1 不用,可为不用,可为任意值,通常取任意值,通常取 00 值。值。

所以,所以, TMOD=00HTMOD=00H 。。

TC

Page 12: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

22 .计算计数初值.计算计数初值 ∵ ∵ t t =(2 =(2 1313-- XX )×12/f)×12/fOSCOSC

1000=(2 1000=(2 1313-- XX )×12/6)×12/6    ∴ X    ∴ X =2 =2 1313-6×1000/12-6×1000/12 =7692=11110000 01100B=7692=11110000 01100B 高高 88 位 低位 低 55 位位 因为模式因为模式 00 时时 TL0TL0 的高的高 33 位未用,应填写位未用,应填写 00

所以实际值为所以实际值为 XX =11110000 00001100B=11110000 00001100B =F00CH=F00CH 即 即 TH0=F0HTH0=F0H ,, TL0=0CHTL0=0CH 。 。

Page 13: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

33 .编制初始化程序 可用查询方式和中断方式 .编制初始化程序 可用查询方式和中断方式 22 种方法来编制源程序。种方法来编制源程序。 查询方式查询方式

中断方式

Page 14: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

由于本例中的定时时间不长,因此可用定时器由于本例中的定时时间不长,因此可用定时器一次定时完成。如果要求的定时时间较长,而一次定时完成。如果要求的定时时间较长,而定时器无法用一次定时完成的情况下,就要进定时器无法用一次定时完成的情况下,就要进行重复定时,通过累加定时器每次定时时间的行重复定时,通过累加定时器每次定时时间的方法来达到所需的定时要求。 方法来达到所需的定时要求。

【例】【例】 用定时用定时 // 计数器计数器 T1T1 定时,使定时,使 P1P1..00 引引脚输出周期为脚输出周期为 2s2s的方波。已知单片机的晶振的方波。已知单片机的晶振频率频率 ffOSCOSC=12MHZ=12MHZ。。

本例中设定本例中设定 T1T1 的定时时间为的定时时间为 50ms50ms,要达到,要达到1s1s的定时值,需累计的定时值,需累计 2020 次。次。

Page 15: 1 .软件定时  软件定时是让计算机执行一段程序来进行时间延时。  2 .硬件定时  硬件定时是指由硬件电路来实现定时的功能 。

定时定时 // 计数器初始化编程,可按以下步计数器初始化编程,可按以下步骤进行骤进行

11 .确定.确定 T1T1 的模式控制字的模式控制字 TMODTMODT1T1 工作于模式工作于模式 11 ,由,由 TR1TR1 控制启动与关控制启动与关

闭,闭, T0T0 不用。故不用。故 TMOD=10HTMOD=10H 。。 22 .计算计数初值.计算计数初值 t t =(2=(21616-X)×12/f-X)×12/fOSCOSC

50000=(250000=(21616-X)×12/12-X)×12/12 X =2X =21616-50000-50000 ==15536=0011110010110000B15536=0011110010110000B =3CB0H =3CB0H