定时器工作原理Word文档格式.docx

上传人:b****3 文档编号:13706551 上传时间:2022-10-13 格式:DOCX 页数:13 大小:21.29KB
下载 相关 举报
定时器工作原理Word文档格式.docx_第1页
第1页 / 共13页
定时器工作原理Word文档格式.docx_第2页
第2页 / 共13页
定时器工作原理Word文档格式.docx_第3页
第3页 / 共13页
定时器工作原理Word文档格式.docx_第4页
第4页 / 共13页
定时器工作原理Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

定时器工作原理Word文档格式.docx

《定时器工作原理Word文档格式.docx》由会员分享,可在线阅读,更多相关《定时器工作原理Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

定时器工作原理Word文档格式.docx

初值越小,计数长度越大。

最大计数长度为65536(216)个脉冲(初值为0)。

定时方式

定时方式时,T记录单片机内部振荡器输出的脉冲(机器周期信号)个数。

每一个机器周期使T0或T1的计数器增加1,直至计满回零自动产生溢出中断请求。

定时器的定时时间不仅与定时器的初值有关,而且还与系统的时钟频率有关。

在机器周期一定的情况下,初值越大,定时时间越短;

初值越小,定时时间越长。

最长的定时时间为65536(216)个机器周期(初值为0)。

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

与对定时器/计数器有关的控制寄存器共有4个:

TMOD、TCON、IE、IP。

IE、IP已在中断一节中介绍,这里不再赘述。

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

特殊功能寄存器TCON用于控制定时器的操作及对定时器中断的控制。

其各位定义格式如下。

其中D0~D3位与外部中断有关,已在中断系统一节中介绍。

TF0和TF1:

定时器/计数器溢出标志位。

当定时器/计数器0(或定时器/计数器1)溢出时,由硬件自动使TF0(或TF1)置1,并向CPU申请中断。

CPU响应中断后,自动对TF1清零。

TF1也可以用软件清零。

TR0和TR1:

定时器/计数起运行控制位。

TR0(或TR1)=0,停止定时器/计数器0(或定时器/计数器1)工作。

TR0(或TR1)=1,启动定时器/计数器0(或定时器/计数器1)工作。

可由软件置1(或清0)来启动(或关闭)定时器/计数器,使定时器/计数器开始计数。

用指令SETB(或CLR)使运行控制位置1(或清0)。

工作方式寄存器TMOD

TMOD用于控制定时器/计数器的工作方式。

字节地址为89H,不可位寻址,只能用字节设置其内容。

其格式如下:

定时器/计数器1

定时器/计数器0

位序

D7

D6

D5

D4

D3

D2

D1

D0

位标志

GATE

C/

M1

M0

其中,低4位用于T0,高4位用于T1的。

GATE:

门控位。

GATE=0,只要用软件使TR0(或TR1)置1就能启动定时器/计数器0(或定时器/计数器1);

GATE=1,只有在(或)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器/计数器0(或定时器/计数器1)工作。

不管GATE处于什么状态,只要TR0(或TR1)=0定时器/计数器便停止工作。

C/:

定时器/计数器工作方式选择位。

C/=0,为定时工作方式;

C/=1,为计数工作方式。

M0、M1:

工作方式选择位,确定4种工作方式。

如表所示。

表定时器/计数器工作方式选择

工作方式

功能说明

1

13位计数器

2

16位计数器

3

自动再装入8位计数器

4

定时器0:

分成两个8位计数器定时器1:

停止计数

【例】设置定时器1工作于方式1,定时工作方式与外部中断无关,则M1=0,M0=1,GATE=0,因此,高4位应为0001;

定时器0未用,低4位可随意置数,但低两位不可为11(因方式3时,定时器1停止计数),一般将其设为0000。

因此,指令形式为:

MOV?

TMOD,#10H

定时器/计数器工作方式与程序设计

通过对特殊功能寄存器TMOD中的设置M1、M0两位的设置来选择四种工作方式,定时器/计数器0、1和2的工作方式相同,方式3的设置差别较大。

工作方式0

工作方式寄存器TMOD中的M1M0为:

00。

定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器。

当TL0的低5位计满溢出时,向TH0进位,TH0溢出时,对中断标志位TF0置位,向CPU申请中断。

定时器/计数器0方式0的逻辑结构如图所示。

1.工作在定时方式

C/=0,定时器对机器周期计数。

定时器在工作前,应先对13位的计数器赋值,开始计数时,在初值的基础上进行减1计数。

定时时间的计算公式为:

定时时间=(213–计数初值)×

晶振周期×

12

或定时时间=(213–计数初值)×

机器周期

若晶振频率为12MHz,则最短定时时间为

[213-(213-1)]×

(1/12)×

10-6×

12=1μs

最长定时时间为

(213-0)×

12=8192μs

2.工作在计数方式

C/=1,13位计数器对外部输入信号进行加1计数。

利用由0变为1时,开始计数,由1变为0时,停止计数,可以测量在端出现的正脉冲的宽度。

计数值的范围是1~213=8192(个外部脉冲)。

【例】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使用定时器T0,工作方式0,计算定时器初值X。

解:

∵t=(213–X)×

当单片机晶振频率为12MHz时,机器周期=1μs

∴8×

103=(213–X)×

X=8192-8000=192

转换成二进制数为:

【例】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250μs,当T0工作在方式0时T0计数器的初值是多少

∴250=(213–X0)×

X0=8192-250=7942

【例】利用T0方式0产生1ms的定时,在引脚上输出周期为2ms的方波。

设单片机晶振频率fosc=12MHz。

(1)解题思路

要在引脚输出周期为2ms的方波,只要使每隔1ms取反一次即可。

执行指令为CPL?

(2)确定工作方式:

方式0?

TMOD=00H

C/=0:

T0为定时功能;

(D2位)

GATE=0,只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);

M1M0=00,工作方式0

∴TMOD的值为=00H

~可取任意值,因T1不用,这里取0值。

使用MOV?

TMOD,#00H即可设定T0的工作方式

(3)计算1ms定时时T0的初值

机器周期T=1/fosc×

12=1μs

计数个数:

X=1ms/lμs=1000

设T0的计数初值为x0,则x0=(213一X)s

=8192—1000

=7192D

高8位低5位

将高8位装入TH0

将低5位11000=18H装入TL0

11

EA=1,CPU开放中断;

ET0=1,允许T0中断;

(4)编程

可采用中断和查询两种方式编写程序。

方法一:

中断方式

ORG?

0000H

AJMPMAIN;

转主程序MAIN

ORG000BH

AJMPIT0P;

转T0中断服务程序IT0P?

ORG1000H

MAIN:

SP,#60H?

设堆栈指针

MOVTH0,#0E0H;

给定时器T0送初值

MOVTMOD,#00H?

设置T0为方式0,定时

MOVTL0,#18H;

送定时初值

MOVTH0,#0E0H

SETBEA;

CPU开中断

SETBET0;

T0允许中断

SETBTR0

启动T0定时

HERE:

SJMPHERE;

等待中断

中断服务程序:

IT0P:

ORG1200H;

T0中断入口

MOVTL0,#18H?

重新装入计数初值

MOVTH0,#0E0H?

CPL

输出方波

RETI

中断返回END

方法二:

查询方式

MOVTMOD,#00H?

送初值

SETBTR0;

LOOP:

JBC?

TF0,NEXT?

查询定时时间到否

SJMPLOOP

NEXT:

TL0,#18H?

SJMPLOOP;

重复循环

工作方式1

01。

定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数。

工作方式1以16位计数器参与计数。

定时器/计数器0方式1的逻辑结构如图所示。

[216-(216-1)]×

(216-0)×

12=65536μs=ms

C/=1,16位计数器对外部输入信号进行加1计数。

计数值的范围是1~216=65536(个外部脉冲)。

【例】假设AT89S52单片机晶振频率为12MHz,所需定时时间为10ms,当T0工作在方式1时T0计数器的初值是多少

∵t=(216–X0)×

∴10×

103=(213–X0)×

X=65536-10000=55536

【例】假设AT89S52单片机晶振频率为12MHz,定时器T0的定时初值为9800,计算T0工作在方式1时的定时时间。

∴t=(216–9800)×

t=65536-9800=55736μs

【例】用定时器T0产生50HZ的方波。

由输出此方波(设时钟频率为12MHZ)。

采用中断方式。

50HZ的方波周期T为T=1/50=20ms

可以用定时器产生10ms的定时,每隔10ms改变一次的电平,即可得

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1