MCS-51的定时器计数器.ppt_第1页
MCS-51的定时器计数器.ppt_第2页
MCS-51的定时器计数器.ppt_第3页
MCS-51的定时器计数器.ppt_第4页
MCS-51的定时器计数器.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用,本章内容,Single Chip Microcomputer,定时器/计数器的结构,定时器/计数器的应用,定时器/计数器的四种工作方式,MCS-51单片机信号引脚简介,P3口线的第二功能,VCC,VSS,XTAL2 XTAL1,RST,P0. 0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7,P1. 0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7,P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0,ALE,P3. 0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7,2、振荡电路:XTAL1、XTAL2,3、复位引脚:RST,4、并行口:P0、P1、P2、P3,7、ALE:地址锁存控制信号,1、电源线:VCC(+5V)、VSS(地),6.1 MCS-51的定时/计数器的结构,由于单片机面向测控系统,故常需提供定时和计数两种功能。分别实现定时、延时、实时时钟和对外部事件进行计数。,一、 定时方法概述,1,软件定时:通过执行循环程序来实现时间延迟,优点:不需外加硬件电路。,缺点:占用CPU的时间。,不宜用于定时时间过长的场合。,2,硬件定时:通过硬件电路实现定时,采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。,采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。,3,利用单片机内部的定时/计数器,通过对系统时钟脉冲的计数实现定时,计数值通过程序设定,特点是定时准确,使用方便灵活。,二、MCS-51单片机的定时/计数器结构,1,16位的加1计数器(核心),分为高8位(TH0)和低8位(TL0 ),2,信号脉冲来源(两个), T0引脚(与P3.4复用)由外部事件提供的计数脉冲(用于计数功能),下降沿有效。,关于下降沿计数:,CPU在每个机器周期的S5P2状态采样T0引脚。 需要两个机器周期来识别一次计数,故最大计 数速率为振荡频率的1/24。,占空比要求:高低电平至少要保持一个机器周期,使其在改变之前至少被采样一次。,单片机内部时钟电路:振荡电路的12分频信号(一 个机器周期信号),用于定时功能。,3,控制部分(TCON、TMOD), 溢出控制:计数满,产生溢出脉冲,置位中断请求标志位TF0(TF1), 工作方式控制:13位、16位、8位,共4种。, 启动与停止控制:分为软件启动和硬件启动,计数来源的切换。,三、定时/计数器的工作原理,三、定时/计数器的工作原理,由系统的时钟振荡器输出脉冲经12分频或T0(T1)引脚输入的外部脉冲作为脉冲源。 每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。,可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。,四、定时/计数器控制与状态寄存器,1,启停与中断控制寄存器TCON ( 字节地址88H),TF0(TF1):计数溢出标志位。当计数器计数溢出 时,该位被硬件置1。, 查询方式:作状态位供查询,需注意查询有效后及时以软件方式清0。,中断方式:作中断标志位,在转向中断服务程序时由硬件自动清0。,TR0(TR1):定时/计数器启动/停止控制位。, 用软件方式置1或清0,TR0(TR1)=1 启动定时/计数器工作,TR0(TR1)=0 停止定时/计数器工作,2,工作方式控制寄存器TMOD(字节地址89H),说明:,TMOD寄存器无位寻址功能。,低四位用于定义T0 ,高四位用于定义T1,对应位的功能相同。,GATE:门控位,GATE=0:以TR0(TR1 )启动定时器,软件启动,TR0(TR1)=1 启动定时/计数器工作,TR0(TR1)=0 停止定时/计数器工作,M1、M0:工作方式选择位,一、方式0,1,逻辑结构(与T1相同),6.2 MCS-51的定时/计数器的工作方式, 计数器由TH0的全部8位和TL0的低5位构成,TL0的高3位未用:,TL0的低5位计满回0溢出(11111+100000)向TH0进位,当13位计数值计满则产生溢出信号,置位TF0。, 最大计数值; M=213=8192,例1,使用定时器0实现5mS的延时,2,应用举例,分析:要使用定时器,首先要进行初始化,1,确定并设置工作方式对TMOD赋值,原则: 计数值最大计数值,2,确定并设置定时器初值直接将初值写入TH0、TL0(或TH1、TL1)。,计算方法:,最大定时时间所需定时时间,初值X = 最大计数值所需计数次数,初值:,开始计数,12M晶振,5000S,X = 81925000 = 3192 = C78H,X=?,8192(溢出),13位计数,8192S,13位特性:,所以初值为:6318H,3,启动定时器,定时器T0 初始化程序:,DELAY5mS:MOV TMOD,#00H,MOV TH0,#63H,MOV TL0,#18H,SETB TR0,SETB ET0,SETB EA,。,例2,在P1.0管脚上输出一个周期为10mS的方波,分析:,方波周期由定时器T0确定,采用中断方式 实现,让T0每隔5mS产生一次中断,CPU 响应中断后,在服务程序中对P1.0取反。,ORG 0000H,AJMP MAIN,ORG 000BH,AJMP IIT0,ORG 0100H,MAIN:MOV SP,#60H,ACALL DELAY5mS,IIT0:MOV TH0,#63H,MOV TL0,#18H,CPL P1.0,RETI,DELAY5mS:。,。,例3,使用查询方式实现1S的延时,要求用定时器1,用方式0实现。,DELAY5mS:MOV R7,#200,MOV TH1,#63H,MOV TL1,#18H,SETB TR1,LP1:JBC TF1,LP2,SJMP LP1,MOV TMOD,#00H,LP2:MOV TH1,#63H,MOV TL1,#18H,DJNZ R7,LP1,RET,二、方式1,1,方式1和方式0的用法相似,唯一的区别是方式1中定时器寄存器是以全16位参与计数。,2,方式1最大计数值:,M= 216=65536,三、 方式 2,方式0和方式1的最大特点是计数溢出后计数器为全0,故循环定时或计数时就要反复设置计数初值,很不方便。方式2就是针对这种情况设计的,它具有自动重新加载计数初值的功能。, 该方式下,把16位计数器分为两部分,TL 作计数器,TH 作预置寄存器,初始化时,把计数初值同时放入TL和TH中(二者内容完全相同),当TL计满溢出时,置位TF,同时把TH中的计数初值自动加载到TL中重新开始计数,如此重复。,此方式适合用于循环定时或计数应用,如产生固定宽度脉冲,特点是计时精确。还可以作为串行数据通信的波特率发生器使用。, 优点:省去重装初值的指令,提高定时精度。, 最大计数值:M=28=256,例:编写每记录100个脉冲,将P1.0取反一次的程序。,分析:外部脉冲从P3.5输入,用T1计数,选用方式2,需要计数次数100最大计数值256,初值:X=256100 = 156 = 9CH,程序:,MOV TMOD,#60H;01100000,MOV TH1,#9CH,MOV TL1,#9CH,SETB TR1,LP: JBC TF1,LP1,AJMP LP,LP1:CPL P1.0,AJMP LP,四、 方式 3,在上述三种方式下,对T0和T1的设置和作用是完全相同的,但在方式3下,T0和T1的设置及作用是不同的。, 定时/计数器T1无方式3功能(若将T1 设置为方式3,则相当于TR1 =0,即停止计数),对于定时/计数器T0,设置为方式3时,TL0和TH0 被分开使用,TL0为完整的8位定时/计数器,TH0为只能定时的8位定时器。, T0方式3的逻辑结构,TH0被规定只能用作定时器(对机器周期计数),它用到了定时器T1的控制位TR1和TF1,所以此时TH0控制了T1的中断,T1就不能工作在中断方式了。,如果T0工作于方式3下,则T1的工作方式就不可避免受到一定的限制(因为自己的控制位TR1、TF1已被T0的TH0借用)故只能工作在方式0、方式1或方式2下。其结构如下图:,T0工作于方式3时T1的情况,工作于方式0或方式1,工作于方式2,说明:, 这种情况下,T1通常作为串行口的波特率发生器使用(确定串行通信的速率),由于TF1已被TH0借用,只能把计数溢出直接给串行口, 作波特率发生器使用时,只需设置好工作方式,即可自动启动运行,如要停止,则需置M1M0=11。(因为初始化时,已将TR1置1,用于启动TH0,故T1自动启动), 方式3适用于要求增加一个额外的8位定时器的场合(必须将TR0和TR1均置1,否则不能使三个定时器都启动。),一,定时/计数器的实时性,问题:定时/计数器启动后当计满回0溢出时向CPU请求中断处理,由硬件自动进行。但从请求中断到响应中断存在时间延迟且延迟时间不定。,解决办法:采用动态补偿,即在中断服务程序中对TH0(TH1)、 TL0(TL1) 重新置初值时,应将其从回0溢出又重新从0开始继续计数的值读出,补偿到初值中进行重新设置。,6.3 MCS-51的定时/计数器的应用,例:采用如下中断服务程序段,CLR EA,MOV A, TL0,ADD A,#LOW ;LOW为低字节初值,MOV TL0,A,MOV A, #HIGH ;高字节初值送A,ADDC A,TH0 ;高字节初值补偿,MOV TH0,A ;设置高字节初值,SETB EA,二,动态读取运行中的计数值,问题:在计数器运行中,若要读取计数值,由于不可能在同一时刻同时读取TL0和TH0 的值,故有可能出错。,如:先读TL0,后读TH0,由于定时器不断运行,读TH0前,若恰好产生TL0溢出向 TH0进位,则出错。同样,先读TH0也可能出错。,应读数据,先读数据,后读数据,错误结果,程序段:,RDTM:MOV A, TH0,MOV R0, TL0,CJNE A,TH0 , RDTM,MOV R1, A,RET,解决办法:先读TH0,后读TL0,再读TH0,将两次读得的TH0进行比较,若两次值相等,则可确定读得的值是正确的,否则重复上述过程,重复读得的值就是正确的。,三,定时/计数器用作外部中断扩展,思路:在计数方式下,如果把计数器预置为全“”,则只要在计数输入端(T0或T1)加一个脉冲就可以使计数器溢出,产生溢出中断。,实现方法:,置定时/计数器为工作方式2(自动重装,以便在一次中断响应后 ,自动为下一次中断作准备),TH0和TL0均置为0FFH。,扩展的外部中断请求信号接计数脉冲输入端(P3.4或P3.5),四,门控位GATE的功能和使用方法,程序: ORG 0000H,AJMP MAIN,

温馨提示

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

评论

0/150

提交评论