定时器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2个16位定时器实际上都是16位加1计数器。T0由2个8位持殊功能寄存器TH0和
TL0构成,T1由TH1和TL1构成。
2.每个机器周期使定时器(T0或T1)的数值加1直至计计数满产生溢出。
3.设置为计数工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。
4.当输入脉冲信号产生由1至0的下降沿时,定时器的值加1
5.检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一
6.要求电平保持时间至少是一个完整的机器周期
7.不管是定时工作方式还是计数方式,定时器T0或T1在对内部时钟或对外部事件计数
时,不占用CPU的时间,除非定时器/计数器溢出,才可能中断CPU的当前操作。
8.由软件写入TMOD和TCON两个八位寄存器,用来设置T0或T1的工作模式和控制功
能
9.定时器控制寄存器TCON除可字节寻址外,各位还可位寻址
10.工作模式寄存器TMOD(89H)
红色的是定时器T1,黄色的是定时器T0
★C/T=0,设置为定时方式。
定时器计数805l片内脉冲,亦即对机器周期计数。
★C/T=1,设置为计数方式,
计数器的输入是来自T0(P3.4)或Tl(P3.5)端的外部脉冲。
GA TE=0时,只要用软件使TR0(或TRl)置1就启动了定时器,而不管INT0(或INT1)的电平是高还是低。
GA TE=l时,只有当INT0(或INT1)引脚为高电平且由软件使TR0(或TRl)置1时,才能启动定时器工作。
TMOD不能位寻址,只能用字节设置定时器工作方式;
低半字节设定T0,高半字节设定T1。
11.
12.模式0
★模式0是选择定时器(T0或T1)高8位加低5位的—个13位定时器/计数器。
★在这种模式下,16寄存器(TH0和TL0)只用13位,其中TL0的高3位末用,其余位占整个13位的低5位,TH0占高8位。
★当TL0的低5位溢出时向TH0进位而TH0溢出时向中断标志位TF0进位(硬件置位TF0),并申请中断。
★T0溢出否可查询TF0是否置位,以产生T0中断。
★C/T=0时,控制开关接通振荡器十二分频输出端,就是定时工作方式。其定时时间为:t=(213一T0初值)×振荡周期×12
★当C/T=1时,控制开关使引脚T0(P3.4)与13位计数器相连,外部计数脉冲由引脚T0〔P3.4〕输入,当外部信号电平发生“1”到“0”跳变时.计数器加1,这时,T0成为外部事件计数器。这就是计数工作方式。
★GA TE=0时,使或门输出A点电位为常“1”,或门被封锁,于是,引脚INT0输入信号无效。这时或门输出的常“1”打开与门,B点电位取决于TR0状态,于是由TR0一位就可
控制计数开关K开启或关断T0。
若软件使TR0置1,便接通计数开关K,启动T0在原值上加1计数,直至溢出。溢出时,13位寄存器清0,TF0置位,并申请中断,T0仍从0重新开始计数。
若TR0=0。则关断计数开关K,停止计数。
★当GATE =1时,A点电位取决于(P3.4)引脚的输入电平。仅当(P3.4)输入高电平时TR0=l 时,B点才是高电平,计数开关K闭合T0开始计数,当INT0由1变0时,T0停止计数。这一特性可以用来测量在(P3.4)端出现的正脉冲的宽度。
13.模式1
★该模式是一个16位定时器/计数器。
其结构与操作几乎与模式0完全相同,唯一的差别是:在模式1中,寄存器TH0和TL0是以全16位参与操作,
★用于定时工作方式时,定时时间为:
t=(216一T0初值) ×时钟周期×12
★用于计数工作方式时,计数长度为216=65536(个外部脉冲)
14.模式2
★模式2把T0(或T1)配置成—个可以自动重装载的8位定时器/计数器。
★TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重装载到TL0中。
★这时16位的计数器被拆成两个8位;
TL0用作8位计数器,TH0用以保持初值。
★在程序初始化时,TL0和TH0由软件赋予相同的初值。
★—旦TL0计数溢出,置位TF0,并将TH0中的初值再自动装入TL0,继续计数,循环重复。
★用于定时器工作方式时,其定时时间(TF0溢出周期)为;
t=(28—TH0初值)×振荡周期×12
★用于计数器工作方式时,最大计数长度(TH0初值=0)为:
28=256(个外部脉冲)。
★这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。特别适用作串行口波待率发生器。
15.模式3
★操作模式3对T0和T1是大不相同的。
★若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器。
其中TL0用原T0的各控制位、引脚和中断源。即C/T、GA TE、TR0、TF0和T0 (P3.4)引脚、(P3.2)引脚。
★TL0除仅用8位寄存器外,其功能和操作与模式0(13位计数器)、模式1(16位计数器)完全相同。
TL0也可工作为定时器方式或计数器方式。
★TH0只可用作简单的内部定时功能,它占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TRl的控制。
★定时器T1无操作模式3状态。
16.定时工作过程
17.定时器的工作方式:
方式0:13位定时计数器
注意:TL0的低5位和TH0共同组成
方式1:16位定时计数器
方式2:自动重装入的8位定时计数器
溢出后(TF0=0)由TH0→TL0
方式3:T0成为两个独立的8位计数器
TL0作为定时计数器;TH0仅作定时器用
TL0的控制用原T0的,TH0用原T1的控制位
T1工作在方式0~2,溢出时送串行口,经常作为串行口波特率发生器
18.计数器初值:
设计数模值为M,计数初值设定为TC,计数器计满为零所需的计数值为C,则:TC=M-C (M=213,216,28)
定时器初值:T=(M-TC)T机器
19.编程方式
采用查询方式:程序一直检测TF0(TF1),若TF0=1(TF1=1),说明定时时间到或计满数采用中断方式:程序初始化时,设置定时器溢出中断允许后,内部硬件自动检测到TF0=1(TF1=1)时,自动响应中断,进入中断服务程序。
20.例1 选用T1方式0产生500US的定时,在P1.1输出周期为1MS的方波; FOSC=6MHZ 注意:T0不用时的处理,一般置0方式,禁止进入方式3.
初值计算:T=500US=(213-TC)*2US,TC=7942
TC=7942D=8F06H
BEGIN:MOV TMOD,#0
MOV TL1,#06H
MOV TH1,#0F8H
SETB TR1
LOOP:JBC TF1,PF0
SJMP LOOP
PF0:MOV TL1,#06H
MOV TH1,#0F8H
CPL P1.1
AJMP LOOP
21.几种工作方式的最大定时时间
若TC=0,定时时间为最大,设FOSC=12MHZ,几种工作方式下的最大定时时间为:
方式0:TMAX=8.192MS;
方式1:TMAX=65.536MS;
方式2、3:TMAX=0.256MS;
22.例2 从P3.4T0输入低频脉冲,要求该脉冲每发生一次跳变时由P1.0输出一个500US的
负脉冲,与此同时由P1.1输出一个宽为1MS的正脉冲.
分析先设T0为计数方式,当外部脉冲来一个负跳变时,计数加1,并产生溢出,TF0=1;检测到TF0=1时,即可设定T1为定时方式;
T0设为方式2;初值设为0FFH即加1即刻产生溢出.