07_定时器计数器.ppt_第1页
07_定时器计数器.ppt_第2页
07_定时器计数器.ppt_第3页
07_定时器计数器.ppt_第4页
07_定时器计数器.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、1,MCS51的定时/计数器,2,定时器/计数器的应用场合 定时或延时控制、对外部事件的检测、计数等;,3,1计数 生产线上产品计数。每个产品通过得到一个脉冲信号,计数器记录脉冲个数,当计数值与设定值相等,启动包装机器。 检测转速。电机转动一圈发出一个脉冲,计数器记录一秒时间内脉冲个数,显示转速。 2定时 交通灯控制。 用于实时控制,定时采样、定时启动等。当定时时间与设定值相等,执行规定操作。,4,定时方法概述 软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加CPU开销。 硬件定时:通过硬件电路实现定时,不占CPU时间,但使用不够方便。 可编程定时器定时:通过对系统

2、时钟脉冲的计数实现定时。计数值通过程序设定,定时准确,使用方便灵活。,5,通用定时/计数器(CTC) 定时/计数器中的核心部件为可预置初值计数器。预置初值后开始计数,直至计数值归0或产生溢出,可申请中断。 计数器有加 1 计数或减1计数两种形式。,6,例:设CTC中为8位加1计数器。按要求选择功能(定时或计数)和初值。 1.要求检测到100个脉冲,发中断请求,通知CPU。 选计数功能,计数初值为156 。 2.要求定时每隔200s时间,发一次中断请求。设内部时钟周期1s 选定时功能,计数初值为56 。,7,51定时/计数器,组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和

3、控制寄存器TCON等组成。内部通过总线与CPU相连。 定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。 工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式; 控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态; 单片机复位时,两个寄存器的所有位都被清0。,8051定时器内部结构示意,8,51定时/计数器,两种工作模式: (1) 计数器工作模式 (2) 定时器工作模式 4种工作方式 (方式0-方式3) 。,8051定时器内部结构示意,9,定时器/计数器的核心:T0,T1 两个定时/计数器具有独立的定时/计数功能 计数器为16位寄存器,加法计数

4、,地址为: T0(TH0,TL0):8CH,8AH T1(TH1,TL1):8DH,8BH,10,计数器的触发源 定时方式,51典型的指令周期(执行一条指令的时间)为一个机器周期。一个机器周期是振荡周期的12倍。定时计数的速率是振荡频率的1/12。 主频为12MHz,机器周期为1us,即在12M晶振下,每1us定时寄存器完成加1操作。,11,计数器的触发源 计数方式,计数脉冲来源?,12,计数器的触发源 计数方式,计数脉冲来源于T0(P3.4)、T1(P3.5)口。当检测到输入引脚的电平由高跳变到低,计数器加1。 采样(S5P2)、加1(S3P1)操作。发生在两个机器周期。需要两个机器周期才能

5、识别一个从“1”到“0”的跳变。,13,计数器的触发源 计数方式,计数器对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。 输入信号的高、低电平至少要分别保持一个机器周期。,14,工作方式控制寄存器TMOD(状态寄存器) 字节地址 89H(不可位寻址),1)功能选择位C/T =0,定时功能,计数内部机器周期脉冲; =1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0:4种工作方式:13/16/8位,15,工作方式控制寄存器TMOD(状态寄存器) 字节地址 89H(不可位寻址),3)门控方式选

6、择位GATE : =0,非门控方式(内部启动): TRx=1,启动定时器工作; TRx=0,停止定时器工作。 =1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。,16,启停与中断控制寄存器TCON 字节地址:88H 位地址:88H-8FH,1)启动控制位TR0、TR1 =0,停止定时器工作 =1,启动定时器工作 例:启动T0:SETBTR0,17,启停与中断控制寄存器TCON 字节地址:88H 位地址:88H-8FH,2)溢出中断标志位TF0、TF1 定时器溢出使TFx=1,引起中断请求,CPU响应Tx中断后,自动清零 TFx。 可用软件检测TFx,必须软件清0。 WAIT:JB

7、C TF0,NEXT;检测T0是否溢出 SJMPWAIT ;未溢出,继续检测 NEXT: ;溢出,TF0清0,处理溢出,18,MCS-51的定时器T0有4种工作方式: 即:方式0,方式1,方式2,方式3。 MCS-51的定时器T1有3种工作方式: 即:方式0,方式1,方式2。,定时器的工作方式,19,定时/计数方式0(13位计数器) 以定时/计数器1为例 TH1全部8位,TL1低5位构成13位定时/计数器。 C/T0时,开关接至振荡12分频输出; C/T1时,开关接通T0(P3.4),当计数脉冲发生负跳变计数器加1。,计数脉冲输入,加1计数器,20,定时/计数方式1(16位计数器) 逻辑结构和

8、方式0完全一样,只是TL是8位计数器。 计数范围165536,21,定时/计数方式2(自动再装入8位计数器) THx,TLx相互独立(x0,1) TLx作为8位计数器,THx是初值寄存器。TLx溢出后,置TFx申请中断,THx的初值重新装入TLx。只需要通过软件设置一次,启动后无限次定时/计数运行。(自动进行下一次),22,优点: 方式0和方式1用于循环重复定时或计数时,在每次计数器挤满溢出后,计数器复0。若要进行新一轮的计数,就得重新装入计数初值。这样一来不仅造成编程麻烦,而且影响定时精度。而方式2具有初值自动装入的功能,避免了这个缺点,可实现精确的定时。 缺点: 只有8位计数器,定时时间短

9、、计数范围小。其定时时间为: (28-初值)振荡周期12 若晶振频率为12MHz,则最长的定时时间为 (28-0)(1/12)12us=0.256ms,方式2工作过程图 (x=0, 1) 。,定时/计数方式2(自动再装入8位计数器),23,定时/计数方式3 (T0分成两个8位计数器,T1无效),将T0分成两个独立的8位计数器。 TL0组成完整的8位定时/计数器;既能定时,又能计数。 占用T0全部控制信号及中断请求标志位(TR0、TF0等) TH0只组成8位定时器(内部脉冲)。只能定时。借用TR1和TF1。P3.5口(T1外部计数脉冲输入口)不能占用。 此时T1可以用于串口波特率发生器。,24,

10、定时器的编程和应用 基本步骤: 工作方式控制字(TMOD)的设置; 计数初值的计算并装入THx、TLx; 中断允许位Etx、EA的设置,使主机开放中断; 启/停位 TRx的设置。,25,定时器初始化 1.功能选择(定时/计数) 2.位数选择(8/13/16位) 3.启动方式选择(内部启动/外部启动) 4.启动控制(启动/停止) 5.恢复初值方式(自动重装/软件重装),26,计数初值的计算,在方式0下,当计数方式时,计数值范围1-8192 在方式1下,当计数方式时,计数值范围1-65536 在方式2下,当计数方式,计数值范围1-256,定时方式时, 定时时间= (2n-计数初值)机器周期; 机器

11、周期=12晶振周期 计数初值=2n-定时时间/机器周期 计数功能:X= 2n -计数值n:8/13/16 定时功能:X= 2n - t/T t:定时时间、T:机器周期,27,MCS-51定时器的编程 定时器初始化编程:使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式 初始化编程格式:,MOV TMOD,# 方式字;选择方式 MOV THx,#XH;装入Tx时间常数 MOV TLx,#XL (SETB EA) ;开Tx中断 (SETB ETx) SETB TRx ;启动Tx定时器 1. 按实际需要选择定时/计数功能 2. 按时间或计数长度选择方式 3. 计算时间常数,28,溢出处理编程

12、(查询和中断),1)查询方式:先查询定时器溢出标志,再进行溢出处理。 ;定时器初始化 WAIT:JBC TFx,PT ;检测溢出标志 SJMP WAIT PT:MOVTHx,#XH ;重装时间常数 MOVTLx,#XL ;溢出处理 SJMPWAIT,29,2)中断方式:初始化后执行其他任务,中断服务程序处理溢出。 ORG0000H LJMPMAIN ORG000BH(001BH);Tx中断入口 LJMPPTS MAIN:;初始化后执行其他程序 PTS:;溢出中断服务程序 MOVTHx,#XH;重装时间常数 MOVTLx,#XL RETI,30,四. 应用举例,例1:由P1.0输出方波信号,周期

13、为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。 计算时间常数:X = 216 - t/T = 216 -1000/1 = FC18H,(1)查询方式: START:MOVTMOD, MOVTL0, MOVTH0, SETBTR0 LOOP:JBC,PTF0 SJMPLOOP PTF0: CPLP1.0 CLR MOVTL0, MOVTH0, SJMPLOOP,31,四. 应用举例,例1:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。 计算时间常数:X =

14、216 - t/T = 216 -1000/1 = FC18H,(1)查询方式: START:MOVTMOD,#01H MOVTL0,#18H MOVTH0,#FCH SETBTR0 LOOP:JBCTF0,PTF0 SJMPLOOP PTF0: CPLP1.0 CLR TF0 MOVTL0,#18H MOVTH0,#FCH SJMPLOOP,32,(2)中断方式,ORG0000H AJMPMAIN ORG AJMP ORG0100H MAIN:MOVSP,#60H MOVTMOD,#01H MOVTL0,#18H MOVTH0,#FCH SETB SETB SETB HERE:SJMPHER

15、E PT0INT:CPLP1.0 MOVTL0,#18H MOVTH0,#FCH RETI,33,(2)中断方式,ORG0000H AJMPMAIN ORG000BH AJMP PT0INT ORG0100H MAIN:MOVSP,#60H MOVTMOD,#01H MOVTL0,#18H MOVTH0,#0FCH SETBEA SETBET0 SETBTR0 HERE:SJMPHERE PT0INT:CPLP1.0 MOVTL0,#18H MOVTH0,#0FCH RETI,34,例2:P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。,长定时方法:增加一个软件计数器或一个硬件计数

16、器。,硬件方式: T0定时,T1计数T0的定时跳变信号P1.0的负跳变次数,计满5个跳变为1秒。,START:MOV TMOD,#61H MOV TL1,#0FBH MOV TH1,#0FBH CLR P1.0 SETB TR1 LOOP1:CPL P1.7 LOOP2 :MOV TL0,#0B0H MOV TH0,#3CH SETBTR0 LOOP3:JBCTF0,LOOP4 SJMPLOOP3 LOOP4:CPLP1.0 JBCTF1,LOOP1 SJMPLOOP2,35,例3:定时器外部引脚T0(T1)用作外部中断信号输入端。,外部负脉冲引起中断请求,选计数方式,时间常数为FFH。,例4:门控方式测量正脉冲宽度 解: INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。 1)设脉宽小于65.5ms 等待查询INT0,正脉冲过后,读出TH1TL1。,START:MOV TMOD,#90H MOV TL1,#0H MOV TH1,#0H WAIT1:JBP3.3,WAIT1 SETB TR1 WAIT2 :JNBP3.3,WAIT2 WAIT3 : JBP3.3,WAIT3 CLRTR1 MOVR2,TL1 MOVR3,TH1 ,36,2)设脉宽大于65.5ms,中断方式记录TH1T

温馨提示

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

评论

0/150

提交评论