欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第五讲定时计数器精选文档.ppt

    • 资源ID:43785277       资源大小:2.66MB        全文页数:45页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第五讲定时计数器精选文档.ppt

    第五讲定时计数器本讲稿第一页,共四十五页5.1 单片机定时单片机定时/计数器的结构计数器的结构一定时一定时/计数器组成框图计数器组成框图1 8051单片机内部有两个两个16位位的可编程定时/计数器,称为定时器定时器0(T0)和定时器定时器1(T1),可编程选择其作为定时器用或作为计数器用,其逻辑结构如图5.1所示。2 定时/计数器的组成:T0、T1、定时器方式寄存器TMOD和定时器控制寄存器TCON。(1)T0、T1是由两个8位专用寄存器组成的16位加法计数器:T0由TH0和TL0组成,T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问地址依次为8AH8DH,每个寄存器均可被单独访问,用于存放定时初值或计数初值。本讲稿第二页,共四十五页 (2)T0或T1用作计数器时,对引脚T0(P3.4)或T1(P3.5)上输入的脉冲进行计数,每输入一个脉冲,加法计数器加1;用作定时器时,对内部机器周期脉冲进行计数。(3)TMOD、TCON与T0、T1间通过内部总线及逻辑电路连接,定时器/计数器的工作方式、定时时间和启停控制通过由指令来确定这些寄存器的状态来实现。TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止,并保存T0、T1的溢出和中断标志。本讲稿第三页,共四十五页图5.1 8051定时/计数器逻辑结构图 本讲稿第四页,共四十五页二定时二定时/计数器工作原理计数器工作原理 16位的定时器/计数器实质上是一个加1计数器,可实现定时和计数两种功能,其功能由软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时器/计数器。将控制字写入定时器/计数器的过程叫定时器/计数器的初始化。在初始化程序中,要将工作方式控制字写入定时器方式寄存器(TMOD),工作状态控制字(或相关位)写入定时器控制寄存器(TCON),赋定时/计数初值给TH0(TH1)和TL0(TL1)。本讲稿第五页,共四十五页1 定时工作方式:计数器对内部机器周期进行计数,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,单片机的一个机器周期由12个振荡脉冲组成,所以,计数频率fc=fosc/12。如果单片机系统采用12 MHz晶振,则计数周期为:T=1/(121061/12)=1 s,这是最短的定时周期。通过改变定时器的定时初值,并适当选择定时器的长度(8位、13位或16位),可以调整定时时间。本讲稿第六页,共四十五页2 计数工作方式:计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号进行计数,外部脉冲的下降沿下降沿将触发计数。在每个机器周期的S5P2期间采样引脚输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。新的计数值是在检测到输入引脚电平发生1到0的负跳变后,于下一个机器周期的S3P1期间装入计数器中的,可见,检测一个由1到0的负跳变需要两个机器周期。所以,最高检测频率为振荡频率的1/24。计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间大于一个机器周期。本讲稿第七页,共四十五页3定时器/计数器具有定时和计数两种功能:(1)定时与延时控制方面 可产生定时中断信号,以设计出各种不同频率的信号源;产生定时扫描信号,对键盘进行扫描以获得控制信号,对显示器进行扫描以不间断地显示数据。(2)测量外部脉冲方面 对外部脉冲信号进行计数可测量脉冲信号的宽度、周期,也可实现自动计数。(3)监控系统工作方面 对系统进行定时扫描,当系统工作异常时,使系统自动复位,重新启动以恢复正常工作。本讲稿第八页,共四十五页三定时三定时/计数器的方式寄存器和控制寄存器计数器的方式寄存器和控制寄存器 1 定时/计数器方式寄存器TMODTMOD为定时器0、定时器1的工作方式寄存器:TMOD的低4位为定时器0的方式字段,高4位为定时器1的方式字段,它们的含义完全相同。(1)M1和M0:方式选择位。定义如下:本讲稿第九页,共四十五页(2)C/:功能选择位。C/=0时,设置为定时器工作方式;C/=1时,设置为计数器工作方式。本讲稿第十页,共四十五页(3)GATE:门控位。当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1需置1,同时还需(P3.2)或(P3.3)为高电平方可启动定时器,即允许外中断、启动定时器。TMOD不能位寻址,只能用字节指令设置高4位来定义定时器1的工作方式,用低4位来定义定时器0的工作方式。复位时,TMOD所有位均置0。例如:TMOD=0 x10本讲稿第十一页,共四十五页2 定时/计数器控制寄存器TCON TCON的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。定时器控制字TCON的格式如下:(1)TCON.7(TF1):定时器1溢出标志位。当定时器1计满数产生溢出时,由硬件自动置TF1=1。在中断允许时,该位向CPU发出定时器1的中断请求;进入中断服务程序后,该位由硬件自动清0。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。本讲稿第十二页,共四十五页(2)TCON.6(TR1):定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GATE=1,且为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。(3)TCON.5(TF0):定时器0溢出标志位。其功能及操作情况同TF1。(4)TCON.4(TR0):定时器0运行控制位。其功能及操作情况同TR1。(5)TCON.3(IE1):外部中断1()请求标志位。(6)TCON.2(IT1):外部中断1触发方式选择位。(7)TCON.1(IE0):外部中断0()请求标志位。(8)TCON.0(IT0):外部中断0触发方式选择位。本讲稿第十三页,共四十五页TCON中的低4位用于控制外部中断,与定时/计数器无关,它们的含义将在下一节中介绍。当系统复位时,TCON的所有位均清0。TCON的字节地址为88H,可位寻址,清溢出标志位或启动定时器时都可以用位操作指令,如SETB TR1、JBC TF1,LP2。3 定时/计数器的初始化由于定时/计数器的功能是由软件编程确定的,因此,一般在使用定时/计数器前都要对其进行初始化。初始化步骤如下:(1)确定工作方式对TMOD赋值。TMOD=0 x10,表明定时器1工作于方式1,且为定时器方式。本讲稿第十四页,共四十五页(2)预置定时或计数的初值直接将初值写入TH0、TL0或TH1、TL1。定时/计数器的初值因工作方式的不同而不同。设最大计数值为M,则各种工作方式下的M值如下:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定时器0分成两个8位计数器,所以两个定时器的M值均为256。因定时/计数器工作的实质是做“加1”计数,所以,当最大计数值M值已知时,初值X可计算如下:X=M计数值本讲稿第十五页,共四十五页定时器1采用方式1定时,M=65536,因要求每50ms溢出一次,如采用12 MHz晶振,则计数周期T=1 s,计数值=(501000)/1=50000,所以,计数初值为X=6553650000=15536=0 x3CB0将0 x3C、0 xB0分别预置给TH1、TL1。(3)根据需要开启定时/计数器中断直接对IE寄存器赋值。本讲稿第十六页,共四十五页(4)启动定时/计数器工作将TR0或TR1置1。GATE=0时,直接由软件置位启动;GATE=1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。如果GATE=0,直接由软件置位启动,其指令为:TR1=1。定时/计数器的初始化过程已完毕。本讲稿第十七页,共四十五页定时初值或计数初值的计算方法定时初值或计数初值的计算方法 不同工作方式的定时初值或计数初值的计算方法如下表:工作方式 计数位数 最大计数值最大定时时间定时初值计算公式计数初值计算公式方式013213=8192213T机X=213-T/T机X=213-计数值方式116216=65536216T机X=216-T/T机X=216-计数值方式2828=25628T机X=28-T/T机X=28-计数值表中T 表示定时时间,T机表示机器周期。本讲稿第十八页,共四十五页5.2 定时定时/计数器的工作方式计数器的工作方式通过对TMOD寄存器中M0、M1位进行设置,定时/计数器可选择4种工作方式。一方式方式0方式0构成一个13位定时/计数器。图5.2是定时器0在方式0时的逻辑电路结构,定时器1的结构和操作与定时器0完全相同。本讲稿第十九页,共四十五页图5.2 定时器0(或定时器1)在方式0时的逻辑电路结构图本讲稿第二十页,共四十五页由图可知:16位加法计数器(TH0和TL0)只用了13位。其中,TH0占高8位,TL0占低5位(只用低5位,高3位未用)。当TL0低5位溢出时自动向TH0进位,而TH0溢出时向中断位TF0进位(硬件自动置位)并申请中断。当=0时,多路开关连接12分频器输出,定时器0对机器周期计数,此时,定时器0为定时器。其定时时间为(M定时器0初值)时钟周期12=(8192定时器0初值)时钟周期12当=1时,多路开关与T0(P3.4)相连,外部计数脉冲由T0脚输入,当外部信号电平发生由1到0的负跳变时,计数器加1,此时,定时器0为计数器。本讲稿第二十一页,共四十五页当GATE=0时,或门被封锁,信号无效。或门输出常1,打开与门,TR0直接控制定时器0的启动和关闭。TR0=1,接通控制开关,定时器0从初值开始计数直至溢出。溢出时,16位加法计数器为0,TF0置位并申请中断。如要循环计数,则定时器0需重置初值,且需用软件将TF0复位。实训5步骤1)中就采用了重置初值语句和JBC命令。TR0=0,则与门被封锁,控制开关被关断,停止计数。当GATE=1时,与门的输出由的输入电平和TR0位的状态来确定。若TR0=1,则与门打开,外部信号电平通过引脚直接开启或关断定时器0,当为高电平时,允许计数,否则停止计数;若TR0=0,则与门被封锁,控制开关被关断,停止计数。本讲稿第二十二页,共四十五页例5.1 用定时器1,方式0实现1 s的延时。解:因方式0采用13位计数器,其最大定时时间为:81921 s=8.192 ms,可选择定时时间为5 ms,再循环200次。定时时间选定后,再确定计数值为5000,则定时器1的初值为X=M计数值=8192-5000=3192=0 xC78=0110001111000B 因13位计数器中TL1的高3位未用,应填写0,TH1占高8位,所以,X的实际填写值应为X=0110001100011000B=0 x6318即TH1=0 x63,TL1=0 x18,又因采用方式0定时,故TMOD=0 x00。本讲稿第二十三页,共四十五页可编写1 s延时子程序如下(C程序):void Delay()unsigned int i;TMOD=0 x00;/设定时器1为方式0 TH1=0 x63;/置定时器初值 TL1=0 x18;TR1=1;/启动T1 for(i=0;i=200;)if(TF1=1)/查询计数溢出 i+;TF1=0;TH1=0 x63;/重新置定时器初值 TL1=0 x18;return;本讲稿第二十四页,共四十五页 可编写1 s延时子程序如下(汇编):DELAY:MOV R3,#200;置5 ms计数循环初值MOVTMOD,#00H;设定时器1为方式0MOVTH1,#63H;置定时器初值MOVTL1,#18HSETBTR1;启动T1LP1:JBCTF1,LP2 ;查询计数溢出SJMPLP1;未到5 ms继续计数LP2:MOVTH1,#63H ;重新置定时器初值MOVTL1,#18HDJNZR3,LP1;未到1 s继续循环RET ;返回主程序本讲稿第二十五页,共四十五页二方式二方式1定时器工作于方式1时,其逻辑结构图如图5.3所示。由图5.3可知,方式1下构成一个16位定时/计数器,其结构与操作几乎完全与方式0相同,惟一差别是二者计数位数不同。方式1下定时器的定时时间为(M定时器0初值)时钟周期12=(65536定时器0初值)时钟周期12本讲稿第二十六页,共四十五页图5.3 定时器0(或定时器1)在方式1时的逻辑结构图 本讲稿第二十七页,共四十五页三方式三方式2定时/计数器工作于方式2时,其逻辑结构图如图5.4所示。由图5.4可知,方式2下,16位加法计数器的TH0和TL0具有不同功能,其中,TL0是8位计数器,TH0是重置初值的8位缓冲器。方式0和方式1用于循环计数,在每次计满溢出后,计数器都复位为0,所以要进行新一轮计数时还需重置计数初值。这不仅导致编程麻烦,而且影响定时时间精度。方式2具有初值自动装入功能,避免了上述缺陷,适合用作较精确的定时脉冲信号发生器。其定时时间为(M定时器0初值)时钟周期12=(256定时器0初值)时钟周期12本讲稿第二十八页,共四十五页图5.4 定时器0(或定时器1)在方式2时的逻辑结构图本讲稿第二十九页,共四十五页方式2中16位加法计数器被分割为两个,TL0用作8位计数器,TH0用以保持初值。在程序初始化时,TL0和TH0由软件赋予相同的初值。一旦TL0计数溢出,TF0将被置位,同时,TH0中的初值装入TL0,从而进入新一轮计数,如此循环不止。例例5.2 试用定时器1,方式2实现1 s的延时。解:因方式2是8位计数器,其最大定时时间为:2561 s=256 s,为实现1 s延时,可选择定时时间为250 s,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为:X=M计数值=256250=6=0 x06。采用定时器1,方式2工作,因此,TMOD=0 x20。本讲稿第三十页,共四十五页可编写1 s延时子程序如下(C程序):void Delay()unsigned int i;TMOD=0 x20;/设定时器1为方式2 TH1=0 x06;/置定时器初值 TL1=0 x06;TR1=1;/启动T1 for(i=0;i=4000;)if(TF1=1)/查询计数溢出 i+;TF1=0;continue;return;本讲稿第三十一页,共四十五页可编写1 s延时子程序如下(汇编程序):DELAY:MOVR5,#28H;置25 ms计数循环初值 MOVR6,#64H;置250 s计数循环初值MOVTMOD,#20H;置定时器1为方式2MOVTH1,#06H;置定时器初值MOVTL1,#06HSETBTR1;启动定时器LP1:JBCTF1,LP2;查询计数溢出SJMPLP1;无溢出则继续计数LP2:DJNZR6,LP1;未到25 ms继续循环MOVR6,#64HDJNZR5,LP1;未到1 s继续循环RET本讲稿第三十二页,共四十五页图5.5 定时器0在方式3时的逻辑结构 四方式四方式3定时/计数器工作于方式3时,其逻辑结构图如图5.5所示。本讲稿第三十三页,共四十五页 由图可知,方式3下,定时器0被分解成两个独立的8位计数器TL0和TH0。其中,TL0占用原定时器0的控制位、引脚和中断源,即C/、GATE、TR0、TF0和T0(P3.4)引脚、(P3.2)引脚,除计数位数不同于方式0、方式1外,其功能、操作与方式0、方式1完全相同,可定时亦可计数。TH0不仅占用了原定时器1的控制位TF1和TR1,同时还占用了定时器1的中断源,其启动和关闭仅受TR1置1或清0控制。TH0只能对机器周期进行计数,因此,它只能用于简单的内部定时,不能用于对外部脉冲进行计数,是定时器0附加的一个8位定时器。TL0和TH0的定时时间分别为TL0:(MTL0初值)时钟周期12=(256TL0初值)时钟周期12本讲稿第三十四页,共四十五页TH0:(MTH0初值)时钟周期12=(256TH0初值)时钟周期12方式3时,定时器1仍可设置为方式0、方式1或方式2。但由于TR1、TF1及T1的中断源已被定时器0占用,因此,定时器1仅由控制位C/切换其定时或计数功能,当计数器计满溢出时,只能将输出送往串行口。在这种情况下,定时器1一般用作串行口波特率发生器或用于不需要中断的场合。因定时器1的TR1被占用,因此其启动和关闭较为特殊。当设置好工作方式时,定时器1即自动开始运行。若要停止操作,只需送入一个设置定时器1为方式3的方式字即可。本讲稿第三十五页,共四十五页例例5.3 用定时器0,方式3实现1 s的延时。解:根据题意,定时器0中的TH0只能作为定时器,定时时间可设为250 s;TL0设置为计数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0(P3.4)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50 ms,循环20次便可得到1 s的延时。由上述分析可知,TH0计数初值为X=(256 250)=6=0 x06TL0计数初值为X=(256 200)=56=0 x38 TMOD=00000111B=0 x07 本讲稿第三十六页,共四十五页可编写1 s延时子程序如下(C程序):void Delay()unsigned int i;TMOD=0 x07;/置定时器0为方式3计数 TH0=0 x06;/置TH0初值 TL0=0 x38;/置TL0初值 TR0=1;/启动TL0 TR1=1;/启动TH0 for(i=0;i=40;)if(TF0=0)if(TF1=1)/查询TH0计数溢出 本讲稿第三十七页,共四十五页 TF1=0;TH0=0 x06;/重置TH0初值 P3_4=0;/T0引脚产生负跳变 P3_4=0;/负跳变持续 P3_4=1;/T0引脚恢复高电平 continue;TF0=0;i+;TL0=0 x38;/重置TL0初值 本讲稿第三十八页,共四十五页可编写1 s延时子程序如下(汇编):DELAY:MOVR3,#14H;置50 ms计数循环初值MOVTMOD,#07H;置定时器0为方式3计数MOVTH0,#06H;置TH0初值MOVTL0,#38H;置TL0初值SETBTR0;启动TL0SETBTR1;启动TH0LP1:JBCTF1,LP2;查询TH0计数溢出SJMPLP1;未到500 s继续计数LP2:MOVTH0,#06H;重置TH0初值CLRP3.4 ;T0引脚产生负跳变NOP;负跳变持续NOP本讲稿第三十九页,共四十五页SETBP3.4;T0引脚恢复高电平JBCTF0,LP3;查询TL0计数溢出SJMPLP1;50 ms未到继续计数LP3:MOVTL0,#38H ;重置TL0初值DJNZR3,LP1;未到1 s继续循环RET本讲稿第四十页,共四十五页5.3 定时定时/计数器的编程和应用计数器的编程和应用定时/计数器是单片机应用系统中的重要部件,通过下面的实例将可以看到,灵活应用定时/计数器可提高编程技巧,减轻CPU的负担,简化外围电路。例:使用定时器0控制P0和P2端口的两组LED滚动显示。TMOD=0 x01,计数位16位,最大计数65536,12MHz,实现40ms定时:TH0=(65536-40000)/256 TL0=(65536-40000)%256本讲稿第四十一页,共四十五页本讲稿第四十二页,共四十五页源程序:#include#include#define uchar unsigned char#define uint unsigned intvoid main()uchar T_Count=0;/累加计数溢出发生的次数 P0=0 xFE;P2=0 xFE;TMOD=0 x01;/定时器0工作于方式1 TH0=(65536-40000)/256;/40ms定时初值 TL0=(65536-40000)%256;TR0=1;/启动定时器本讲稿第四十三页,共四十五页 while(1)if(TF0=1)/定时溢出标志位为1时表示计时溢出 TF0=0;/软件清零 TH0=(65536-40000)/256;/重置40ms定时 TL0=(65536-40000)%256;if(+T_Count=5)/40*5=200ms后LED滚动一次 P0=_crol_(P0,1);P2=_crol_(P2,1);T_Count=0;本讲稿第四十四页,共四十五页习题:1、MCS-51定时/计数器的定时功能和计数功能有什么不同?分别应用在什么场合下?2、当定时/计数器工作于方式1时,晶振频率为6 MHz,请计算最短定时时间和最长定时时间。3、简述MCS-51单片机定时/计数器的4种工作方式的特点及如何选择和设定这4种工作方式。4、编写用定时器0,方式1延时程序。本讲稿第四十五页,共四十五页

    注意事项

    本文(第五讲定时计数器精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开