单片机定时器计数器Word文档下载推荐.docx

上传人:b****5 文档编号:18891808 上传时间:2023-01-02 格式:DOCX 页数:12 大小:20.23KB
下载 相关 举报
单片机定时器计数器Word文档下载推荐.docx_第1页
第1页 / 共12页
单片机定时器计数器Word文档下载推荐.docx_第2页
第2页 / 共12页
单片机定时器计数器Word文档下载推荐.docx_第3页
第3页 / 共12页
单片机定时器计数器Word文档下载推荐.docx_第4页
第4页 / 共12页
单片机定时器计数器Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机定时器计数器Word文档下载推荐.docx

《单片机定时器计数器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机定时器计数器Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

单片机定时器计数器Word文档下载推荐.docx

B3

B2

B1

B0

位符号

GATE

C/T

M1

M0

定时/计数器T1定时/计数器T0

表6—1TMOD控制位功能

符号

功能说明

门控位。

GATE=0,用运行控制位TR0(TR1)启动定时器。

GATE=1,用外中断请求信号输入端(INT1或INT0)和TR0(TR1)共同启动定时器。

C/T

定时方式或计数方式选择位。

C/T=0,定时工作方式。

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

M1M0

工作方式选择位。

M1M0=00方式0,13位计数器。

M1M0=01方式1,16位计数器。

M1M0=10方式2,具有自动再装入的8位计数器。

M1M0=11方式3,定时器0分成两个8位计数器,定时器1停止计数。

2.定时器控制寄存器TCON

定时器控制寄存器TCON地址88H,可以位寻址,TCON主要用于控制定时器的操作及中断控制。

有关中断内容在第四章已说明。

此处只对定时控制功能加以介绍。

表6—2给出了TCON有关控制位功能:

TCON

位地址

8F

8E

8D

8C

8B

8A

89

88

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

表6—2TCON有关控制位功能

符号

功能功功能功能说明

计数/计时1溢出标志位。

计数/计时1溢出(计满)时,该位置1。

在中断方式时,此位作中断标志位,在转向中断服务程序时由硬件自动清0。

在查询方式时,也可以由程序查询和清“0”。

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

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

TR1=1,启动定时器/计数器1工作。

该位由软件置位和复位。

计数/计时0溢出标志位。

计数/计时0溢出(计满)时,该位置1。

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

TR0=0,停止定时器/计数器0工作。

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

系统复位时,TMOD和TCON寄存器的每一位都清零。

三、工作方式及应用

用户可通过编程对专用寄存器TMOD中的M1,M0位的设置,选择四种操作方式。

(一)方式0(以T0为例)

在此方式中,定时寄存器由TH0的8位和TL0的5位(其余位不用)组成一个13位计数器。

当GATE=0时,只要TCON中的TR0为1,13位计数器就开始计;

当GATE=1以及TR0=1时,13位计数器是否计数取决于INT0引脚信号,当INT0由0变1时开始计数,当INT0由1变为0时停止计数。

当13位计数器溢出时,TCON的TF0位就由硬件置1,同时将计数器清"

0"

当方式0为定时工作方式时,定时时间计算公式为:

(213-计数初值X)×

晶振周期×

12

当方式0为计数工作方式时,计数值的范围是:

1-213(8192)。

方式0内部逻辑框图如图6—2所示:

12分频

T0启动C/T=0F晶振

TL0

TH0

C/T=1T0(P3.4)

计数脉冲输入

1

TR0

GATE

INT0

图6—2方式0内部逻辑结构图

例6—1设单片机晶振频率为6MHz,试用T0在P1.0端线输出周期为1ms的方波脉冲,如图6-3所示。

试用方式0分别以查询方式和中断方式实现。

0.5ms

1.

P1.0

8051

1ms

图6—3例6—1示意图

解:

1.采用查询方式。

(1)计数初值计算。

由题意可得,只需从P1.0端线每延时500s后交替输出高低电平即可。

得:

∵(213-X)1(s)×

12=500s

6

∴记数初值X=213-250=794210=1111100000110B

即TH0=F8H,TL0=06H

(2)T0初始化

计数器T1计数器T0

X

M1M0=00,方式0

C/T=0,定时

GATE=0,TR0启动

得(TMOD)=00H

由此可得参考程序如下:

ORG0000H

AJMPMAIN;

转向主程序。

ORG0040H

MAIN:

MOVSP,#30H;

堆栈设置。

MOVTMOD,#00H;

TMOD初始化。

MOVTH0,#0F8H

MOVTL0,#06H;

设置计数初值。

MOVIE,#00H;

禁止中断。

SETBTR0;

启动T0。

LOOP:

JBCTF0,LOOP1;

定时到,转LOOP1,并将TF0清零,否则

按原顺序执行。

AJMPLOOP;

继续查询。

LOOP1:

MOVTH0,#0F8H;

重新设置计数初值。

MOVTL0,#06H

CPLP1.0;

输出状态翻转。

AJMPLOOP;

返回LOOP。

2.采用中断方式

中断方式中计数初值X和TMOD的设置与查询方式相同。

采用中断方式参考程序如下:

ORG0000H

AJMPMAIN;

ORG000BH;

T0中断服务程序固定入口地址。

AJMPZD;

转向T0中断服务程序。

ORG0040H

MOVSP,#30H;

设置堆栈指针。

MOVTH0,#0F8H;

MOVTL0,#06H

SETBET0;

开放T0中断。

SETBEA;

开放总中断。

HERE:

AJMPHERE;

等待中断。

ZD:

CPLP1.0;

输出取反。

MOVTL0,#06H

RETI;

返回。

在实际应用中,由于中断请求及响应过程要占用几个机器周期时间,故实际输出波形的周期略大于1ms,可在调试中适当修改计数初值解决。

(二)方式1

方式1采用16位计数结构的工作方式,其余与方式0相同。

显然方式1的定时时间计算公式为:

(216-计数初值)×

计数范围是:

1─216(65536)

(三)方式2

方式2是由TL组成8位计数器。

TH作为常数缓冲器,由软件预置初始值。

当TL产生溢出时,一方面使溢出标志位TF置1;

同时把TH的8位数据重新装入TL中,即方式2具有自动重新加载功能。

方式2的逻辑结构见图6—4(以定时器/计数器0为例)。

8位启动

计数脉冲

自动加载

TRO

1

图6—4方式2逻辑结构图

例6—2用8051对外部脉冲进行计数,每计满100个脉冲后使内部40H单元内容加1,用T0以方式2中断实现,TR0启动。

T0

计数脉冲

例6—2示意图

解:

1.计数初值计算(方式2)

∵(28-X)=100

∴X=28-100=156D=9CH

2.TMOD设置

用T0以方式2实现,TR0启动,可得:

(TMOD)=00000110B=06H

3.中断系统设置

EA=1,ET0=1

4.参考程序:

AJMPMAIN

ORG000BH

AJMPZD

ORG0040H

MOVSP,#30H;

初始化。

MOVTMOD,#06H

MOVTH0,#9CH

MOVTL0,#9CH

MOV40H,#00H

SETBEA;

中断设置。

SETBET0

SETBTR0

AJMP$

ORG0080H

INC40H

RETI

(四)方式3

在方式3中,TL0和TH0成为两个相互独立的8位计数器。

TL0占用了全部T0的控制位和信号引脚,即GATE、C/T、TR0、TF0等。

而TH0只用作定时器使用。

而且由于定时器/计数器0的控制位已被TL0独占,因此TH0只好借用定时器/计数器1的控制位TR1和TF1进行工作。

同时,由于TR1,TF1已“出借”给TH0,TH1和TL1的溢出就送给串行口,作为串行口时钟信号发生器(即波特率信号发生器,详见第九章),并且只要设置好工作方式(方式0,方式1,方式2)以及计数初值,T1无须启动使可自动运行。

如要停止T1工作,只要将其设置工作方式3即可。

例6—3试用T0在P1.0输出周期为400s,占空比为10:

1的矩形脉冲,以定时工作方式2编程实现(查询方式)。

设F晶振=6MHz,如图6—5所示:

T1T2

T

400s

T=T1+T2

T:

T2=101

图6—5例6—3示意图

由题意可知,P1.0输出高电平持续360s,输出低电平持续40s。

1.计数初值计算:

定时工作方式2中TL0为8位计数器,TH0为预置寄存器。

延时360s计数初值X1计算公式为:

∵(28-X1)×

12(s)÷

6=360s

X1=4CH

短延时40s计数初值X2计算公式为:

(28-X2)×

12(s)÷

6=40s

X2=ECH

(TMOD)=00000010H=02H

3.采用查询方式(禁止中断)

4.程序流程图(算法)如图6—6所示:

开始

P1.01

初始化

TL04CH

TH0ECH

启动T0

定时到?

N

Y

P1.0状态取反

P1.0=1?

N

TH04CH

图6—6例6—3程序流程图(算法)

(5)参考程序如下:

MOVSP,#30H

SETBP1.0;

P1.0←1。

MOVTMOD,#02H;

MOVTL0,#4CH;

装入计数初值。

MOVTH0,#0ECH

AGAIN:

SETBTR0;

JBCTF0,LOOP1;

AJMPLOOP;

未到,继续等待。

LOOP1:

CPLP1.0;

定时到,P1.0状态取反。

JNBP1.0,LOOP2;

P1.0为零转移。

MOVTH0,#0ECH;

P1.0为1,装短延时计数初值。

AJMPAGAIN;

循环。

LOOP2:

MOVTH0,#4CH;

P1.0为零,装长延时计数初值。

思考题和习题

6—1请叙述8051单片机四种定时工作方式的特点。

6—2设晶振频率为12MHz,试编写一个用软件延时10ms的子程序。

6—3试用软、硬件相结合的方法编写一个延时10s的子程序。

6—4试编写程序,使T0以方式1每隔20ms向CPU发出中断申请,设晶振频率为6MHz,TR0启动,查询实现。

6—5试编写程序,使8051对外部事件(脉冲)进行计数,每计满1000个脉冲后使内部RAM60H单元内容加一,用T0以方式1中断实现,TR0启动。

6—6试编程用T0以方式1从P.0端线输出频率为50KHz的等宽矩形波。

已知晶振频率为12MHz,TR0启动,查询方式实现。

6—7有晶振频率为6MHz的MCS—51单片机,使用定时器T1以定时工作方式2从P1.2端线输出周期为200s,占空比为5:

1的矩形脉冲,TR1启动。

200s

题6—7

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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