定时计数器及其应用_第1页
定时计数器及其应用_第2页
定时计数器及其应用_第3页
定时计数器及其应用_第4页
定时计数器及其应用_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定时计数器及其应用第一页,共六十四页,2022年,8月28日第八章定时计数器及其应用8.0引言8.1T0/T1的基本结构和工作方式8.2定时器的应用第二页,共六十四页,2022年,8月28日一、定时器计数器的功能:1.定时器的功能:定时发出脉冲信号,向CPU申请中断,其定时间隔的长短及起始控制的时间均可由程序控制。例如某机械零件的热处理工艺曲线为:温度开始定时保温5分钟淬火清洗开始定时回火3小时空冷

实际控制可以由单片机定时发出信号控制自动完成整个工艺过程。8.0引言第三页,共六十四页,2022年,8月28日2.计数功能:对外界发生的事件计数(输入脉冲),当达到程序规定的计数值时,输出一脉冲信号,申请中断。例如一啤酒生产线,如下图所示

计数24瓶光电信号24瓶装完申请中断转入中断服务程序装箱输送带第四页,共六十四页,2022年,8月28日★定时器(Timer)与计数器(Counter)的区别★定时计数器在单片机应用系统中的地位和作用时间基准、延时、电子音乐、电机速度控制工业测量(电机速度、产量、信号频率、脉冲宽度)★51系列单片机片上定时计数器的基本特性:

可编程(3个方面):

1)位数

2)启动方式

3)定时/计数方式★其它计数器:

74LS161、163、160、162(不可编程)第五页,共六十四页,2022年,8月28日问题/知识点1.T0/T1有哪几种工作模式?

2.方式1、2各有什么突出特点?

3.T0/T1的计数信号来源于何处?

4.对外部信号计数时的最高允许频率为多少?

5.如何启动T0/T1定时或计数?

6.TF0、TF1在什么情况下会自动置1?何时

会自动清零?

7.相关的SFR有哪几个?第六页,共六十四页,2022年,8月28日8.1MCS-51的定时器两个可编程的定时器/计数器T1、T0。2种工作模式:(1)计数器工作模式(2)定时器工作模式4种工作方式(方式0-方式3)第七页,共六十四页,2022年,8月28日1、计数原理对外部事件进行计数。1)预先装入一个计数初值。2)每来一个外部脉冲输入,记数器+1。3)记数器计满回零,产生溢出中断请求。计数值当前值初值第八页,共六十四页,2022年,8月28日2、定时原理对周期性的定时脉冲进行计数。1)预先装入一个计数初值。2)周期性+1记数。3)记数器计满回零,产生溢出中断请求。定时时间记数器的模初值计数脉冲的周期MCS-51单片机的定时脉冲频率为系统晶振频率的12分频,即一个机器周期。第九页,共六十四页,2022年,8月28日8.1.1定时器/计数器的控制TMOD:选择定时器/计数器T0、T1的工作模式和工

作方式。

TCON:控制T0、T1的启动和停止计数,同时锁存T0、

T1的状态。系统复位时,TMOD和TCON的所有位清0用户可用软件对TMOD和TCON进行写入和更改。第十页,共六十四页,2022年,8月28日8.1.1.1定时器/计数器控制寄存器TCON

低4位与外部中断有关,已介绍。高4位的功能如下:

(1)TF1、TF0——计数溢出标志位

(2)TR1、TR0——计数运行控制位

1:启动定时器/计数器工作

0:停止定时器/计数器工作第十一页,共六十四页,2022年,8月28日标志位计满溢出时,单片机内部硬件对TF0(TF1)置“1”。中断方式:作为中断标志位。在响应中断转向中断服务程序后,由硬件自动对TF清“0”。查询方式:作为定时器状态位以供查询。查询有效后以软件及时将该位清“0”。第十二页,共六十四页,2022年,8月28日例:用位操作来使用定时器SETBTR1SETBTR0CLRTR1CLRTR0JBCTF1,L1;查询TF1,为1则转向L1且TF1清零。第十三页,共六十四页,2022年,8月28日8.1.1.2工作方式控制寄存器TMODTMOD的字节地址为89H,不能按位寻址,只能用字节传送指令来设置。8位分为两组,高4位控制T1,低4位控制T0。第十四页,共六十四页,2022年,8月28日(1)GATE——门控位

0:以TRx(x=0,1)来启动定时器/计数器运行。

1:用外中断引脚(/INT0或/INT1)上的高电平和

TRx来启动定时器/计数器运行。

(2)C/T*——计数器模式和定时器模式选择位

1:计数方式,计数脉冲从外部引脚引入。

T0-P3.4T1-P3.5

0:定时器方式,计数脉冲为内部脉冲。

脉冲周期=机器周期第十五页,共六十四页,2022年,8月28日(3)M1、M0——工作方式选择位

M1M0工作方式

00 方式0,13位定时器/计数器。

01 方式1,16位定时器/计数器。

10 方式2,8位常数自动重新装载

11 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。第十六页,共六十四页,2022年,8月28日8.1.2定时器/计数器的4种工作方式

8.1.2.1定时工作方式0M1、M0为00,定时器/计数器的框图:

TL计满溢出向TH进位。13位计满溢出时TF1置位。第十七页,共六十四页,2022年,8月28日方式0——13位的计数器C/T*位决定工作模式:

0:开关打在上面,为定时器工作模式;

1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行是取决于TRx一个条件还是TRx和INTx*引脚两个条件。GATE=1TR1=1时由/INT1信号控制计数脉冲的接通或断开。常用于测量外部输入信号的脉冲宽度。第十八页,共六十四页,2022年,8月28日

8.1.2.2方式1

M1、M0=01,16位的计数器。TL计满溢出向TH进位。16位计满溢出时TF1置位。第十九页,共六十四页,2022年,8月28日

在方式0和方式1中,计数计满溢出后,使其值为0。在循环定时或计数应用中,必须反复预置计数初值,不仅会影响定时精度,而且给程序设计带来不便。第二十页,共六十四页,2022年,8月28日THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标志TFx的同时,还自动的将THx中的初值送至TLx,使TLx从初值开始重新计数。M1、M0=10,等效框图如下:8.1.2.3方式2

计数满后自动装入计数初值。第二十一页,共六十四页,2022年,8月28日

省去用户软件中重装初值的程序,精确的定时。

定时器作串口波特率发生器时,常选用定时方式2。定时器/计数器的方式2工作过程如图(X=0,1)。

初始化时,将初值分别付给THx和TLx。第二十二页,共六十四页,2022年,8月28日(2)T1工作在方式1

(3)T1工作在方式2

0~7第二十三页,共六十四页,2022年,8月28日第二十四页,共六十四页,2022年,8月28日

回顾1.T0/T1有哪几种工作模式?

2.方式1、2各有什么突出特点?

3.T0/T1的计数信号来源于何处?

4.对外部信号计数时的最高允许频率为多少?

5.如何启动T0/T1定时或计数?

6.TF0、TF1在什么情况下会自动置1?何时

会自动清零?

7.相关的SFR有哪几个?第二十五页,共六十四页,2022年,8月28日4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。8.1.3定时器/计数器的编程和应用第二十六页,共六十四页,2022年,8月28日8.1.3.1计算初值的计算1、定时方式下的计数初值定时时间

或者第二十七页,共六十四页,2022年,8月28日计数初值:方式0:n=13方式1:n=16方式2:n=8第二十八页,共六十四页,2022年,8月28日计数方式下的计数初值在计数方式下,可分为两种情况:1、已知计数脉冲的个数C2、未知计数脉冲的个数C第二十九页,共六十四页,2022年,8月28日定时/计数器初始化基本步骤

1)根据定时时间或计数要求,确定计数初值

2)确定工作方式,写控制字到TMOD3)预置定时或者计数的初值x4)根据需求开放定时器/计数器的中断

5)启动定时器/计数器

8.1.3.2初始化编程第三十页,共六十四页,2022年,8月28日

8.1.3.3应用举例1、方式1应用

例:假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。

第三十一页,共六十四页,2022年,8月28日

方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应中断后,在中断服务程序中对P1.0取反。

(1)计算初值X

设初值为X,则有: (216-X)×2×10-6=1×10-3216-X=500X=65036X化为16进制,即。所以,T0的初值为:TH0=0FEHTL0=0CH

(2)初始化程序设计

第三十二页,共六十四页,2022年,8月28日中断服务程序主程序第三十三页,共六十四页,2022年,8月28日

对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。(3)程序设计

中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。参考程序:

ORG0000HRESET:AJMPMAIN;转主程序

ORG000BH;T0的中断入口

AJMPIT0P ;转T0中断处理程序IT0P

ORG0100HMAIN:MOVSP,#60H;设堆栈指针

MOVTMOD,#01H ;设置T0为方式1

第三十四页,共六十四页,2022年,8月28日

ACALLPT0M0 ;调用子程序PT0M0HERE:AJMPHERE ;自身跳转PT0M0:MOVTL0,#0CH ;

MOVTH0,#0FEHSETBTR0 ;启动T0SETBET0 ;允许T0中断

SETBEA;CPU开中断

RETITOP:MOVTL0,#0CH;T0中断服务子程序,T0置初值

MOVTH0,#0FEHCPLP1.0;P1.0的状态取反

RETI第三十五页,共六十四页,2022年,8月28日

查询方式的参考程序:

MOVTMOD,#01H;设置T0为方式1

SETBTR0;接通T0LOOP:MOVTH0,#0FEH;T0置初值

MOVTL0,#0CHLOOP1:JNBTF0,LOOP1;查询TF0标志 CLRTF0;T0溢出,清TF0 CPLP1.0;P1.0的状态求反

SJMPLOOP第三十六页,共六十四页,2022年,8月28日第三十七页,共六十四页,2022年,8月28日例假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。(1)T0工作方式的确定定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:

方式0最长可定时16.384ms;

方式1最长可定时131.072ms;

方式2最长可定时512s。选方式1,每隔100ms中断一次,中断10次为1s第三十八页,共六十四页,2022年,8月28日(2)计算计数初值因为:(216-X)×2×10-6=10-1

所以:X=15536=3CB0H

因此:TH0=3CH,TL0=0B0H(3)10次计数的实现采用循环程序法。(4)程序设计参考程序:

第三十九页,共六十四页,2022年,8月28日

ORG0000HRESET:LJMPMAIN ;上电,转主程序入口MAIN

ORG000BH

;T0的中断入口

LJMPIT0P ;转T0中断处理程序IT0P

ORG1000H

MAIN:MOVSP,#60H ;设堆栈指针

MOVB,#0AH;设循环次数10次

MOVTMOD,#01H;设T0工作在方式1

MOVTL0,#0B0H;给T0设初值

MOVTH0,#3CH

第四十页,共六十四页,2022年,8月28日

SETBTR0 ;启动T0SETBET0;允许T0中断

SETBEA;CPU开放中断

HERE:SJMPHERE;等待中断

ITOP:MOVTL0,#0B0H;T0中断子程序,重装初值

MOVTH0,#3CH;

DJNZB,LOOPCLRTR0;1s定时时间到,停止T0工作

LOOP:RETI第四十一页,共六十四页,2022年,8月28日2、方式2的应用

省去程序中重装初值的指令,并可产生相当精确的定时时间。

例当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz)

第四十二页,共六十四页,2022年,8月28日(1)工作方式选择

T0为方式1计数,初值0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。在进入T0中断程序后,把F0标志置“1”,说明T0脚已接收了负跳变信号。

T1定义为方式2定时。在T0脚发生一次负跳变后,第四十三页,共六十四页,2022年,8月28日

启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。(2)计算T1初值设T1的初值为X:则(28-X)×2×10-6=5×10-4X=28-250=6=06H(3)程序设计

ORG0000HRESET:LJMPMAIN;复位入口转主程序

ORG000BH JMPIT0P ;转T0中断服务程序第四十四页,共六十四页,2022年,8月28日

ORG001BHLJMPIT1P ;转T1中断服务程序

ORG0100HMAIN:MOVSP,#60HACALLPT0M2 ;调用对T0,T1初始化子程序LOOP:MOVC,F0 ;T0产生过中断了吗,产生过 ;中断,则F0=1JNCLOOP ; ;T0没有产生过中断,则跳到 ;LOOP,等待T0中断

SETBTR1 ;启动T1SETBET1 ;允许T1中断HERE:AJMPHERE第四十五页,共六十四页,2022年,8月28日

PT0M2:MOVTMOD,#25H ;初始化,T1为方式2定 ;时,T0为方式1计数

MOVTL0,#0FFH ;T0置初值

MOVTH0,#0FFHSETBTR0 ;启动T0SETBET0 ;允许T0中断

MOVTL1,#06H ;T1置初值

MOVTH1,#06HCLRF0 ;把T0已发生中断标志F0清0SETBEA RET第四十六页,共六十四页,2022年,8月28日IT0P:CLRTR0;T0中断服务程序,停止T0计数

SETBF0;建立产生中断标志

RETIIT1P:CPLP1.0;T1中断服务,P1.0位取反

RETI

在T1定时中断服务程序IT1P中,省去了T1中断服务程序中重新装入初值06H的指令。第四十七页,共六十四页,2022年,8月28日

例利用T1的方式2对外部信号计数,要求每计满100个数,将P1.0取反。

本例是方式2计数模式的应用。(1)选择工作方式

外部信号由T1(P3.5)脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器产生溢出中断,在中断服务程序中将P1.0取反一次。

T1方式2的控制字为TMOD=60H。不使用T0时,TMOD的低4位可任取,但不能使T0进入方式3,这里取全0。(2)计算T1的初值

X=28-100=156=9CH

因此,TL1的初值为9CH,重装初值寄存器TH1=9CH第四十八页,共六十四页,2022年,8月28日(3)程序设计

ORG0000H LJMPMAIN

ORG001BH ;T1中断服务程序入口

CPLP1.0 ;P1.0位取反

RETI

ORG0100HMAIN: MOVTMOD,#60H;设T1为方式2计数

MOVTL0,#9CH;T0置初值

MOVTH0,#9CH SETBTR1;启动T1SETBET1SETBEAHERE: AJMPHERE第四十九页,共六十四页,2022年,8月28日第五十页,共六十四页,2022年,8月28日第五十一页,共六十四页,2022年,8月28日第五十二页,共六十四页,2022年,8月28日第五十三页,共六十四页,2022年,8月28日5、门控制位GATE的应用—测量脉冲宽度

GATEx可使定时器/计数器Tx的启动计数受/INTx的控制,可测量引脚/INTx(P3.2P3.3)上正脉冲的宽度(机器周期数)。第五十四页,共六十四页,2022年,8月28日待测脉冲信号接与哪个引脚?(/INT0引脚、

T0引脚)设定T0为定时方式还是计数方式?几位?设初值TH0、TL0为多少?

何时置位TR0?何时读取结果TH0、TL0?若TH0、TL0发生溢出应如何处理?如何测量负脉冲宽度?测量精度与什么有关?第五十五页,共六十四页,2022年,8月28日参考程序:

ORG0000HRESET:AJMPMAIN;复位入口转主程序

ORG0100HMAIN:MOVSP,#60HMOVTMOD,#90H;T1为方式1定时控制字

MOVTL1,#00HMOVTH1,#00HCLREILOOP0:JBP3.3,LOOP0 ;/INT1高,则循环

SETBTR1 ;如/INT1为低,启动T1LOOP1:JNBP3.3,LOOP1 ;等待/INT1变高,开始计数LOOP2:JBP3.3,LOOP2 ;/INT1高,计数第五十六页,共六十四页,2022年,8月28日

CLRTR1 ;停止T1计数

MOVA,TL1 ;T1计数值送A

将A中的T1计数 值送显示缓冲区

转换成显示的代码

LOOP3:LCALLDIR ;调用显示子程序DIR ;显示T1计数值

AJMPLOOP3 ;执行程序,使/INT1引脚上出现的正脉冲宽度以机器周期数的形式显示在显示器上。第五十七页,共六十四页,2022年,8月28日信号频率的测量基本原理:定时1s,记录脉冲个数。1.待测频率信号接与哪个引脚?(T0引脚、!INT0引脚)2.设定T0为定时方式还是计数方式?几位?3.设初值TH0、TL0为多少?4.何时置位TR0?何时读取结果TH0、TL0?5.若TH0、TL0发生溢出应如何处理?第五十八页,共六十四页,2022年,8月28日8.1.3.4定时器/计数器在应用中应注意的两个问题1、运行中读定时器/计数器在读取运行中的定时器/计数器时,需注意:若恰好出现TLX溢出向TH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论