17
1 第第第 第第第 MCS-51 MCS-51 第第第第第第 第第第第第第 / / 第第第 第第第 第第 第第 第第第 第第第 / / 第第第第第第第第第第 第第第第第第第第第第 第第第 第第第 第第第 第第第 / / 第第第第第第第第第第 第第第第第第第第第第

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

Embed Size (px)

DESCRIPTION

第六章  MCS-51 单片机定时器 / 计数器. 概述 第一节 定时器 / 计数器结构和工作方式 第二节 定时器 / 计数器的编程应用举例. 概 述. 定时器/计数器是 MCS - 51 单片机的重要功能模块之一。在检测、控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。 MCS - 51 单片机内有 3 个定时器/计 数器 T0 、 T1 和 T2 ;本章主要介绍 MCS - 51 的原理、结构、工作方式及应用。. 脉冲. +1 计数器. 溢出. - PowerPoint PPT Presentation

Citation preview

11

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

概述概述

第一节 定时器第一节 定时器 // 计数器结构和工作方式计数器结构和工作方式

第二节 定时器第二节 定时器 // 计数器的编程应用举例计数器的编程应用举例

22

概 述概 述 定时器/计数器是定时器/计数器是 MCSMCS -- 5151 单片机的重要单片机的重要

功能模块之一。在检测、控制及智能仪器等应功能模块之一。在检测、控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数器主要驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。用于外部事件的计数。 MCSMCS -- 5151 单片机内有单片机内有33 个定时器/计个定时器/计

数器数器 T0T0 、、 T1T1 和和 T2T2 ;本章主要介绍;本章主要介绍 MCSMCS -- 5151 的原理、结构、工作方式及应用。的原理、结构、工作方式及应用。

33

MCS-51 计数 / 定时器的原理

实质是计数器,脉冲每一次下降沿,计数寄存器数值将加 1 。 计数的脉冲如果来源于单片机内部的晶振 , 由于其周期极为准确,这时称为定时器。计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器。

+1 计数器

溢出 中断脉冲

控制开关

44

第一节 第一节 定时器定时器 // 计数器结构计数器结构 和工作方式 和工作方式

一、一、    定时器/计数器定时器/计数器 00 ,, 11 的结构的结构P3.4 P3.5

55

一、一、 定时器方式控制寄存器定时器方式控制寄存器 TMODTMOD

1 )功能选择位 C/T : =0 ,定时功能,计数内部机器周期脉冲; =1 ,计数功能,计数引脚 T0(T1) 输入的负脉冲。2 )方式选择位 M1 、 M0 :3 )门控方式选择位 GATE 计数器启动方式的选择 确定定时器工作方式指令: MOV TMOD , # 方式字 例:设 T0 用方式 2 非门控定时, T1 用方式 1 门控计

数。 MOV TMOD , #0D2H ; 1101 0010 B

T1 T0

66

三.定时器/计数器控制寄存器三.定时器/计数器控制寄存器 TCONTCON

( 1 )定时器/计数器 1 运行控制位 TR1 ( TCON.6 )( 2 )定时器/计数器溢出中断标志 TF1 ( TCON.7 ),当

定时器/计数器 1 溢出时由硬件自动置 TF1 = 1 ,在中断允许的条件下,便向 CPU 发出定时器/计数器 1 的中断请求信号,CPU 响应后 TF1 由硬件自动清零。在中断屏蔽条件下, TF1 可作查询测试用。

TF1 也可以用程序置位或清零,例如执行指令 SETB TF1 后TF = 1 。这就是说,定时器/计数器 1 的中断请求还能用程序安排产生,这称为软件中断。

在定时器/计数器 1 工作时, CPU 可以随时查询 TF1 的状态。

( 3 )定时器/计数器 0 运行控制位 TR0 ( TCON.4 )( 4 )定时器/计数器 0 溢出中断标志 TF0 ( TCON.5 )

77

四、工作方式四、工作方式

一、一、 方式方式 00 1313 位定时位定时 // 计数器。 计数器。 THx 8THx 8 位和位和 TLxTLx 低低

55 位组成位组成 1313 位加位加 11 计数器,此种方式与计数器,此种方式与MCSMCS -- 4848 系列兼容,如果不是为了兼系列兼容,如果不是为了兼容的目的,一般不用方式容的目的,一般不用方式 0.0. 方式方式 00 的全的全部功能,方式部功能,方式 11 都可以代替。都可以代替。

88

可用程序将 0 - 8191 ( 213 - 1 )的某一数送入 TH0 、 TL0作为初值。 TH0 、 TL0 从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。

当对外部事件计数时 , 外部计数脉冲的频率应小于 fosc/24 ,且高电平与你电平的延续时间均不得小 1 个机器周期。计数值由式 N = 8192 - x 计算 (x 为初值 )

对内部机器周期计数即为定时 , 定时时间由式 T =( 8192 - x ) Tcy 计算

99

16 位定时 / 计数器。 THx8 位和 TLx8 位组成 16 位加 1 计数器最大计数脉冲个数: 1 ~ 65536(216) ,最长定时时间 ( 晶振 12MHz

T=1s) : 1s ~ 65536×T= 65.54ms

二、 方式 1

非门控方式:当 GATE = 0,

控制权由 TRx 决定 TRx = 1 计数开始 TRx = 0 计数停止

门控方式:当 GATE = 1 、 TRx =1 控制权由 INTx 决定

INTx = 1 计数开始

INTx = 0 计数停止

1010

三、 方式 2 用于需要重复定时和计数的场合。 最大计数值: 256 (28) 最大定时时间 ( 晶振 12MHz 时 T=1s) : 256s 自动恢复初值 8 位定时 / 计数器。 TLx 为 8 位加 1 计数器,THx 为 8 位初值暂存器。

1111

四、方式 3T0分成 2 个 8 位定时器: TL0 定时 / 计数器和 TH0 定时器TL0占用 T0 控制位: C/T , TR0 , GATE ; TH0占用 T1 控制位: TR1 。 T1 不能使用方式 3 工作。

1212

第二节 定时器第二节 定时器 // 计数器的编程应用举例计数器的编程应用举例 一、 定时器/计数器的初始化1. 初始化的步骤(1) 确定工作方式、操作模式、启动控制方式——写入 TMO

D 寄存器。(2) 设置定时器或计数器的初值——可直接将初值送入 TH0 、

TL0 或 TH1 、 TL1 中, 16 位计数初值必须分两次写入对应的计数器。

(3)   根据要求是否采用中断方式——直接对 I E 寄存器赋值。开放中断时,将对应的中断允许位置 1 ,采用程序查询方式 IE 应将对应的中断允许位清 0 ,进行中断屏蔽。

( 4 )启动定时器工作——可使用 SETB TR0 、 SETB TR1和 SETB TR2 指令启动。对于 T0 和 T2 而言,可根据 GATE 的设置有两种启动。

1313

2.2. 计数初值的计算计数初值的计算当计数器使用时,初值当计数器使用时,初值 XX 的计算式为:的计算式为: XX == MM -计数值-计数值 当定时器使用时,初值的计算式为:当定时器使用时,初值的计算式为:

XX == MM -计数值=-计数值= MM -- TT // TTCYCY

式中:式中: TTCY CY ----为机器周期,为机器周期, T T ----为要求定时的时间。为要求定时的时间。    M 由工作方式决定例如: MCS - 51 的主频为 6MHz ,要求产生 1ms 的定时,

试计算计数初值 X 。若设置定时器工作于操作模式 1 ,定时 1ms ,则计数初值 X 等于:

1414

3. 3. 定时器初始化举例定时器初始化举例 例例 66 -- 1 1 已知振荡器振荡频率已知振荡器振荡频率 ffoscosc=12MHz=12MHz ,要求定时器/计数器,要求定时器/计数器

00 产生产生 10ms10ms 定时,试编写初始化程序。定时,试编写初始化程序。解:由于定时时间大于解:由于定时时间大于 8192us8192us ,应选用工作方式,应选用工作方式 11 。。(( 11 )) TH0TH0 、、 TL0TL0 初值的计算初值的计算 由于由于 TTcycy == 11μμss ,故有,故有 TT =(=( 6553665536 -- xx )) TTcycy =(=( 6553665536 -- xx ))××11μμss == 10ms10ms

得得 x=55536=D8F0 x=55536=D8F0 即即 TH0TH0 == D8HD8H ,, TL0TL0 == F0HF0H

(( 22 )方式寄存器)方式寄存器 TMODTMOD 的编程的编程

(( 33 )初始化程序)初始化程序 STARTSTART :: MOV TL0MOV TL0 ,#,# 0F0H0F0H MOV TH0MOV TH0 ,#,# 0D8H0D8H MOV TMODMOV TMOD ,#,# 01H01H SETB TR0SETB TR0

1515

二、二、 定时器的应用举例定时器的应用举例1 .模式 0 的应用例 6 - 3 选用 T0 操作模式 0 ,用于定时,

由 P1.2 输出周期为 1ms 的方波,设晶振 fosc = 6MHz 。采用查询方式编程。

解:确定用 T0 定时 500μs 。设 X 为时间初值

X = 213 - fosc×t / 12 = 8192 - 6×500/ 12 = 7942 = 1F06H

由于作 13 位计数器使用, TL0 的高 3 位未用,应填 0 , TH0 占高 8 位,所以13 位的二进制表示值应为:

X0 = 11111000 00110B ,TL0 = 06H ,只用到 5 位, TH0 = F8H设置模式控制字TMOD : 00000000 00H

000

源程序如下:

ORG 8000H

MOV TL0 ,# 06H

MOV TH0 ,# 0F8H

SETB TR0

LP1 : JBC TF0 , LP2 ;

AJMP LP1

LP2 : MOV TL0 ,# 06H

MOV TH0 ,# 0F8H

CPL P1.2

SJMP LP1

1ms

1616

例 P1.7驱动 LED亮 1 秒灭 1 秒地闪烁,设时钟频率为 12MHz 。 长定时方法:增加一个软件计数器(如 R7) , 记录中断 次数,计满n个中断为 1 秒。 ORG 0000H

AJMP MAIN ORG 001BH AJMP PT1INT ORG 0030H

START : MOV R7,#00H MOV TMOD , #10H

MOV TL1 , #0F0H MOV TH1 , #0D8H

SETB EA SETB ET1 SETB TR1

HERE : SJMP HEREPT1INT: MOV TL1 , #0F0H

MOV TH1 , #0D8H INC R7

CJNE R7,#10, PEND MOV R7, #00H CPL P1.7PEND: RETI

1717

本本章章学学习习结结束束!!