




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
定时/计数器,1,定时方法概述定时计数器结构和工作原理定时计数器的控制寄存器定时器的四种工作方式定时器的应用,2,一、定时方法概述,软件定时:软件定时靠执行一个循环程序以进行时间延迟。特点是时间精确,且不需要外加硬件电路。但软件定时要占用CPU开销,因此软件定时的时间不宜太长。采用时基电路定时:特点是(定时功能全部由硬件电路完成)不占CPU时间,但需通过改变电路的元件参数来调节定时时间,在使用上不够灵活方便。采用可编程芯片定时:这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活有方便。,结论:MCS-51单片机把定时电路集成在芯片中,称之为定时器/计数器。8051型单片机有两个定时/计数器,分别称为定时器/计数器0和定时器/计数器1。,3,二、定时计数器结构和工作原理,定时器方式寄存器主要用于设定定时器的工作方式,定时器控制寄存器主要用于控制定时器的启动与停止,并保存T0、T1的溢出和中断标志,定时器0,定时器1,4,定时/计数器的结构框图,16位的定时器/计数器实质上是一个加l计数器,可实现定时和计数两种功能,其功能由软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。,5,定时器/计数器的定时功能。计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出。定时器的定时时间与系统的时钟频率有关。因一个机器周期等于12个时钟周期,所以计数频率应为系统时钟频率的十二分之一。如果晶振频率为12MHz,则机器周期为1s。通过改变定时器的定时初值,并适当选择定时器的长度(8位、13位或16位),可以调整定时时间。,6,定时器/计数器的计数功能。通过外部计数输入引脚T0(P3.4)和T1(P3.5)对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平,若一个机器周期S5P2期间采样值为1,下一个机器周期S5P2期间采样值为0,则计数器加1,再下一个机器周期S3P1期间,新的计数值装入计数器。因检测一个由1至0的跳变需要两个机器周期,故外部信号的最高计数频率为时钟频率的二十四分之一。如果晶振频率为12MHz,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。,7,1、工作方式寄存器TMOD,M0,M1,C/T0,GATE0,M0,M1,C/T1,GATE1,TMOD,字节地址89H,D7D6D5D4D3D2D1D0,方式选择,00:方式0,01:方式1,10:方式2,11:方式3,定时/计数选择,0:定时器,1:计数器,门控位,三、定时计数器的控制寄存器,8,GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响。GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动。GATE=1时,由控制位TRx和引脚共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚=1时),才允许定时器启动。,9,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。,10,3、中断允许控制寄存器,EX0,ET0,EX1,ET1,ES,ET2,EA,IE,字节地址A8H,D7D6D5D4D3D2D1D0,定时/计数器1中断允许控制位,定时/计数器0中断允许控制位,0:允许中断,1:禁止中断响应,中断允许总控制位,11,4、中断优先级寄存器IP(字节地址B8H),12,四、定时计数器的四种工作方式,定时器T0、T1的工作方式,13,1、工作方式0(13位计数器),TR1=1,启动计数,GATE0=0时:,GATE0=1时:,启动计数,启停控制,定时计数选择,13位计数器,14,计数工作方式:最大的计数值为8192(213)预置的初值:X=213-N,定时工作方式:定时时间的计算公式为:T=(213计数初值)晶振周期12,?如晶振频率为6MHZ/12MHZ,求最小定时时间和最小定时时间,机器周期,预置的初值:,15,【例】单片机晶振频率为12MHz,若产生1ms定时,采用方式0,试计算初值X。,X=1110000000011000B=E018H所以(TH)=E0H,(TL)=18H。,解:预置的初值:,16,2、工作方式1(16位计数器),16位计数器,17,计数工作方式:最大的计数值为65536(216)预置的初值:X=216-N,定时工作方式:定时时间的计算公式为:T=(216计数初值)晶振周期12,?如晶振频率为6MHZ/12MHZ,求最小定时时间和最小定时时间,预置的初值:X=216-T/(晶振周期12),18,【例】单片机晶振频率为12MHz,若产生1ms定时,采用方式1,试计算初值X。,所以(TH)=FCH,(TL)=18H。,解:预置的初值:,19,【例】已知晶振频率fosc=12MHz,使用定时器0以工作方式1,在P1.0输出周期为2ms的连续正方波脉冲。试编写相关程序。,解:计算初值:TH0=FCH,TL0=18H。ORG0000HLJMPMAIN;跳转到主程序ORG000BH;T0的中断入口地址LJMPDVT0;转向中断服务程序ORG0100HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#01H;置T0工作于方式1/初始化TMODMOVTH0,#0FCH;装入计数初值/装入初值MOVTL0,#018HSETBET0;T0开中断/中断设置SETBEA;CPU开中断SETBTR0;启动T0/启动定时器SJMP$;等待中断DVT0:CPLP1.0;P1.0取反输出MOVTH0,#0FCH;重新装入计数值MOVTL0,#018HRETI;中断返回END,20,查询方式:,ORG0000HLJMPMAIN;跳转到主程序ORG0100HMAIN:MOVTMOD,#01H;置T0工作于方式1/初始化TMODLOOP:MOVTH0,#0FCH;装入计数初值/装入初值MOVTL0,#018HSETBTR0;启动T0/启动定时器JNBTF0,$;查询TF0标志,如为1,说明T0溢出,;则往下执行CLRTF0;清除TF0中断标志位CLRTR0;T0溢出,关闭定时器CPLP1.0;P1.0状态取反SJMPLOOPEND,21,3、工作方式2(自动装载初值的8位计数器),注:适用于需要重复定时或计数的场合。定时精度比较高,但定时时间较短。,用作定时或计数时的加1计数器,用作赋值(保存初值)。,22,例、已知晶振频率fosc=6MHz,要求使用定时器0以工作方式2产生100s定时,在P1.0输出周期为200s的连续正方波脉冲。试编写相关程序。,解:计算初值:,MOVTMOD,#02H;设置定时器0为工作方式2MOVTH0,#0CEH;设置计数初值MOV,TL0,#0CEHSETBTR0;启动定时LOOP:JBCTF0,LOOP1;查询计数溢出AJMPLOOPLOOP1:CPLP1.0;输出方波,初值自动装入AJMPLOOP,23,例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的方波。,24,(2)计算T1初值设T1的初值为X:则(28-X)210-6=510-4X=28-250=6=06H(3)程序设计ORG0000HRESET:LJMPMAIN;复位入口转主程序ORG000BHLJMPIT0P;转T0中断服务程序ORG001BHLJMPIT1P;转T1中断服务程序ORG0100HMAIN:MOVSP,#60HACALLPT0M2;调用对T0、T1初始化子程序LOOP:MOVC,F0JNCLOOP;T0没有产生中断,等待T0中断SETBET1;允许T1中断SETBTR1;启动T1SJMP$,25,PT0M2:MOVTMOD,#25H;初始化,T1为方式2定时,T0为方式1计数MOVTL0,#0FFH;T0置初值MOVTH0,#0FFHSETBET0;允许T0中断MOVTL1,#06H;T1置初值MOVTH1,#06HCLRF0SETBEA;开中断SETBTR0;启动T0RETIT0P:CLRTR0;T0中断服务程序,停止T0计数SETBF0;建立T0产生中断的标志RETIIT1P:CPLP1.0;T1中断服务,P1.0位取反RETIEND,26,4、工作方式3,为什么定时/计数器T1无工作方式3?,两个独立的计数器,注:当T1用作串行口的波特率发生器时,T0才工作在方式3。,TH0被固定为1个独立的8位定时器(无外部计数功能),并使用T1的资源(TR1、TF1),TL0使用T0的资源(TR0、TF0、INT0、GATE、G/T),27,例:假设某MCS-51应用系统的两个外中断源已被占用,设置T1工作在方式2,作波特率发生器用。现要求增加一个外部中断源,并控制P1.0引脚输出一个5kHz的方波。设系统时钟为12MHz。,28,(1)选择工作方式TL0为方式3计数,把T0引脚(P3.4)作附加的外中断输入端,TL0初值设为0FFH,当检测到T0引脚电平出现负跳变时,TL0溢出,申请中断,这相当于跳沿触发的外部中断源。TH0为8位方式3定时,控制P1.0输出5kHz的方波信号。,29,(2)初值计算TL0的初值设为0FFH。5kHz的方波的周期为200s,TH0的定时时间为100s。TH0初值X计算如下:(28-X)210-6=110-4X=28-100=156=9CH(3)程序设计,30,ORG0000HLJMPMAINORG000BH;T0中断入口LJMPTL0INT;跳T0中断服务程序ORG001BH;在T0方式3时,TH0占用T1的中断LJMPTH0INT;跳TH0中断服务程序ORG0100HMAIN:MOVTMOD,#27H;T0方式3计数,T1方式2定时作串行口波特率发生器MOVTL0,#0FFH;置TL0初值MOVTH0,#9CH;置TH0初值MOVTL1,#dataL;data为波特率常数MOVTH1,#dataH,31,MOVTCON,#15H;启动T0或用SETBTR0MOVIE,#9FH;允许所有中断SJMP$TL0INT:MOVTL0,#0FFH;TL0中断服务程序,TL0重新装入初值SETBTR1;启动TH0定时RETITH0INT:MOVTH0,#9CH;TH0中断服务程序。TH0重新装入初值CPLP1.0RETI,32,初始化程序应完成如下工作:对TMOD赋值,以确定T0和T1的工作方式。计算初值,并将其写入TH0、TL0或TH1、TL1。中断方式时,则对IE赋值,开放中断。使TR0或TR1置位,启动定时/计数器定时或计数。,小结:,33,五、定时器的应用,1、门控制位GATE的应用测量脉冲宽度,GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动。GATE=1时,由控制位TRx和引脚共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚=1时),才允许定时器启动。,34,ORG0000HRESET:AJMPMAIN;复位入口转主程序ORG0100HMAIN:MOVSP,#60HMOVTMOD,#90H;T1为方式1定时控制字MOVTL1,#00HMOVTH1,#00HLOOP0:JBP3.3,LOOP0;INT1高,则循环SETBTR1;如INT1为低,启动T1LOOP1:JNBP3.3,LOOP1;INT1低,则循环LOOP2:JBP3.3,LOOP2;INT1高,则循环CLRTR1;停止T1计数MOVA,TL1;T1计数值送A将A中的T1计数值送显示缓冲区转换成显示的代码LOOP3:LCALLDIR;调用显示子程序DIR显示T1计数值AJMPLOOP3;,35,2、实时时钟的设计,实时时钟实现的基本思想:如何获得1秒的定时?可把定时时间定为100ms,采用中断方式进行溢出次数的累计,计满10次,即得到秒计时。如何保存秒、分、时?片内RAM中规定3个单元作为秒、分、时单元,具体安排如下:42H:“秒”单元;41H:“分”单元;40H:“时”单元如何实现从秒到分,从分到时?从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。,36,时钟主程序流程,中断服务程序流程,37,例:将定时器T0扩展为外部中断源。,解:将定时器T0设定为方式2(自动恢复计数初值),TH0和TF0的初值均设置为FFH,允许T0中断,CPU开放中断,源程序如下:MOVTMOD,#06HMOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEAT0引脚每输入一个负跳变,TF0都会置1,向CPU请求中断T0脚相当于边沿触发的外部中断源输入线。,3、作为外部中断源,38,本章小结,8051单片机共有两个可编程的定时器/计数器,分别称为定时器0和定时器1,它们都是16位加1计数器。定时器/计数器的工作方式、定时时间、计数值和启停控制由程序来确定。定时器/计数器有四种工作方式,工作方式由定时器方式寄存器TMOD中的M1、M0位确定。方式0是13位计数器,方式1是16位计数器,方式2是自动重装初值8位计数器;方式3时,定时器0被分为两个独立的8位计数器,定时器1是无中断的计数器,此时定时器1一般用作串行口波特率发生器。定时器/计数器有定时和计数两种功能,由定时器方式寄存器TMOD中的C/T位确定。当定时器/计数器工作在定时功能时,通过对单片机内部的时钟脉冲计数来实现可编程定时;当定时器/计数器工作在计数功能时,通过对单片机外部的脉冲计数来实现可编程计数。,39,当定时器/计数器的加1计数器计满溢出时,溢出标志位TF1(TF0)由硬件自动置1,对该标志位有两种处理方法。一种是以中断方式工作,即TF1(TF0)置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF1(TF0)清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF1(TF0)置1后必须用软件使TF1清0。定时器/计数器的初始化实际上就是对定时器/计数器进行编程,以实现设计者所要求的控制功能。这通过对TMOD、TH0(TH1)、TL0(TL1)、IE、TCON专用寄存器中相关位的设置来实现,其中IE、TCON专用寄存器可进行位寻址。,40,选择题:1定时/计数器T0在GATE=1时运行的条件有()。AP3.2=1B.设置好定时初值C.TR0=1D.T0开启中2对定时器0进行关中断操作,需要复位中断允许控制寄存器的:(A)EA和ET0(B)EA和EX0(C)EA和ET1(D)EA和EX13在下列寄存器中,与定时器/计数器控制无关的是:(A)TCON(B)SCON(C)IE(D)TMOD4与定时工作方式0和1相比较,定时工作方式2不具备的特点是:(A)计数溢出后能自动恢复计数初值(B)增加计数器的位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业承包合同下新增厨师补充协议范文8篇
- 压力真空罐安全培训流程课件
- 2025年区块链行业区块链技术应用前景与金融改革研究报告
- 2025年物联网行业物联网技术应用前景研究报告
- 2025年火箭航天行业商业化前景预测报告
- 2025年环保行业绿色环保产品市场前景研究报告
- 2025年虚拟现实行业VR技术与虚拟现实应用前景研究报告
- 商品车电器使用培训课件
- 商品混凝土安全技术培训课件
- 2025重庆建峰工业集团有限公司招聘77人笔试参考题库附带答案详解
- 股权代持协议(模板)8篇
- 《AI创意课件之设计》课件
- 医院会计笔试题目及答案
- 河南豫信电科所属公司招聘笔试题库2025
- GB/T 45345-2025金属及其他无机覆盖层工程用直流磁控溅射银镀层镀层附着力的测量
- 无人机教员聘用协议书
- 药物非临床研究质量管理规范
- 脑科生理病理图谱解读
- 全国青少年科技辅导员专业水平认证笔试考题
- (行业)常用表面处理工艺详解(行业讲座教学培训课件)
- 配电网安健环设施标准
评论
0/150
提交评论