4. 8051 的定时器/计数器

21
4. 8051 的的的的 / 的的的 8051 的的的的的的 2 的 16 的的的的 / 的的的 T0 T1 8052 的的的的的的的的的 的的的的的的的 16 的的的的的 / 的的的的的的的的的的的的的的的的的 TH0 TL0 的 TH1 TL1 的的 TH2 TL2 的的的 T0 T1 的的的的的的的的的的的 2 的的的的的的的的 TMOD TCON 的的的T2 的的的的的的的的的的的的的的的的的的的 T2MOD T2CON 的的的 的的 T2 的的的 2 的的的的的的的的 RCAP2H RCAP2L 的的的的 16 的 的的的的的的的的的的 4-1 的的的 / 的的的的的的的的的的的 4-1-1 的的的 / 的的的的的的

Upload: carys

Post on 11-Jan-2016

154 views

Category:

Documents


0 download

DESCRIPTION

4. 8051 的定时器/计数器. 4-1 定时器/计数器的结构及工作原理. 4-1-1 定时器/计数器的结构. 8051 系列单片机有 2 个 16 位的定时 / 计数器 T0 、 T1 , 8052 以上系列单片机还有一个可用于捕获的 16 位加减定时 / 计数器。其记数值存放在内部特殊寄存器 TH0 、 TL0 和 TH1 、 TL1 以及 TH2 、 TL2 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 4.  8051 的定时器/计数器

4. 8051 的定时器 / 计数器

8051 系列单片机有 2 个 16 位的定时 / 计数器T0 、 T1 , 8052 以上系列单片机还有一个可用于捕获的 16 位加减定时 / 计数器。其记数值存放在内部特殊寄存器TH0 、 TL0 和 TH1 、 TL1 以及 TH2 、 TL2

定时器 T0 、 T1 的工作方式及启停控制用 2 个特殊功能寄存器 TMOD 、 TCON 来实现, T2 的工作方式及启停控制则用特殊功能寄存器 T2MOD 、 T2CON 来实现。另外T2 还具有 2 个特殊功能寄存器 RCAP2H 、 RCAP2L 用于实现 16 位的自动装载和捕获功能

4-1 定时器 / 计数器的结构及工作原理4-1-1 定时器 / 计数器的结构

Page 2: 4.  8051 的定时器/计数器

图 4-1 定时器 / 计数器的结构框图

微处理器

TCON(88H)

TMOD(89H)

T2CON(C8H)

T2CON(C9H)

TH0 TL0 TH1 TL1 TH2 TL2

T0 T1 T2内部时钟

T0INT0

T1 INT1

T2

Page 3: 4.  8051 的定时器/计数器

图 4-2 定时器 / 计数器工作原理框图

4-1-2 定时器 / 计数器的工作原理

系统时钟

TFi

外部引脚 Ti

启动控制

溢出标志

中断÷12

外部引脚 INTi

GATE

+

&TRi

模式控制 C/T

TL TH

计数器

工作方式选择M1 M0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT9TCON

GATE C/ T M1 M0 GATE C/T M1 M0

T1 T0

TMOD

C/ T =0

Page 4: 4.  8051 的定时器/计数器

1 T0/T1 的方式控制寄存器 TMOD

特殊寄存器 TMOD 用来设置 T0/T1 的工作方式和启停控制方式。

4-1-3 定时器 / 计数器的控制寄存器

GATE C/ T M1 M0 GATE C/T M1 M0

T1 T0

TMOD

M1 M0 计数器工作方式0 0 方式 0 : 13 位计数器, TLi 低 5 位和 THi 8 位。0 1 方式 1 : 16 位计数器。1 0 方式 2 : 8 位自动装载计数器, TL 溢出时自动装载成 TH

的值1 1 方式 3 : T0 为 2 个 8 位计数器, T1 停止工作。

Page 5: 4.  8051 的定时器/计数器

TF0/TF1 :定时器溢出标志,由硬件置 1 ,向 CPU 申请中断,中断响应 后,由硬件清 0 。查询方式,需软件清 0TR0/TR1: 定时器启停控制 ( 必要条件 ) ,由软件设置。另一个条件是 GATEIE0/IE1: 外部中断 INT0/INT1 中断请求标志IT0/IT1: 外部中断 INT0/INT1 的触发方式 ITi=1, INTi 为边沿触发方式 , 当外部中断引脚由高电平变为低 电平时 , 则自动触发 IEi, CPU 响应中断后 , 自动 ( 硬件 ) 清除 IEi, 当 INTi 引脚再次由高电平变为低电平时 , 才能响应第 2 次中断。 ITi=0, INTi 为电平触发方式 , 当外部中断引脚为低电平时 , 则 自动触发 IEi, 中断返回后 , 若外部中断引脚仍为低电平,则会再次 触发中断,只有将外部中断引脚置为高电平,才能停止中断响应。

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT9TCON(88H)

1 T0/T1 的控制寄存器 TCON

Page 6: 4.  8051 的定时器/计数器

8192213

4-2 T0/T1 的工作方式

中断

记数范围 1~8192

方式 0

系统时钟

TFi

外部引脚 Ti

启动控制

溢出标志

÷12

外部引脚 INTi

GATE

+

&TRi

模式控制 C/ T

TL5 TH

计数器 +1

工作方式选择M1 M0=00

C/ T =0

Page 7: 4.  8051 的定时器/计数器

方式 1

系统时钟

TFi

外部引脚 Ti

启动控制

溢出标志

中断÷12

外部引脚 INTi

GATE

+

&TRi

模式控制 C/ T

TL TH

计数器 +1

工作方式选择M1 M0=01

记数范围 1~65536

C/ T =0

Page 8: 4.  8051 的定时器/计数器

方式 2

记数范围 1~256 ;常用作定时脉冲发生器

系统时钟

TFi

外部引脚 Ti

启动控制

溢出标志

中断÷12

外部引脚 INTi

GATE

+

&TRi

模式控制 C/ T

TL0

TH

工作方式选择M1 M0=10

C/ T =0

Page 9: 4.  8051 的定时器/计数器

方式 3

系统时钟 TF1

启动控制

溢出标志

中断÷12

TR1

TH0

系统时钟

TF0

外部引脚 T0

启动控制

溢出标志

中断÷12

外部引脚 INT0

GATE

+

&TR0

模式控制 C/ T

TL0

工作方式选择M1 M0=10

C/ T =0

T1 在方式 3 时= 停止

Page 10: 4.  8051 的定时器/计数器

4-3 T2 的工作方式

- - - - - - T2OE DCENT2MOD

T2CON TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 CP/ RL2

8052 以上单片机除具有 T0 、 T1 外,还有一个具有 16 位自动装载或捕获功能的加减定时器 / 计数器 T2 ,通过特殊寄存器T2MOD 、 T2CON , T2 具有 4 种工作方式。

Page 11: 4.  8051 的定时器/计数器

- - - - - - T2OE DCENT2MOD

T2CON TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 CP/ RL2

4-3-1 自动捕获方式

中断

T2(P1.0)

系统时钟

TF2

溢出标志÷12

T2EX(P1.1)

TR2C/ T2

TL2 TH2

计数器

+

C/ T2 =0

RCAP2L RCAP2H

EXF2

EXEN2

边沿检测

CP/ RL2 = 1

Page 12: 4.  8051 的定时器/计数器

4-3-2 自动装载方式

1 )向上计数方式 DCEN = 0

中断

T2(P1.0)+

系统时钟

TF2

溢出标志÷12

T2EX(P1.1)

TR2C/ T2

TL2 TH2

计数器

+

C/ T2 =0

RCAP2L RCAP2H

EXF2

EXEN2

边沿检测

CP/ RL2 = 0

Page 13: 4.  8051 的定时器/计数器

2 )双向计数方式 DCEN = 1

中断

T2(P1.0)

系统时钟

TF2

÷12

TR2C/ T2

TL2 TH2

C/ T2 =0

RCAP2L RCAP2H

计数方向

CP/ RL2 = 0 0FFH 0FFH EXF2

T2EX(P1.1)

1 :递增0 :递减

溢出标志

Page 14: 4.  8051 的定时器/计数器

4-3-3 可编程时钟输出

DCEN =0 T2OE=1

T2(P1.0)

系统时钟 ÷2

TR2C/ T2

TL2 TH2

C/ T2 =0

RCAP2L RCAP2H

CP/ RL2 = 0

T2OE=1

Page 15: 4.  8051 的定时器/计数器

4-3-4 波特率发生器方式

TCLK 或 RCLK 为 1 DCEN =0

T2(P1.0)

系统时钟 ÷2

TR2C/ T2

TL2 TH2

TX/RX 波特率C/ T2 =0

RCAP2L RCAP2H

CP/ RL2 = 0

T2EX(P1.1)

EXF2

EXEN2

T2 中断

Page 16: 4.  8051 的定时器/计数器

波特率计算公式

Page 17: 4.  8051 的定时器/计数器

4-3 定时器 / 计数器的应用 例 4.1 设 8051 单片机的系统时钟为 12MHz ,利用定时器 , 在 P1.7上实现 1kHz 的脉冲发生器 , 要求占空比为 1:1 。 分析:根据题义, P1.7上高低电平的时间分别为 500μs ,若采用 T0方式 1 定时来实现电平翻转,定时初值为: 8192-500=7192=11110000 01100B 。利用中断,可减少 CPU的等待时间,编程如下: org 0000h ljmp main org 0003h ljmp int_T0 ……Main: mov tmod , #00H ; 设定时器 0 为方式 0

mov th0 , #0f0H ; 置定时器初值 mov tl0 , #0cH

setb tr0 ; 启动 T1 mov ie, #81h ; 开中断

… …

Page 18: 4.  8051 的定时器/计数器

int_T0: mov th0 , #0f0H; 重置定时器初值 mov tl0 , #0cH jbc p1.7, T_end ;p1.7=1 p1.7=0, jump to T_01

setb p1.7 ;p1.7=0 p1.7=1,

T_end: reti

该程序由于要在中断程序中重新设置定时器的值,可能会带来一定的误差,并会产生较大的累积误差。利用自动装载(方式 2 )可减小累积误差误差,但 T0 方式 2 最大定时时间为 256µs ,可设定时时间为 250µs ,利用 1位标志进行翻转判断,编程如下:

T_250us equ 00h

org 0000h ljmp main org 0003h ljmp int_T0 ……Main: mov tmod , #02H ; 设定时器 0 为方式 0

mov th0 , #06H ; 置定时器装载值 setb tr0 ; 启动 T1 mov ie, #81h ; 开中断

Page 19: 4.  8051 的定时器/计数器

int_T0: jbc T_250us, T_01 ; 后 250 us, jump to 翻转setb T_250us ; 准备翻转reti

T_01: jbc p1.7, T_end ;p1.7=1 p1.7=0, jump to T_01 setb p1.7 ;p1.7=0 p1.7=1,

T_end: reti

若将本例中 P1.7 改为内部 RAM 位(如 T_1ms ),配合 T_250us ,可将主程序分成 4 个节拍,分别对不同响应频率要求的信号进行处理,以提高系统的性能

若采用 8052 以上单片机,也可使用定时器 2 ,编程如下:

Page 20: 4.  8051 的定时器/计数器

T_1ms equ 02h

org 0000h ljmp main org 002bh ljmp int_T2 ……

Main: mov t2mod , #00H ; 设定时器 2 为方式 + 计数mov rcap2H , #0feH ; 置定时器装载值 mov rcap2L , #0cH ; 置定时器装载值 setb tr2 ; 启动 T1 mov ie, #0a0h ; 开中断

int_T2: clr tf2 ; 中断撤消 jbc T_1ms, T2_end ; T_1ms =1 T_1ms =0

setb T_1ms ; T_1ms =0 T_1ms =1 T2_end: reti

Page 21: 4.  8051 的定时器/计数器

利用 T2 和查表法,在 P1.7 上输出脉冲宽度按正弦变化的 SPWM 方波, SPWM 载波的频率为 1KHz, 正弦函数的频率为 10Hz 、幅值为 4V( 即占空比为 10%~90%).

作业