- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)