- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子时钟与定时算法
定时器及应用;定时/计数器的基本结构如图所示 :;例1、设单片机晶振频率为6MHZ,使用定时器1以方式0产生周期为500us的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。;解:1、计算计数初值
要产生500us的等宽正方波脉冲,只需在P1.0端以250us为周期交替输出高低电平即可实现,为此定时时间为250us。使用6MHZ晶振,则一个机器周期为2us,方式0为13位计数结构,设初值为X,则:
(213-X)*12*1/6 =250
得:X=8067,二进制数表示为 00011,十六进制表示为,高8位为:0FCH,低5位为:03H。其中高8位装入TH1,即TH1 = 0FCH,低5位装入TL1, 即TL1 = 03H。;2、TMOD寄存器初始化
为把定时器/计数器设定为方式0,则M1M0= 00 ;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE =0。定时器/计数器T0不用,有关位设定为0,因此TMOD寄存器初始化为00H。
3、由定时器控制器TCON中的TR1位控制定时的启动和停止,TR1=1启动 ,TR1=0停止。
4、使用查询就禁止中断 IE=00H;5、程序设计:
MOV TMOD ,#00H ; 设置T1为工作方式0
MOV TH1 ,#0FCH ;设置计数初值
MOV TL1,#03H
MOV IE ,#00H ;禁止中断
SETB TR1 ;启动定时
LOOP: JBC TF1,LOOP1 ;查询计数溢出
AJMP LOOP
LOOP1:MOV TH1,#0FCH ;重新设置计数初值
MOV TL1,#03H
CPL P1.0 ;输出取反
AJMP LOOP ;重复循环;
例3、使用定时器0以工作方式2产生100us定时,在P1.0输出周期为200us的连续方波脉冲,已知晶振频率fosc=6MHZ。;解:
1、计算计数初值
6MHZ晶振下,一个机器周期为2us,以TH0作重装载的预置寄存器,TL0作8位计数器,则:
(28-X)*12*1/6=100 ,得X=206=0CEH
把0CEH分别装入TH0和TL0中。
2、TMOD初始化
为把定时器/计数器设定为方式2,则M1M0=10;为实现定时功能,应使C/T=0;为实现定时器/计数器0的运行控制,则GATE=0。定时器/计数器T1不用,有关位设定为0,因此TMOD寄存器初始化为0000 0010,即:02H;3、由定时器控制器TCON中的TR0位控制定时的启动和停止,TR0=1启动 ,TR0=0停止。
4、使用中断方式,应开中断
EA 位和ET0位置“1”
;5、程序设计(查询方式)
MOV TMOD ,#02H ; 设置T0为工作方式2
MOV TH0 ,#0CEH ;设置计数初值
MOV TL0,#0CEH
MOV IE ,#00H ;禁止中断
SETB TR0 ;启动定时
LOOP: JBC TF0,LOOP1 ;查询计数溢出
AJMP LOOP
LOOP1:CPL P1.0 ;输出取反
AJMP LOOP ;重复循环
;5、程序设计(中断方式)
MOV TMOD ,#02H ; 设置T0为工作方式2
MOV TH0 ,#0CEH ;设置计数初值
MOV TL0,#0CEH
SETB EA ;开中断
SETB ET0 ; 定时器1允许中断
LOOP: SETB T
文档评论(0)