第六章 MCS-51 定时器 / 计数器

32

Click here to load reader

description

第六章 MCS-51 定时器 / 计数器. 6 .1 定时器 / 计数器结构及工作方式. 1. 6 .2 定时器应用举例. 2. §6.1 定时器/计数器结构及工作方式. 学习内容. 2. 3. 1. 寄存器. 工作方式. 结构. 一、定时器 / 计数器结构. T1 :是 16 位加法 计数器,分别由两个八位专用寄存器 TH1 和 TL1 组成。. T0 :是 16 位加法 计数器,分别由两个八位专用寄存器 TH0 和 TL0 组成。. 1 、 MCS-51 单片机内有 两个可编程的 定时器 / 计数器 T0 、 T1 ,其逻辑结构如下图所示 :. - PowerPoint PPT Presentation

Transcript of 第六章 MCS-51 定时器 / 计数器

Page 1: 第六章  MCS-51 定时器 / 计数器

1

第六章 MCS-51 定时器 / 计数器

66.1.1 定时器定时器 // 计数器结构及工作方计数器结构及工作方式式

1

66.2.2 定时器应用举例定时器应用举例2

Page 2: 第六章  MCS-51 定时器 / 计数器

2

§6.1 定时器 /计数器结构及工作方式

3

学习内容

1

结构 工作方式

2

寄存器

Page 3: 第六章  MCS-51 定时器 / 计数器

3

1 、 MCS-51 单片机内有两个可编程的两个可编程的定时器 / 计数器 T0 、 T1 ,其逻辑结构如下图所示 :

图 6-1 MCS-51 定时器 / 计数器逻辑结构图

一、定时器 /计数器结构

T0T0 :是 1616 位加法位加法计数器,分别由两个八位专用寄存器 TH0TH0 和 TL0TL0 组成。

T1T1 :是 1616 位加法位加法计数器,分别由两个八位专用寄存器 TH1TH1 和 TL1TL1 组成。

用来设置定时器的工作工作方式方式。。

用来控制定时器的启启动、停止及中断动、停止及中断。

Page 4: 第六章  MCS-51 定时器 / 计数器

4

2 、定时器 / 计数器功能定时器 是通过内部计数器的计数来实现的,计数脉冲计数脉冲来

自单片机的内部内部,其频率是振荡(晶体)频率的 1

/12 ,即每个机器周期每个机器周期产生一个计数脉冲,计数器计数器加加 11 ,直至计满溢出。

Page 5: 第六章  MCS-51 定时器 / 计数器

5

计数器 是对外来脉冲来脉冲进行计数。计数器对来自输入引脚 P

3.4 和 P3.5 的外部信号计数,外部脉冲的负跳变负跳变(下降沿)触发计数触发计数。

检测一个由 1 到 0 的负跳变需要两个机器周期。所以最高计数频率为晶体频率的 1/24 。

Page 6: 第六章  MCS-51 定时器 / 计数器

6

问题的提出

晶振频率为 12MHz 时,定时器和计数器的最高计数频率各是多少?

Page 7: 第六章  MCS-51 定时器 / 计数器

7

回答:

晶振频率为 12MHz 时,定时器和计数器的最高计数频率各为 1MHz 、 500KHz .

Page 8: 第六章  MCS-51 定时器 / 计数器

8

分三类: 定时器 / 计数器方式寄存器: TMOD

定时器 / 计数器控制寄存器: TCON

定时器初值寄存器: TH0 TL0 TH1 TL1

二、定时器 /计数器寄存器

Page 9: 第六章  MCS-51 定时器 / 计数器

9

1 、定时器 / 计数器方式寄存器 TMOD ( 89H )

TMOD GATE C/T M1 M0 GATE C/T M0M1

D7 D6 D5 D4 D3 D1D2 D0

T1方式控制 T0方式控制

图6-2 TMOD 寄存器各位定义

•GATE :门控位,用来控制定时器 / 计数器的启动是否受外部中断请求信号的影响。GATE=0 ,不受影响,仅由控制位 TRx 控制;GATE=1 ,受 TRx 和外部中断请求信号共同控制。

Page 10: 第六章  MCS-51 定时器 / 计数器

10

•C/T :定时或计数功能选择位。C/T=1 ,为计数器方式;C/T=0 ,为定时器方式。

•M1M0: 定时器四种工作方式选择 :

00: 方式 0 : 13 位定时器 / 计数器01: 方式 1 : 16 位定时器 / 计数器10: 方式 2 :自动重装初值的 8 位定时器 / 计数器11: 方式 3 : T0 分成两个 8 位定时器 / 计数器

Page 11: 第六章  MCS-51 定时器 / 计数器

11

[ 例 6-1]: 某一系统使 T1 作为定时器,采用方式 2 ,使T0 作为计数器采用方式 1 , T0 、 T1 的门控位均为 0 ,请设置 TMOD 的值。

0 0 1 0 0 1 0 1

即: TMOD=25H.

TMOD GATE C/T M1 M0 GATE C/T M0M1

D7 D6 D5 D4 D3 D1D2 D0

T1方式控制 T0方式控制

Page 12: 第六章  MCS-51 定时器 / 计数器

12

2 、定时器 / 计数器控制寄存器 TCON(88H ,可位寻址 )

•TRx: Tx 的运行控制位。 TRx=1 ,启动定时器 / 计数器TRx=0 ,关闭定时器 / 计数器

TCON

D7 D2 D1 D0D4D5D6 D3

TF1 TR1 TF0 TR0 I E1 I T1 I E0 I T0

图6-3 TCON寄存器各位定义用于外部中断

x=0 、1

Page 13: 第六章  MCS-51 定时器 / 计数器

13

3 、定时器初值寄存器 TH0 TL0 TH1 TL1

用于存放计数初值,具有自动加 1 功能,加满后溢出,它们的字节地址是 :

TH1(8TH1(8 位位 ) TL1(8) TL1(8 位位 ) TH0(8) TH0(8 位位 ) TL0) TL0

(8(8 位位 ))

8DH 8BH 8CH 8AH8DH 8BH 8CH 8AH

根据定时器 / 计数器工作方式,计数长度可分别选择 :8 位, 13 位, 16 位。

Page 14: 第六章  MCS-51 定时器 / 计数器

14

MCS-51 的定时器 / 计数器共有四种工作方式,其中:T0 有方式 0 、 1 、 2 、 3 四种;T1 有方式 0 、 1 、 2 三种。

三、工作方式

Page 15: 第六章  MCS-51 定时器 / 计数器

15

1 、工作方式 0 (以 T0 为例)— 13 位定时器 / 计数器

TMOD

0

0

M0

M1

C/ T

GATE

INT0(P3.2)

T0(P3.4) C/ T=1

C/T=0振荡器 ÷ 12

TL0

(低 5 位)

TH0

TCON

TF0

TR0

图 6- 4 方式 0(13位计数器 )

(高 8 位)

S1

S2

TL0 的高 3位没有用。。

Page 16: 第六章  MCS-51 定时器 / 计数器

16

C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:

N=213 – x=8192 – x

其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=8191(1FFFH)8191(1FFFH) 时, N 最小值 =11;

x=00 时, N 最大值 =81928192 。 则 N 的范围: 11 ~~ 81928192 。

Page 17: 第六章  MCS-51 定时器 / 计数器

17

C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(213 – x)Tcy= (8192 – x)Tcy

其中: t 为定时时间。 求计数初值计算公式: x=213 – t/Tcy=8192 – t/Tcy

Page 18: 第六章  MCS-51 定时器 / 计数器

18

2 、工作方式 1 (以 T0 为例)— 16 位定时器 / 计数器

TMOD

1

0

M0

M1

C/T

GATE

INT0(P3.2)

T0(P3.4) C/T=1

C/T=0振荡器 ÷12

TL0

( 8 位)

TH0

( 8 位)

TCON

TF0

TR0

图 6-5 方式 1 ( 16 位计数器)

Page 19: 第六章  MCS-51 定时器 / 计数器

19

C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:

N=216 – x=65536 – x

其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=65535(FFFFH)65535(FFFFH) 时, N 最小值 =11;

x=00 时, N 最大值 =6553665536;

则 N 的范围: 11 ~~ 6553665536 。

Page 20: 第六章  MCS-51 定时器 / 计数器

20

C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(216 – x)Tcy= (65536 – x)Tcy

其中: t 为定时时间。 求计数初值计算公式: x=216 – t/Tcy=65536 – t/Tcy

Page 21: 第六章  MCS-51 定时器 / 计数器

21

3 、工作方式 2 (以 T0 为例)— 8 位定时器 / 计数器

TMOD0

1

M0M1

C/ TGATE

I NT0

T0 C/ T=1

C/ T=0振荡器 ÷ 12

控制

TL0(8位)

TCONTF0

TR0中断

图6-6 方式2(初始常数自动装入)

TH0(8位)

重新装入

TL0 作为 8 位加法计数器, TH0 作为初值寄存器用。 TL0 加法计数器溢出时置 TF0=1 ,而且发出重装载信号,使三态门打开,将 TH0 中的初值自动送入 TL0 。

Page 22: 第六章  MCS-51 定时器 / 计数器

22

C/T=1 , S1 接下面, T0 作计数器,对 P3.4 引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加 1 ,计数值公式为:

N=28 – x=256 – x

其中: N 为计数值, x 是 THx 、 TLx 的初值。 x=255(FFH)255(FFH) 时, N 最小值 =11;

x=00 时, N 最大值 =256256;

则 N 的范围: 11 ~~ 256256 。

Page 23: 第六章  MCS-51 定时器 / 计数器

23

C/T=0 时, S1 接上面, T0 作定时器,对机器周期脉冲 Tcy 计数。 求定时时间由下式确定: t=N·Tcy=(28 – x)Tcy= (256 – x)Tcy

其中: t 为定时时间。 求计数初值计算公式: x=28 – t/Tcy=256– t/Tcy

Page 24: 第六章  MCS-51 定时器 / 计数器

24

① 工作方式 0 : x= 213 – t/Tcy=213 –500us/2us

=8192 – 250=7942=1F06H

=1111100000110B

则 TL0=00000110B=06H , TH0=11111000B=0F8H

[ 例 6-2]: 已知晶振 6MHz ,要求定时 0.5ms ,试分别求出 T0 工作于方式 0 、方式 1 、方式 2 时的定时初值。解:机器周期 Tcy=12/fosc=12/6MHz=2us;

定时 t=0.5ms=500us.

Page 25: 第六章  MCS-51 定时器 / 计数器

25

② 工作方式 1 : x= 216 – t/Tcy=216 –500us/2us

=65536 – 250=65286=FF06H

则 TL0=06H , TH0=0FFH

③ 工作方式 2 : x= 28 – t/Tcy=28 –500us/2us=256 – 250=6=6H

则 TL0=06H

TH0=06H (重装初值寄存器,其值不变)

Page 26: 第六章  MCS-51 定时器 / 计数器

26

§6.2 定时器应用举例

学习内容

1

应用步骤

2

应用举例

Page 27: 第六章  MCS-51 定时器 / 计数器

27

1 、 T0 、 T1 的选择使用;2 、合理选择工作方式—— TMOD ;3 、计算初值 ;

x=2n –t/Tcy

其中, n 与工作方式有关, 方式 0 , n=13 ; 方式 1 , n=16 ; 方式 2 、 3 时, n=8 。

一、定时器应用步骤

Page 28: 第六章  MCS-51 定时器 / 计数器

28

4 、编制应用程序:① 定时器 / 计数器的初始化:

写 TMOD ; 写入定时初值; 设置中断系统的 IP 、 IE ; 启动定时器运行( TRx )。

② 正确编制定时器 / 计数器中断服务程序。

一、定时器应用步骤

Page 29: 第六章  MCS-51 定时器 / 计数器

29

[ 例 6-3]: 设单片机晶振频率 fosc=12MHz ,使用 T0以方式 0 产生周期为 1ms 的方波,并由 P1.0 输出。以中断方式完成编程。解:11 、、 TMODTMOD 配置配置 T1 不用,有关位设置为 0 ; T0 的 GATE=0 , C/T=0 , M1M0 = 00 (方式0 )。 则 TMOD 初始化设置为 00000000B ,即 00H 。

二、定时器编程举例

Page 30: 第六章  MCS-51 定时器 / 计数器

30

2 、计算初值 产生 1ms 的方波,只需在 P1.0 端以 0.5ms 为周期

交替输出高低电平即可,因此定时时间为 0.5ms 。

Tcy=12/fosc=12/12MHz=1us

x=213–t/Tcy=8192-500us/1us=8192-500=7692

=1E0CH=1 1110 0000 1100B , TH0=11110000B=0F0H ; TL0=00001100B=0CH

3 、启动和中断 定时器 T0 的启动由 TR0 控制,即 TR0=1 启动。 定时器 T0 的中断允许由 ET0 和 EA 控制, 即 ET0=1 、 EA=1 。

Page 31: 第六章  MCS-51 定时器 / 计数器

31

4 、程序设计 ORG 0000H LJMP MAIN ORG 000BH LJMP DS0 ORG 0100HMAIN: MOV SP, #30H MOV TL0, #0CH MOV TH0, #0F0H MOV TMOD, #00H SETB ET0 SETB EA SETB TR0 SJMP $DS0: MOV TL0, #0CH MOV TH0, #0F0H CPL P1.0 RETI

Page 32: 第六章  MCS-51 定时器 / 计数器

32

练习题:设单片机晶振频率 fosc=6MHz ,使用 T1 以方式 2 产生周期为 1ms 的方波,并由 P1.0 输出。以中断方式完成。