- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机定时器-计数器工作方式
单片机定时器/计数器工作方式
(1)工作方式0
C/T -定时 / 计数功能选择位。
C/T =“0” ,对片内机器周期进行计数,作定时器用;
C/T =““1” ,对片外从 T0 ( P3.4 )、 T1 ( P3.5 )引脚输入 的外部脉冲信号进行计数 , 作计数器用。
GATE -门控位。
GATE=0 ,允许软件控制位 TR0 或 TR1 启动定时器;
GATE=1 ,允许外中断引脚 INT0( 或 INT1) 为高电电平,且由软件使 TR0( 或 TR1) 置 1 时,才能启动定时器工作。
当 GATE=0 时,封锁或门输出恒为 1 ,使外部中断输入引脚 INT0 信号失效,同时又打开与门,由 TR0 控制定时器 T0 的开启和关断。若 TR0=1 ,接通控制开关,启动定时器 T0 工作,计数器被控制为允许计数。若 TR0=0 ,则断开控制开关,停止计数。
当 GATE=1 时,与门的输出由 INT0 的输入电平和 TR0 位的状态来确定。若 TR0=1 ,则打开与门,外部信号电平通过 INT0 引脚直接开启或关断定时器 T0 。 当 INT0 为高电平时,允许计数,否则停止计数。这种工作方式可用来测量外部信号的脉冲宽度等。
当 C/T=0 时, 控制开关接通振荡器 12 分频输出端, T0 对机器周期计数。 即定时器工作方式。
当 C/T=1 控制开关与引脚 T0 ( P3.4 )接通,计数器 T0 对来自外部引脚 T0 的输入脉冲计数,当外部信号电平发生由 1 到 0 跳变时,计数器加 1 ,这时, T0 成为外部事件计数器。
注意:定时计数器的计数范围与初值 X 的计算
定时器的计数规律:
T0 从某初值 X ,对脉冲计数到 1111111111111B(2 13 D=8192D) 溢出
计数个数: 2 13 - X
最大计数范围: 从初值 X = 0D ,计数到 1111111111111B(2 13 D)
定时时间:
定时值 = 计数个数×机器周期
=( 2 13 - X )×机器周期
= ( 2 13 - X )×晶振周期× 12
最大定时值 =( 2 13 - 0 ) ×机器周期
例 1 如要求计数值为 1000 ,试计算定时计数器 T0 的初值
分析:由 213 - X = 1000
得 X = 213 - 1000 = 8192 - 1000
= 1C18H = 0001 1100 0001 1000B
故 TH0 = 1 1100 000 = 0E0H
TL0 = 1 1000B = 000 1 1000B = 18H 。
例 2 利用 T0 方式 0 在 P1.0 引脚上输出周期 500us 的方波。设单片机 晶振频率 6MHz 。
分析: 要在 P1.0 输出周期为 500us 的方波,只要 P1.0 每隔 250us 取反一次即可,即定时时间为 250us :
TMOD 寄存器初始化:
TMOD.1 TMOD.0 M1M0=00 , T0 为方式 0 ;
TMOD.2 C/T=0 T0 为定时状态;
TMOD.3 GATE=0 表示计数不受 INT0 控制;
TMOD.4 TMOD.7 因 T1 不用,可取任意值,这里取为 0 。
故 TMOD=00H
计算 250us 定时 T0 的初值: 设 T0 的计数初值为 X ,则
X=8067D=1F83H=0001 1111 1000 0011B
故 TH0= 1 1111 100 高 8 位 =FCH
TL0=0000 0011B 低 5 位 =03H
编写程序。采用查询 TF0 的状态来控制 P1.0 输出
MOV TMOD , #00H ;置 T0 为方式 0
MOV TH0 , #0FCH ;送计数初值
MOV TL0 , #03H
SETB TR0 ;启动 T0
LOOP : JBC TF0 , NEXT ;查询定时时间到否 ?
SJMP LOOP
NEXT : CLR
文档评论(0)