定时器工作原理_第1页
定时器工作原理_第2页
定时器工作原理_第3页
定时器工作原理_第4页
定时器工作原理_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定时器工作原理通电延时型。只要在定时的时间段内 (即1分钟)定时器一直得电,则常开触电就会闭合, 只要定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开图6.1定时器/计数器结构框图定时器/计数器1定时器/计数器0位序D7D6D5D4D3D2D1DO位标 志GATEC/M1MOGATEC/M1MOM1MO工作方 式功能说明00113位计数器01216位计数器103自动再装入8位计数器114定时器0:分成两个8位计数器定时器1: 停止计数2工作在计数方式C/二1, 13位计数器对外部输入信号进行加 1计数。利用由0变为1时,开始计数,由1变为0时,停止计数,可以测量在 端 出现的正脉冲的

2、宽度。计数值的范围是 1213=8192 (个外部脉冲)。【例6.2】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使 用定时器T0,工作方式0,计算定时器初值X。解:t t = (213 ) 机器周期 8 X03 = (213 ) X1X = 8192-8000 = 192转换成二进制数为:11000000B【例6.3】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250卩s 当T0工作在方式0时T0计数器的初值是多少?解:t t = (213 ) 机器周期 250 = (213 -0)X1X 0= 8192-250 = 7942转换成二进制数为:11111

3、00000110B【例6.4】利用T0方式0产生1ms的定时,在P1.2引脚上输出周期为2ms 的方波。设单片机晶振频率fosc= 12MHz。解:(1)解题思路要在P1.2引脚输出周期为2ms的方波,只要使P1.2每隔1ms取反一次即可。 执行指令为CPL P1.2。(2)确定工作方式:方式0 TMOD=00HC/ = 0: T0为定时功能;(D2位)GATE = 0,只要用软件使TR0 (或TR1)置1就能启动定时器T0 (或T1);M1M0 = 00,工作方式0 TMOD 的值为=00HTMOD.4TMOD.7可取任意值,因T1不用,这里取0值。使用MOV TMOD , #00H即可设定

4、T0的工作方式(3)计算1 ms定时时T0的初值计数个数:X =1ms/l卩s = 1000设T0的计数初值为X0,则X0= (213一 X)s=81921000=7192D转换成二进制数为:11100000 11000B高8位低5位将高 8 位 11100000 = 0E0H装入 TH0将低5位11000 = 18H装入TL01EA = 1 ,CPU开放中断;ET0 = 1,允许T0中断;(4)编程可米用中断和查询两种方式编写程序。 方法一:中断方式ORG 0000HAJMP MAINORG 000BH AJMP IT0PORG 1000HMAIN : MOV SP,#60HMOV TH0

5、, #0E0HMOV TMOD,#00HMOV TL0 , #18H;MOV TH0,#0E0HSETB EASETB ET0SETB TR0,HERE: SJMP HEREIT0P:MOVMOV CPL RETIORG 1200HTL0,#18H TH0, P1.2转主程序MAIN转T0中断服务程序IT0P;设堆栈指针;给定时器T0送初值 设置T0为方式0,定时 送定时初值CPU开中断T0允许中断启动T0定时;等待中断;T0中断入口;重新装入计数初值#0E0H;输出方波;中断返回END方法二:查询方式MOV TMODMOV TL0,#18HMOV TH0,#0E0H SETB TR0LOOP

6、: JBC TF0,SJMP LOOPNEXT : MOV TL0, MOV TH0,#0E0H#00H ;设置T0为方式0,定时;送初值;启动T0定时NEXT ;查询定时时间到否?#18H;重新装入计数初值CPL P1.2;输出方波SJMP LOOP :重复循632工作方式1工作方式寄存器 TMOD中的M1M0为:01。定时器T0工作方式1与工作方 式0类同,差别在于其中的计数器的位数。工作方式1以16位计数器参与计数。定时器/计数器0方式1的逻辑结构如图6.3所示。1 .工作在定时方式C/二0,定时器对机器周期计数。定时时间的计算公式为: 定时时间=(213廿数初值)晶振周期X12若晶振频

7、率为12MHz,则最短定时时间为216-(216- 1)总/12)杓一6X12= 1 ys(216-0) X (1/12) X10-6X12= 65 536 卩手 65.5 ms2.工作在计数方式C/二1,16位计数器对外部输入信号进行加1计数。计数值的范围是1216=65 536 (个外部脉冲)。【例6.5】假设AT89S52单片机晶振频率为12MHz,所需定时时间为10ms, 当T0工作在方式1时T0计数器的初值是多少?解:t t = (216 -0) X机器周期 10 X03 = (213 -0)XX = 65536-10000 = 55536转换成二进制数为:1101100011110

8、000 B = 0D8F0H【例6.6】假设AT89S52单片机晶振频率为12MHz,定时器T0的定时初值 为9800,计算T0工作在方式1时的定时时间。解:t t = (216 -0)X机器周期 t = (216 800) X1t = 65536-9800 = 55736 ys【例6.7】用定时器T0产生50HZ的方波。由P1.0输出此方波(设时钟频 率为12MHZ)。采用中断方式。解:50HZ的方波周期T为T = 1/50 = 20ms 可以用定时器产生10ms的定时,每隔10ms改变一次P1.0的电平,即可得 到50HZ的方波。定时器T0应工作在方式1。 工作在方式1时的T0初值,根据下

9、式计算: t = (216 ) X机器周期时钟频率为12MHz,则机器周期=1电10 10 碁(216 ) X1X =65536 -10000 = 55536转换为二进制数:11011000 11001100B高8位=0D8H装入TH0,低 8位=0CCH装入TL0(2) 程序ORG 0000H;T0的中断入口地址AJMP MAIN ORG 000BH;设置T0为工作方式1 ;装入定时器初值;设置T0允许中断CPU开中断;启动T0;等待中断AJMP T0INT ORG 0100HMAIN : MOV TMOD , #01HMOV TH0 , #0D8 HMOV TL0 , #0CC H SET

10、B ET0SETB EASETB TR0 SJMP $中断服务程序;ORG 0300HT0INT : CPL P1.0; P1.0取反MOV TH0 , #0D8H ;重新装入定时初值MOV TL0 , #0CCHRETI注:SETB ET0SETB EA这两条指令可以等效为;设置T0允许中断;CPU开中断MOV IE , #82H。6.3.3工作方式2定时器/计数器0方式2的逻辑结构如图6.4所示。工作方式寄存器 TMOD中的M1M0为:10定时器/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数 器TH和TL。此时,定时器/计数器构成了一个能重复置初值的 8位计数器。其中,TL

11、用作8位计数器,TH用来保存计数的初值。每当TL计满溢出时, 自动将TH的初值再次装入TL 01 .工作在定时方式C/ = 0,定时器对机器周期计数。定时时间的计算公式为:或定时时间=(28 -计数初值)X机器周期若晶振频率为12MHz,则最短定时时间为2SETB TR0;启动T0计数LOOPl: JBC TF0, PTF01 ;查询 T0 溢出标志,TF0= 1 时转移,且TF0= 0(查P3.4负跳变)SJMP LOOPlPTF01: CLR TR0;停止计数MOV TMOD , #02H ; T0 方式 2,定时MOV TH0 , #06H; T0 定时 500 y 初值MOV TL0

12、, #06H- (28- 1)总/12) 10一6X12= 1 ys最长定时时间为(28- 0) X( 1/12) X10- 6H2= 256 ys2工作在计数方式C/二1,8位计数器对外部输入信号进行加1计数。计数值的范围是1労=256 (个外部脉冲)。【例6.8】利用T0方式2实现以下功能:当T0(P3.4)引脚每输入一个负脉冲时,使 P1.0输出一个500ys的同步脉冲。 设晶振频率为6MHz,请编程实现该功能。其波形如图 6.5所示。图6.5例6.6波形图首先选T0为方式2,外部事件计数方式。当P3.4引脚上的电平发生负跳变 时,T0计数器加1,溢出标志TF0置1;然后改变T0为500

13、 ys定时工作方式, 并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0引脚恢复输出高电平。根据题目要求方式控制字TMOD是:计数时:(TMOD) = 0000 0110B = 06H定时时:(TMOD) = 0000 0010B = 02H(2)计算初值机器周期 T = 12/fosc = 12/6MHZ =2 ys计数初值=(256 - X) = (256 - 1) =255=0FFH, (TH0)=(TL0)=0FFH定时时:计数个数 X = T / Tm= 500 y42y s =250定时初值=256 - X = 256 - 250 = 6,(TH0) = (TL0) = 0

14、6H(3) 编程方法采用查询方法START : MOV TMOD,#06H; T0方式2,外部计数方式MOV TH0 , #0FFH ; T0 计数初值MOV TL0 , #0FFHSETB TRO ;启动定时 500 ysL00P2: JBC TFO, PTF02 ;查询溢出标志,定时到 TFO=l转移, 且TFO= 0(第一个500卩到否?)SJMP L00P2PTF02: SETB P1 ; P1.0置 1(到了第一个 500 卩 s)CLR TR0;停止计数SJMP START634工作方式3工作方式寄存器TMOD中的M1M0为:11。工作方式3仅对定时器/计数器 0有效,此时,将16

15、位的计数器分为两个独立的 8位计数器TH0和TL0。当定 时器/计数器0工作在方式3时,定时器/计数器1只能工作在方式02,并且工 作在不需要中断的场合。在一般情况下,当定时器/计数器1用作串行口波特率发生器时,定时器/计 数器0才设置为工作方式3。此时常把定时器/计数器1设置为方式2,用作波特 率发生器。定时器/计数器0在方式3下的逻辑结构如图6.6所示。【例6.9】设某用户系统中已使用了两个外部中断源, 并置定时器T1工作在 方式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。fosc=12MHz。(1)确定工作方式T0方式3下,TL0作计数用,而TH0可用作8位的定时器,定时控制P1.0 引脚输出5kHz的方波信号。T1为方式2,定时。TMOD 是:0010 0111B = 27H(2)计算初值TL0初值:FFH,TH0初值X0计算如下: P1.0的方波频率为5kHz,故周期T = 1/(5kHz)=0.2ms=200 ys用TH0定时100yS寸,X0 = 256 - 100X12/12=156(3)程序如下:MOV TMOD,#27H; T0为方式3,计数;T1为方式2,定时MOV TL0 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论