第6章-定时器-计数器1总_第1页
第6章-定时器-计数器1总_第2页
第6章-定时器-计数器1总_第3页
第6章-定时器-计数器1总_第4页
第6章-定时器-计数器1总_第5页
免费预览已结束,剩余29页可下载查看

付费下载

下载本文档

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

文档简介

第6章定时器/计数器T0和T1的电路结构和工作原理基本相同Ti的工作原理简要概括:核心部分是一个由时钟信号触发的按递增规律工作的循环计数器;从预先设定的某一“初始值”开始计起,在累积到超过最大值时产生溢出,并同时会建立一个相应的溢出标志(即中断标志位)TFi。6.1定时器/计数器T0和T1的特性

定时器/计数器的核心:一个加1计数器,其基本功能是加1计数。计数功能:若是对单片机的T0、T1引脚输入信号进行计数,即是计数功能。当外部输入信号由1至0跳变时,计数器加1。定时功能:若是对单片机内部的机器周期进行计数,从而得到定时,这就是定时功能。每个机器周期(等于12个晶体振荡周期)计数器加1。定时功能和计数功能的设定和控制都是通过软件来设定的。6.1定时器/计数器T0和T1的特性

具有以下特性:具有2种功能模式可供选择具有4种工作方式可供选择核心是一个16位宽的循环累加计数寄存器计数寄存器在SFR内统一编址用软件方式可以随时直接读出或改写计数寄存器的内容用软件方式可以随时控制累加计数的开启和停止6.1定时器/计数器T0和T1的特性

具有以下特性:也可以用外接引脚信号控制累加计数过程的开启或停止计数寄存器计满溢出时,产生中断标志位T1可用作异步串行接口UART的波特率发生器通过巧妙编程,还可用来实现输入捕捉、输出比较、脉宽调制等扩展功能。5.1定时器/计数器T0和T1的特性

5.3定时器/计数器电路结构T0、T1的内部结构框图5.1定时器的结构及工作原理定时/计数器对输入信号的要求外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。输入信号的高、低电平至少要分别保持一个机器周期。 如图所示,图中Tcy为机器周期。与T0和T1模块有关的SFR共有8个定时器控制寄存器TCON定时器方式寄存器TMOD中断允许寄存器IE中断优先权管理寄存器IP累加计数器存器TH0+TL0、TH1+TL15.2T0和T1相关的寄存器

方式寄存器TMOD

GATE=1,T0、T1的启动由INTi引脚和TRi位共同控制。只有INTi为高电平时,TRi置“1”才能启动定时器/计数器。GATE=0,T0、T1由软件设置TRi来控制启动。TRi=1,启动;TRi=0,停止。定时器/计数器的工作方式

TMOD用于控制T0和T1工作方式,低4位用于控制T0,高4位用于控制T1。M1M0:工作方式控制位,对应4种工作方式。C/T:定时器/计数器功能方式选择位。控制寄存器TCON

控制寄存器TCON

TCON用于控制定时器/计数器的启、停、溢出标志和外部中断信号触发方式。TFi:T0、T1溢出位。当计数溢出时,由硬件自动使TFi置1,并向CPU申请中断。进入中断服务程序后,TFi又被硬件自动清0。TFi也可作为程序查询的标志位,在查询方式下由软件清0。TRi:T0、T1运行控制位。TRi=1启动计数,TRi=0,停止工作。5.4定时器/计数器的工作方式及应用每一种工作方式对应最大计数值:

方式0 13位计数器213=8192

方式1 16位计数器 216=65536

方式2 8位计数器 28=256

方式3 8位计数器 28=256T0优于T1的方面:多一种工作方式T1优于T0的方面:可以作为串口的波特率发生器MCS-51的定时器T0有4种工作方式: 即:方式0,方式1,方式2,方式3。MCS-51的定时器T1有3种工作方式: 即:方式0,方式1,方式2。5.3定时器的工作方式5.3.2方式1

M1、M0=01,为16位的计数器,除位数外,其他与方式0相同。其定时时间为:

(216-初值)×振荡周期×12

例如:若晶振频率为12MHz,则最长的定时时间为

(216-0)×(1/12)×12us=65.536ms5.3定时器的工作方式——方式15.3.3方式2

M1、M0=10,为自动恢复初值的8位计数器,等效框图如下:TLx作为8位计数器,THx作为重置初值的缓冲器。5.3定时器的工作方式——方式2

THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标志TFx的同时,还自动的将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器的方式2工作过程如图(x=0,1)。优点:

方式0和方式1用于循环重复定时或计数时,在每次计数器挤满溢出后,计数器复0。若要进行新一轮的计数,就得重新装入计数初值。这样一来不仅造成编程麻烦,而且影响定时精度。而方式2具有初值自动装入的功能,避免了这个缺点,可实现精确的定时。缺点: 只有8位计数器,定时时间短、计数范围小。其定时时间为:

(28-初值)×振荡周期×12若晶振频率为12MHz,则最长的定时时间为(28-0)×(1/12)×12us=0.256ms5.3定时器的工作方式——方式2方式2工作过程图

(x=0,1)。5.3.4方式3

只适用于定时器/计数器T0。T1不能工作在方式3。 如果将T1置为方式3,则相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1.工作方式3下的T0

T0在方式3时被拆成两个独立的8位计数器:TH0和TL0。

8位计数器TL0使用T0的状态控制位C/T*、GATE、TR0、INT0,它既可以工作在定时方式,也可以工作在计数方式。8位定时器TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的中断请求源TF1。此时,定时器TH0的启动或停止只受TR1控制。

TR1=1时,启动TH0的计数;TR1=0时,停止TH0的计数5.3定时器的工作方式——方式32.T0工作在方式3下T1的各种工作方式注意:当T0处于方式3时,T1仍可设置为方式0、方式1和方式2。当时由于TR1、TF1和T1的中断源都已被定时器T0(中的TH0)占用,所以定时器T1仅有控制位C/T来决定其工作在定时方式或计数方式。当计数器计满溢出时,不能置位“TF1”,而只能将输出送往串口。所以,此时定时器T1一般用作串口的波特率发生器,或不需要中断的场合。

(1)T1工作在方式05.3定时器的工作方式第5章定时器/计数器及其应用5.4定时器的编程和应用5.4定时器的编程和应用编程说明MCS-51单片机的定时器是可编程的,但在进行定时或计数之前要对程序进行初始化,具体步骤如下:(1)确定工作方式字:对TMOD寄存器正确赋值;(2)确定定时初值:计算初值,直接将初值写入寄存器的TH0、TL0或TH1、TL1; 初值计算:设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0M为213,模式1M为216,模式2和3M为28)(3)根据需要,对IE置初值,开放定时器中断;(4)启动定时/计数器,对TCON寄存器中的TR0或TR1置位,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。定时初值:

对机器周期进行计数。T:定时时间,X:初值,N:计数器位数,fosc:系统时钟频率,则:(2N-X)×12/fosc=TX=2N-fosc/12×T计数初值:

对外部脉冲进行计数,计数值根据要求确定。N:计数器位数,X:初值,则:

X=2N-计数值5.4定时器的编程和应用

例5-1

要在P1.0上输出一个周期为2ms的方波,假设系统振荡频率采用12MHz。

利用T0方式0产生1ms的定时

方波的周期用T0来确定,让T0每隔1ms计数溢出1次,即TF0=1;查询到TF0=1则CPU对P1.0取反。即要使P1.0每隔1ms取反一次。5.4定时器/计数器的工作方式及应用每一种工作方式对应最大计数值:

方式0 13位计数器213=8192

方式1 16位计数器 216=65536

方式2 8位计数器 28=256

方式3 8位计数器 28=256T0优于T1的方面:多一种工作方式T1优于T0的方面:可以作为串口的波特率发生器5.4定时器的编程和应用第一步:确定工作方式字 方式0(13位)最长可定时8.192ms;

方式1(16位)最长可定时65.536ms;

方式2(8位)最长可定时256s。T0为方式0,M1M0=00定时工作状态,C/T=0GATE=0,不受INT0控制,T1不用全部取“0”值。故TMOD=00H5.4定时器的编程和应用第二步:计算1ms定时的初值X

设初值为X,则有: (213-X)×12×10-6×1/12=1×10-3

可求得:X=8192-1000=7192 X化为16进制,即X=1C18H=1,1100,000

1,1000B。 所以,T0的初值为:

TH0=E0HTL0=18HTH011100000TL0×

×

×

11000第三步:程序设计

采用查询TF0的状态来控制P1.0的输出,同时要重新装入初值。5.4定时器的编程和应用

参考程序:

ORG 0100HMAIN: MOV TMOD,#00H ;设置T0为方式0 MOV TL0, #18H ;送计数初值

MOV TH0, #0E0H ;送计数初值

SETB TR0 ;启动T0LOOP: JBC TF0, NEXT;查询定时时间到,转NEXT,同时清TF0

SJMP LOOP ;重复循环NEXT:

MOV TL0,#18H

;T0重置初值

MOV TH0,#0E0H;T0重置初值

CPL P1.0

;P1.0的状态取反

SJMP LOOP ;重复循环

END改为中断方式(程序现编)ORG0000HLJMPmainORG000BHLJMPNEXTORG 0100HMAIN: MOV TMOD,#00H ;设置T0为方式0 MOV TL0, #18H ;送计数初值

MOV TH0, #0E0H ;送计数初值

SETBET0SETBEA SETB TR0 ;启动T0SJMP$NEXT:

MOV TL0,#18H

;T0重置初值

MOV TH0,#0E0H;T0重置初值

CPL P1.0

;P1.0的状态取反

RETI ;重复循环

ENDGATE门可使定时器Tx(T0或T1)的启动计数受INTx*的控制,可测量引脚INTx*(P3.2或P3.3)上正脉冲的宽度(机器周期数)。以T1为例:门控制位GATE的应用—测量脉冲宽度回顾当GATE=1时,K=TRx·INTxK利用GATE测试外部输入脉冲宽度

GATE=0时,定时器的启动只受TRi位控制。GATE=1时,定时器的启动将受TRi位和外部中断信号INTi的共同控制。只有当INTi=1,同时TRi=1时才能启动计数;INTi=0时停止计数。换一个角度看,当GATE=1时,定时器实际记录的时间就是相应INTi引脚上高电平的持续时间。通过反相器,则可测得相应INTi引脚上低电平的持续时间。二个时间的和即为INTi引脚上输入波形的周期,其倒数即为INTi引脚上输入波形的频率。还可算出占空比等参数。测试原理:以T0为例

GATE=1TR0=1例5-4利用T1门控位GATE测试INT1*(P3.3)引脚上出现的

温馨提示

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

评论

0/150

提交评论