- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7 定时器/计数器;MCS-51单片机有2个16位的可编程的定时/计数器:定时器0(T0)和定时器1(T1)。它们都有定时或事件计数的功能,可用于定时控制、延时、波特率发生、对外部事件计数和检测等场合。
定时器/计数器的本质是加法计数器,计满溢出。
定时工作模式时,对片内振荡器输出信号的12分频脉冲计数,即每个机器周期数值加1,直至计满溢出。
计数工作模式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,信号下降沿时,数值加1。
定时器/计数器在计数时,不占用CPU,只有在溢出并触发中断时,才会占用CPU。;T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们均为8位寄存器,用于存放定时或计数的初始值。
定时器内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON,用于选择定时器的模式、启动方式、工作方式及运行控制等。
作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。;定时器/计数器的工作原理;定时器/计数器对输入信号的要求
外部计数脉冲的最高频率为系统振荡器频率的 1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。
输入信号的高、低电平至少要保持一个机器周期。
;1.计数寄存器TH和TL
功能:设置计数初值
加法计数器,计满溢出,触发中断
计数初值的计算方法
;2、TMOD定时器方式设置寄存器(89H):;2、TMOD定时器方式设置寄存器(89H):;3)门控方式选择位GATE :
=0,非门控方式(内部启动):
TRx=1,启动定时器工作;
TRx=0,停止定时器工作。
=1,门控方式(外部启动):
TRx=1且引脚INTx=1才启动。;定时器控制寄存器除了锁存定时器0、1,外部中断0、1的中断标志外,同时具有定时器运行/停止控制功能。;1)启动控制位TR0、TR1:
=0,停止定时器工作;
=1,启动定时器工作。
例:启动T0: SETB TR0; 4、定时器的结构及工作原理;7.3 定时器工作方式;16位定时/计数器。
THx8位和TLx8位组成16位加1计数器。;3、方式2(M1M0=10):;4、方式3(M1M0=11):;一、初始化的步骤
1.TMOD编程,确定工作模式(定时/计数)、工作方式(0/1/2/3)和启动方式(内部启动/外部启动);
2.TH、TL编程,装载计数初值;
3.IE编程,开放定时器中断;
4.TCON编程,启动控制(启动/停止)。;MOV TMOD,#方式字 ;选择方式
MOV THx,#XH ;装入Tx时间常数
MOV TLx,#XL
SETB EA ;开Tx中断
SETB ETx
SETB TRx ;启动Tx定时器
需考虑:1. 按实际需要选择定时/计数功能;
2. 按时间或计数长度选择工作方式;
3. 计算时间常数:;; (2)计数器初值的计算
把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:TC=M-C。
式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。;三、MCS-51定时器的应用:;【例1】由P1.0输出方波信号,周期为2ms,设fosc=12MHz。;(2)中断方式:;【例2】已知晶振12MHZ,参阅下图,要求利用定时器T0使图中发光二极管D进行秒闪烁。 ;① 计算定时初值
T0初值 =216-50000?s/1?s
=65536–50000=15536=3CB0H
TH0=3CH;TL0=B0H。;③ 编制程序如下:
ORG 0000H ;复位地址
LJMP MAIN ;转主程序
ORG 000BH ;T0中断入口地址
LJMP IT00 ;转T0中断服务程序
ORG 0100H ;主程序首地址
MAIN:MOV TMOD,#01H ;置T0定时器方式1
MOV TH0,#3CH ;置T0初值50mS
MOV TL0,#0B0H
MOV IE,;T0开中
MOV R7,#0AH ;置50mS计数器初值
SETB TR0 ;T0运行
SJMP $
原创力文档


文档评论(0)