第六章
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

第六章 MCS- 定时器 / 计数器 PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on
  • Presentation posted in: General

第六章 MCS- 定时器 / 计数器. 6.1 51 的定时 / 计数器 6.2 定时器 / 计数器的工作方式 6.3 定时器 / 计数器的应用. 6.1 51 的定时 / 计数器. 6.5.1 定时 / 计数器概述. 2 个 16 位 定时器 / 计数器 —— (52 系列有 3 个 16 位 Timer) 定时器 : 对片内机器时钟 ( 周期方波 ) 进行计数 计数器 : 对 Tx 引脚 输入的负脉冲进行计数. 与 Timer 工作有关的特殊功能寄存器: TCON 和 TMOD. 6.5.2 定时 / 计数控制.

Download Presentation

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Mcs

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

6.1 51的定时/计数器

6.2 定时器/计数器的工作方式

6.3定时器/计数器的应用


Mcs

6.1 51的定时/计数器

6.5.1 定时/计数器概述

2个16位定时器/计数器

——(52系列有3个16位Timer)

定时器:对片内机器时钟(周期方波)进行计数

计数器:对Tx引脚输入的负脉冲进行计数

与Timer工作有关的特殊功能寄存器:

TCON 和 TMOD


Mcs

6.5.2 定时/计数控制

Timer的2个特殊功能寄存器(TCON,TMOD)

一、定时器控制寄存器TCON(88H)

TF1 TR1 TF0TR0IE1 IT1 IE0 IT0

TFx: Timer0/1计数溢出标志位。

=1 计数溢出; =0 计数未满TFx标志位

可用于申请中断或供CPU查询。

在进入中断服务程序时会自动清零;但在

查询方式时必须软件清零。

TRx: Timer0/1运行控制位。

=1 启动计数; =0 停止计数


Mcs

定时器T0/T1 中断申请过程

定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数

  •  在已经开放T0/T1中断允许且已被启动的前提下:

  • T0/T1加满溢出时 TF0/TF1标志位自动置“1”

     检测到TCON中TF0/TF1变“1”后,将产生指令:

  • LCALL 000BH/LCALL 001BH 执行中断服务程序,

  •  TF0/TF1标志位会自动清“0”,以备下次中断申请。

TCON (88H)

TF1 TR1 TF0 TR0IE1 IT1 IE0 IT0

TR0/TR1:Timer0/1运行控制位:

TR0/TR1 =0 时,Timer0/1停止计数

TR0/TR1 =1 时,Timer0/1启动计数


Mcs

二、定时器方式寄存器TMOD (89H)

T1

T0

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

M1,M0:工作方式定义位 ( 定义4 种方式 ):

0 0:13位 Timer——用它无益,不要记它!

0 1:16位 Timer——经常用到

1 0:可自动重装的 8位 Timer——经常用到

1 1:T0 分为2个8位 Timer;T1 此时不工作

——因为没有带来甚麽好处,几乎无用

C/T :计数器/定时器选择位

= 1 外部事件计数器。对Tx引脚的负脉冲计数;

= 0 片内时钟定时器。对机器周期脉冲计数定时


Mcs

(89H)

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

T0

T1

GATE门控位: Timer可由软件与硬件两者控制

GATE = 0 ——普通用法

Timer的启/停由软件对TRx位写“1”/“0”控制

 GATE = 1 ——门控用法

Timer的启/停由软件对TRx位写“1”/“0”

和在INTx引脚上出现的信号的高/低共同控制


Mcs

6.2 定时器的工作方式及 应用

6.2.1工作方式1

一、工作方式1的结构图

振荡器

12

C/T=0

TLx THx (8位) (8位)

申请中断

TFx

C/T=1

Tx端

控制 =1开关接通

TRx位

&

GATE位

≥1

与门

INTx端

或门


Mcs

二、工作方式1 的编程要点:

THx/TLx赋初值:THx赋高8位,TLx赋低8位

TMOD选方式: 写“M1,M0”=01 b 选方式1

 若不用门控位,直接用软件写TRx控制启/停

 若使用门控位,先置位TRx,然后由INTx端

的高/低电平来控制其启/停

 若要允许中断,还须先置位ETx、EA等中断

允许控制位,并编写中断服务程序

 若不用中断,可查询“计数溢出标志TFx”

的方式工作,但溢出标志TFx须软件清0


Mcs

例1

若晶振频率为6MHz,计算单片机的最小与最大定时时间:

分析:已知fosc= 6MHz 则:

(振荡周期)1Tc=1/6MHz

(机器周期)1Tm=12Tc=12/6MHz=2S

粗略地说:Tmin  2S

16位定时器最大数值为:216=65536=0FFFFH+1

故选择方式 1 工作可以得到:

Tmax = 655362 = 131072S=131.072mS


Mcs

例2

要求对T0产生100mS定时进行初始化。(晶振=6MHz)

分析:已知fosc= 6MHz 则:

(机器周期)1Tm=12Tc=12/6MHz=2S

100mS÷2 S = 50000

16位定时器最大数值为:

216 = 65536 (=0FFFFH+1)

故选择方式1工作可以满足要求。

计算初值:65536-50000=15536=3CB0H


Mcs

由分析得知:T0选择方式1,初值=3CB0H

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

X X X X 0 0 0 1

初始化:MOV TMOD,#01H ;选 T0 方式 1

MOV TH0, #3CH ;赋初值高8位

MOV TL0, #0B0H ;赋初值低8位

SETB TR0 ;启动 T0定时

若需要定时器0产生中断还应当写如下语句:

SETB ET0 ;开T0中断允许

SETB EA ;开总中断允许

以及相应的中断服务程序。


Mcs

6.2.2工作方式2

一、工作方式2的结构图

振荡器

12

C/T=0

申请中断

TLx (8位)

TFx

C/T=1

溢出位

Tx端

控制 =1开关接通

TRx位

&

门开

THx (8位)

GATE位

≥1

与门

INTx端

或门


Mcs

二、工作方式 2 的编程

☞ THx/TLx赋相同初值

在TLx计数达到0FFH 再加“1”时,TL0

将溢出,进位位直接进入“TFx”去申请

中断,同时打开三态门,使THx中的值

自动重装(Copy)进TLx

☞ TMOD寄存器选方式:

写“M1,M0” = 10 b 选中方式2

☞ 其他用法与各种方式1完全相同


Mcs

例3

从P1.0 脚输出频率=1KHz方波。

设:晶振=6MHz。利用T1定时中断。

分析:fosc= 6MHz

1机器周期 = 2 S

1KHz方波周期 = 1 mS

半个方波周期 =500S

500uS÷2 uS = 250

若选择方式2 工作,8位定时器最大数值为:

28 =256 =0FFH + 1

可以满足要求。

计算初值:256-250=6

Th:半周期

T:周期


Mcs

ORG 0000H

AJMP MAIN

ORG 001BH ;T1的中断矢量

CPL P1.0 ;中断服务:P1.0取非

RETI ;中断返回

MAIN: MOV TMOD,#20H

MOV TH0, #6

MOV TL0, #6

SETB ET1

SETB EA

SETB TR1

HERE: AJMP HERE ;原地等待中断

END

;选T1方式2

;赋重装值

;赋初值

;开T1中断

;开总中断

;启动T1

初始化


Mcs

6.2.3 Timer工作方式 3

T0: 组织成TL0和TH0两个8位定时/计数器

T1: 不再是定时/计数器了

T1 的TR1和TF1出借给TH0当控制位使用,

剩下的TH1/TL1寄存器只能当作普通寄存

器用。


Mcs

一、Timer工作方式 3 结构:

TR1位

控制 =1

申请中断

TH0 (8位)

TF1

振荡器

12

C/T=0

申请中断

TL0 (8位)

TF0

C/T=1

控制 =1开关接通

T0端

TR0位

&

GATE位

≥1

与门

INT0端

☞T0成为双 8位Timer ☞T1不再有Timer功能 ☞TF1,TR1出借给TH0

或门


Mcs

6.3定时器/计数器的应用

例3长定时举例(设晶振=6MHz,要定时1秒):

ORG 0000H ;

AJMP MAIN

ORG 001BH

AJMP TINT ;见下一页

MAIN: MOV TMOD,#10H ;选T1方式1

MOV TH1, #3CH ;赋初值3CB0H=15536(只能定100mS)

MOV TL1,#0B0H

MOV 30H,#10 ;软件计数单元30H 初值=10

CLR F0 ;芯片复位时已经是“0”,此句可有可无

SETB ET1 ;开T1中断

SETB EA ;开总中断

SETB TR1 ;启动T1

HERE: JBC F0,TIMEUP ;原地等待“1秒到”的标志 F0

AJMP HERE

TIMEUP:(do something) ;定时1秒到了以后要做的事情

AJMP HERE

中断服务在主程序中


Mcs

长定时举例(续):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP TINT

MAIN: …………………

TINT:DJNZ 30H,RTN ;若中断不到10次就返回

SETB F0 ;已经中断够10次了“置1”标志位

MOV 30H,#10 ;为下一个1秒定时做准备

RTN: MOV TH1,#3CH ;再赋定时100mS的初值3CB0H

MOV TL1,#0B0H

RETI ;中断返回

END


Mcs

将此例的中断服务改写在中断服务程序中:

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP TINT ;见下一页

MAIN: MOV TMOD,#10H ;选T1方式1

MOV TH1,#3CH ;赋初值3CB0H=15536(只能定100mS)

MOV TL1,#0B0H

MOV 30H,#10 ;软件计数单元30H 初值=10

CLR F0 ;芯片复位时已经是“0”,此句可有可无

SETB ET1 ;开T1中断

SETB EA ;开总中断

SETB TR1 ;启动T1

HERE: AJMP HERE ;原地等待中断


Mcs

长定时举例(续):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP TINT

MAIN: …………………

TINT:DJNZ 30H,RTN ;若中断不到10次就返回

MOV 30H,#10 ;为下一个1秒定时做准备

(do something);定时1秒到了以后要做的事情)

RTN: MOV TH1,#3CH ;再赋初值

MOV TL1,#0B0H

RETI ;中断返回

END

中断服务


  • Login