资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
.,1,定时/计数器,.,2,定时方法概述 定时计数器结构和工作原理 定时计数器的控制寄存器 定时器的四种工作方式 定时器的应用,.,3,一、定时方法概述,软件定时:软件定时靠执行一个循环程序以进行时间延迟。特点是时间精确,且不需要外加硬件电路。但软件定时要占用CPU开销,因此软件定时的时间不宜太长。 采用时基电路定时:特点是(定时功能全部由硬件电路完成)不占CPU时间,但需通过改变电路的元件参数来调节定时时间,在使用上不够灵活方便。 采用可编程芯片定时:这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活有方便。,结论:MCS-51单片机把定时电路集成在芯片中,称之为定时器/计数器。 8051型单片机有两个定时/计数器,分别称为定时器/计数器0和定时器/计数器1。,.,4,二、定时计数器结构和工作原理,定时器方式寄存器 主要用于设定定时器的工作方式,定时器控制寄存器 主要用于控制定时器的启动与停止,并保存T0、T1的溢出和中断标志,定时器0,定时器1,.,5,定时/计数器的结构框图,16位的定时器/计数器实质上是一个加l计数器,可实现定时和计数两种功能,其功能由软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。,.,6,定时器/计数器的定时功能。 计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出。 定时器的定时时间与系统的时钟频率有关。因一个机器周期等于12个时钟周期,所以计数频率应为系统时钟频率的十二分之一。如果晶振频率为12MHz,则机器周期为1s。通过改变定时器的定时初值,并适当选择定时器的长度(8位、13位或16位),可以调整定时时间。,.,7,定时器/计数器的计数功能。 通过外部计数输入引脚T0(P3.4)和T1(P3.5)对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平,若一个机器周期S5P2期间采样值为1,下一个机器周期S5P2期间采样值为0,则计数器加1,再下一个机器周期S3P1期间,新的计数值装入计数器。 因检测一个由1至0的跳变需要两个机器周期,故外部信号的最高计数频率为时钟频率的二十四分之一。如果晶振频率为12MHz,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。,.,8,1、工作方式寄存器TMOD,M0,M1,C/T0,GATE0,M0,M1,C/ T1,GATE1,TMOD,字节 地址 89H,D7 D6 D5 D4 D3 D2 D1 D0,方式选择,00:方式0,01:方式1,10:方式2,11:方式3,定时/计数选择,0:定时器,1:计数器,门控位,三、定时计数器的控制寄存器,.,9,GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响。 GATE=0时,与外部中断无关, 由TCON寄存器中的TRx位控制启动。 GATE=1时,由控制位TRx和引脚 共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚 =1时),才允许定时器启动。,.,10,2、定时控制寄存器(TCON),当定时器1计满溢出时,由硬件自动使TF0置1,并申请中断。对该标志位有两种处理方法,一种是以中断方式工作,即TF0置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF0清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF0置1后必须用软件使TF0清0。,GATE=0时,用软件使TR0置1即启动定时器1,若用软件使TR0清0则停止定时器1。 GATE=1时,用软件使TR1置1的同时外部中断INT0的引脚输入高电平才能启动定时器0。,.,11,3、中断允许控制寄存器,EX0,ET0,EX1,ET1,ES,ET2,EA,IE,字节 地址 A8H,D7 D6 D5 D4 D3 D2 D1 D0,定时/计数器1中断允许控制位,定时/计数器0中断允许控制位,0:允许中断,1:禁止中断响应,中断允许总控制位,.,12,4、中断优先级寄存器IP(字节地址B8H),.,13,四、定时计数器的四种工作方式,定时器T0、T1的工作方式,.,14,1、工作方式0(13位计数器),TR1=1,启动计数,GATE0=0时:,GATE0=1时:,启动计数,启停控制,定时计数选择,13位计数器,.,15,计数工作方式: 最大的计数值为8192(213) 预置的初值:X= 213-N,定时工作方式:定时时间的计算公式为: T=(213计数初值)晶振周期12,?如晶振频率为6MHZ/12MHZ,求最小定时时间和最小定时时间,机器周期,预置的初值:,.,16,【例】 单片机晶振频率为12MHz,若产生1ms定时,采用方式0,试计算初值X。,X=1110000000011000B=E018H 所以(TH)=E0H,(TL)=18H。,解:预置的初值:,.,17,2、工作方式1(16位计数器),16位计数器,.,18,计数工作方式: 最大的计数值为65536(216) 预置的初值:X= 216-N,定时工作方式:定时时间的计算公式为: T=(216计数初值)晶振周期12,?如晶振频率为6MHZ/12MHZ,求最小定时时间和最小定时时间,预置的初值:X= 216-T/(晶振周期12),.,19,【例】 单片机晶振频率为12MHz,若产生1ms定时,采用方式1,试计算初值X。,所以(TH)=FCH,(TL)=18H。,解:预置的初值:,.,20,【例】已知晶振频率fosc=12MHz,使用定时器0以工作方式1,在P1.0输出周期为2ms的连续正方波脉冲。试编写相关程序。,解:计算初值:TH0=FC H,TL0=18 H。 ORG 0000H LJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ;转向中断服务程序 ORG 0100H MAIN:MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;置T0工作于方式1 /初始化TMOD MOV TH0,#0FCH ;装入计数初值 /装入初值 MOV TL0,#018H SETB ET0 ;T0开中断 /中断设置 SETB EA ;CPU开中断 SETB TR0 ;启动T0 /启动定时器 SJMP $ ;等待中断 DVT0:CPL P1.0 ;P1.0取反输出 MOV TH0,#0FCH ;重新装入计数值 MOV TL0,#018H RETI ;中断返回 END,.,21,查询方式:,ORG 0000H LJMP MAIN ;跳转到主程序 ORG 0100H MAIN:MOV TMOD,#01H ;置T0工作于方式1 /初始化TMOD LOOP: MOV TH0,#0FCH ;装入计数初值 /装入初值 MOV TL0,#018H SETB TR0 ;启动T0 /启动定时器 JNB TF0,$ ;查询TF0标志,如为1,说明T0溢出, ;则往下执行 CLR TF0 ;清除TF0中断标志位 CLR TR0 ;T0溢出,关闭定时器 CPL P1.0 ;P1.0状态取反 SJMP LOOP END,.,22,3、工作方式2(自动装载初值的8位计数器),注:适用于需要重复定时或计数的场合。 定时精度比较高,但定时时间较短。,用作定时或计数时的加1计数器,用作赋值(保存初值)。,.,23,例、已知晶振频率fosc=6MHz,要求使用定时器0以工作方式2产生100s定时,在P1.0输出周期为200s的连续正方波脉冲。试编写相关程序。,解:计算初值:,MOV TMOD,#02H ;设置定时器0为工作方式2 MOV TH0,#0CEH ;设置计数初值 MOV,TL0,#0CEH SETB TR0;启动定时 LOOP:JBC TF0,LOOP1;查询计数溢出 AJMP LOOP LOOP1:CPL P1.0;输出方波,初值自动装入 AJMP LOOP,.,24,例6-3 当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz),(1)工作方式选择 T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。在进入T0中断程序后,启动T1。 T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。,.,25,(2)计算T1初值 设T1的初值为X: 则 (28-X)210-6=510-4 X=28-250=6=06H (3)程序设计 ORG 0000H RESET: LJMP MAIN ;复位入口转主程序 ORG 000BH LJMP IT0P ;转T0中断服务程序 ORG 001BH LJMP IT1P ;转T1中断服务程序 ORG 0100H MAIN: MOV SP,#60H ACALL PT0M2 ;调用对T0、T1初始化子程序 LOOP: MOV C,F0 JNC LOOP ;T0没有产生中断,等待T0中断 SETB ET1 ;允许T1中断 SETB TR1 ;启动T1 SJMP $,.,26,PT0M2:MOV TMOD,#25H ;初始化,T1为方式2定时,T0为方式1计数 MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH SETB ET0 ;允许T0中断 MOV TL1,#06H ;T1置初值 MOV TH1,#06H CLR F0 SETB EA ;开中断 SETB TR0 ;启动T0 RET IT0P: CLR TR0 ;T0中断服务程序,停止T0计数 SETB F0 ;建立T0产生中断的标志 RETI IT1P: CPL P1.0 ;T1中断服务,P1.0位取反 RETI END,.,27,4、工作方式3,为什么定时/计数器T1无工作方式3?,两个独立的计数器,注:当T1用作串行口的波特率发生器时,T0才工作在方式3。,TH0被固定为1个独立的8位定时器(无外部计数功能),并使用T1的资源(TR1、TF1),TL0使用T0的资源(TR0、TF0、INT0、GATE、G/T),.,28,例:假设某MCS-51应用系统的两个外中断源已被占用,设置T1工作在方式2,作波特率发生器用。现要求增加一个外部中断源,并控制P1.0引脚输出一个5kHz的方波。设系统时钟为12MHz。,.,29,(1)选择工作方式 TL0为方式3计数,把T0引脚(P3.4)作附加的外中断输入端,TL0初值设为0FFH,当检测到T0引脚电平出现负跳变时,TL0溢出,申请中断,这相当于跳沿触发的外部中断源。 TH0为8位方式3定时,控制P1.0输出5kHz的方波信号。,.,30,(2)初值计算 TL0的初值设为0FFH。 5kHz的方波的周期为200s,TH0的定时时间为100s。TH0初值X计算如下: (28-X)210-6=110-4 X=28
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号