- 1、本文档共123页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 8051单片机的定时计数器
例:假设单片机的振荡频率fosc=6MHz,现要求产生1ms的定时,试分别计算定时器T1在方式0、方式1和方式2时的初值。 方式0:最大计数值为M=213,因此定时器的初值应为 X = 213-(1×10-3)/(12/(6×10-6) = 7692D = 1111000001100B 其中高8位为TH1的初值,即F0H, 低5位为TL1的初值这里,TL1的初值应即0CH,而不是60H,因为在方式0时,TL1的高3位是不用的,应都设为0。 方式1:最大计数值为M=216,因此定时器的初值应为 X = 216-(1×10-3)/(2×10-6) = 65036D = 1111111000001100B = FE0CH 此时高8位TH1的初值为FEH,低8位TL1的初值为0CH。 方式2:最大计数值为M=28,因此定时器的初值应为 X = 28-(1×10-3)/(2×10-6) = 256-500= -254 计算得到的初值为负值,说明当fosc=6MHz时,不能采用方式2(即常数自动装入)来产生1ms的定时,除非把单片机的时钟频率降得很低。 某应用系统要求通过P1.0和P1.1口分别输出脉冲周期为200μs和400μs的方波,fosc=6MHz。 分析:需要两个定时器。可以选择使用定时器/计数器0,设置为定时模式,工作模式3,分成两个8位的定时器。 计算定时初值。 t=(256 -X)×12/fosc 初值分别为0CEH和9CH。 例 利用定时器精确定时1s控制LED以秒为单位闪烁。已知fosc=12MHz。 分析:定时器/计数器在定时方式下,各个模式最大定时时间分别为: 定时器0=(8192-0)×12/fosc=8.192ms 定时器1=(65536-0)×12/fosc=65.536ms 定时器2=(256-0)×12/fosc=0.256ms 选择模式1。定时时间为10ms,当10ms的定时时间到,TF1=1,连续定时100次,调用亮灯函数;再连续定时100次,调用灭灯函数。循环工作,即达到1s闪烁1次的效果。 初值计算: (256-X)×12/fosc=10ms 初值X=55536=0D8F0H 定时/计数器用于外部中断扩展 扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时/计数器溢出中断。 例如,利用T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序如下: MOV TMOD,#06H ;置T0为计数器方式2 MOV TL0,#0FFH ;置计数初值 MOV TH0,#0FFH SETB TR0 ;启动T0工作 SETB EA ;CPU开中断 SETB ET0 ;允许T0中断 定时/计数器应用举例 初始化程序应完成如下工作: 对TMOD赋值,以确定T0和T1的工作方式。 计算初值,并将其写入TH0、TL0或TH1、TL1。 中断方式时,则对IE赋值,开放中断。 使TR0或TR1置位,启动定时/计数器定时或计数。 应用提示 可编程器件在使用前需要进行初始化: ①确定TMOD控制字:编程时将控制字送TMOD; ②计算计数器的计数初值: 编程时将计数初值送THi、TLi; ③ 开中断(如果使用中断方式): 编程实置位EA、ETi ④ TRi位置位控制定时器的启动和停止。 例 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。 解:1、计算计数初值X: 由于晶振为12 MHz,所以机器周期Tcy为1 ?s。 所以: N=t/ Tcy =10×10-3/1×10-6=10000 X=65536-10000=55536=D8F0H 即应将D8H送入TH0中,F0H送入TL0中 2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H; ORG 0000H LJMP MAIN ;跳转到主程序 ORG
文档评论(0)