第5章 MCS-51的定时计数器综述.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 MCS-51的定时计数器综述

5.1 定时/计数器的结构 5.2 工作方式 5.3 综合应用;5.1 定时/计数器的结构; 基本原理 基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器) 两种工作模式:定时和计数通过TMOD中 C/T※位来控制。 定时:其计数脉冲来源于晶振(经12分频后提供)每个机器周期使定时器加1。 计数方式时:对外部事件计数,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。在这种情况下,检测到输入引脚上的电平由高跳变到低时,计数器就加1。最高计数频率为晶振的1/24。 ;;2 启停与中断控制器TCON;(1)确定工作方式——对TMOD赋值。 若赋值语句为:MOV TMOD #10H (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定时,M=65536,如要求每50ms溢出一次,采用12MHz晶振,则计数周期T=1μs,计数值=50000,所以,计数初值为: X = 65536–50000 = 15536 = 3CB0H 将3C、B0、分别预置给TH1、TL1。 (3)根据需要开启定时/计数器中断——直接对IE寄存器赋值。 (4)启动定时/计数器工作——将TR0或TR1置“1”。 GATE=0时,直接由软件置位启动; GATE=1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。例5-1中因GATE=0,所以直接由软件置位启动,其指令为: SETB TR1;5.2 工作方式;;解: 1)确定工作方式 2)预置定时或计数的初值 3)编得1s延时子程序如下:;(2) 方式1 唯一的差别是THX和TLX组成一个16位计数器。 ;(3) 方式2 方式2是将两个8位计数器THX和TLX分成独立的两部分,初始常数自动重新装入设置初值时同时送THX和TLX;例5.2试用定时器1,方式2实现1s延时。 解:因方式2是8位计数器,其最大定时时间为: 256×1μs=256μs,为实现1s延时,可选择定时时间为250μs,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为: X=M–计数值=256–250=6=6H 采用定时器1,方式2工作,因此,TMOD=20H。 ;DELAY: MOV R5,#28H ;置25ms计数循环初值 MOV R6,#64H ;置250μs计数循环初值 MOV TMOD,#20H ;置定时器1为方式2 MOV TH1,#06H ;置定时器初值 MOV TL1,#06H SETB TR1 ;启动定时器 LP1: JBC TF1,LP2 ;查询计数溢出 SJMP LP1 ;无溢出继续计数 LP2: DJNZ R6,LP1 ;未到25ms继续循环 MOV R6,#64H DJNZ R5,LP1 ;未到1s继续循环 RET ;(4)方式3:只适用于T0,TL0组成完整的8位定时/计数器;TH0只作为定时器用,借用T1的控制位TR1和TF1;T1还可以设置为方式0~2,用于任何不需要中断的场合。;例5.3 用定时器0,方式3实现1s延时。 解:根据题意,定时器0中的TH0只能为定时器,定时时间可设为250μs;TL0设置为计数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0(P3.4)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50ms,循环20次便可得到1s的延时。 由上述分析可知, TH0计数初值为 X=(256–250)=6=06H TL0计数初值为 X=(256–200)=56=38H TMOD=07H 可编得1s延时子程序如下:;DELAY: MOV R3,#14H ;置1000ms计数循环初值 MOV TMOD,#07H ;置定时器0为方式3计数 MOV TH0,#06H ;置TH0初值 MOV TL0,#38H ;置TL0初值 SETB TR0 ;启动TL0 SETB TR1 ;启动TH0 LP1: JB

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档