定时器计数器工作方式寄存器TMOD
单片机 第五章2 单片机的定时器计数器

若晶振频率为6MHz,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为:[213 –(213 -1)]x2μs=2μs 最大定时时间为:[213 –0] x2μs=16384μs =16.384ms
2、 方式1 (T1,T0) 当M1M0两位为 01时,定时 /计数器被选为工作方式 1,16位计数器,其逻辑结构 如图 所示。
8FH TCON TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
TF1(TCON.7, 8FH位)----定时器T1中断请求溢出标志位。 TF0(TCON.5, 8DH位)----定时器T0中断请求溢出标志位。 TR1(TCON.6, 8EH位)----T1运行控制位。 0:关闭T1;1:启动T1运行。只由软件置位或清零。 TR0(TCON.4, 8CH位)----T0运行控制位。 0:关闭T0;1:启动T0运行。只由软件置位或清零。
1、 方式0 (T1,T0)
当 M1M0两位为 00时,定时 /计数器被选为工作方式 0, 13位计数器,其逻辑结 构如图所示。
振荡器 ÷12 C/ T = 0 TL0 低5位 C/ T = 1 控制 T0 端 TR0 GATE INT0 端 TH0 高8 位 TF0 中断
+
在方式0下,计数工作方式时,计数值的范围是: 1~8192(213 ) 定时工作方式时,定时时间的计算公式为: (213一计数初值)×晶振周期×12 或(213一计数初值)×机器周期
例4:用定时器l 以工作方式2计数,每计100次进行累计器加1操作.
(1)计算计数初值. 28—100=156D=9CH TH1=9CH,TL1=9CH TMOD寄存器初始化:MlM0=10,C/T=1,GATE=0 因此 TMOD=60H (2)程序设计序设计
单片机寄存器_MCS-51单片机特殊功能寄存器详解

1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。
A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。
A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。
使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。
使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。
定时器计数器标志位

TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能; TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
工作方式寄存器TMOD工作方式寄存器TMOD 用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
GATE :门控位。
GATE =0时,只要用软件使TCON 中的TR0或TR1为1,就可以启动定时/计数器工作;GATA =1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
即此时定时器的启动多了一条件。
C/T :定时/计数模式选择位。
C/T=0为定时模式; C/T=1为计数模式。
M1M0:工作方式设置位。
定时/计数器有四种工作方式,由M1M0进行设置。
控制寄存器TCONTCON 的低4位用于控制外部中断,已在前面介绍。
TCON 的高4位用于控制定时/计数器的启动和中断申请。
▪ TF1(TCON.7):T1溢出中断请求标志位。
T1计数溢出时由硬件自动置TF1为1。
CPU响应中断后TF1由硬件自动清0。
T1工作时,CPU 可随时查询TF1的状态。
所以,TF1可用作查询测试的标志。
TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
▪ TR1(TCON.6):T1运行控制位。
TR1置1时,T1开始工作;TR1置0时,T1停止工作。
TR1由软件置1或清0。
所以,用软件可控制定时/计数器的启动与停止。
▪ TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
▪ TR0(TCON.4):T0运行控制位,其功能与TR1类同。
方式2方式2为自动重装初值的8位计数方式。
计数个数与计数初值的关系为: 工作方式2特别适合于用作较精确的脉冲信号发生器8X=2-N初始化程序应完成如下工作:▪ 对TMOD 赋值,以确定T0和T1的工作方式。
▪ 计算初值,并将其写入TH0、TL0或TH1、TL1。
▪ 中断方式时,则对IE 赋值,开放中断。
单片机TMOD说明

单片机定时器工作模式TMOD设置TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
其格式为:TMOD结构图===================================================================== ============其中低四位定义定时器/计数器T0,高四位定义定时器/计数器T1,各位的说明:Ⅰ,GATE——门控制。
●GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。
当INT0引脚为高电平时TR0置位,启动定时器T0;当INT1引脚为高电平时TR1置位,启动定时器T1。
●GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
Ⅱ,C/T——功能选择位C/T=0时为定时功能,C/T=1时为计数功能。
置位时选择计数功能,清零时选择定时功能。
Ⅲ,M0、M1——方式选择功能由于有2位,因此有4种工作方式================================================================ M1M0 工作方式计数器模式 TMOD(设置定时器模式)0 0 方式0 13位计数器 TMOD=0x000 1 方式1 16位计数器 TMOD=0x011 0 方式2 自动重装8位计数器 TMOD=0x021 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10没有用到的定时器一般设置为0================================================================初始化定时器0TH0=(65535-50000)/256;Tl0=(65535-50000)%256;在51单片机中,如果你的定时器0选择的是“方式一”,则表示定时器0的计数器从0开始加到50000,其中每加一次的时间为你的晶振频率的倒数。
单片机定时器与计数器

定时器计数器原理及应用一、知识点1、定时器/计数器的结构2、定时器和计数器两种工作模式3、工作方式控制寄存器TMOD4、定时器/计数器控制寄存器TCON5、定时器/计数器的4种工作方式方式0:13位计数器方式1:16位计数器方式2:8位可自动重装初值方式方式3只适用于T0,T1不能工作在方式36、定时器/计数器的初始化及编程实现(1)设置TMOD寄存器(2)计算定时器T0的计数初值X(3)设置IE寄存器(4)启动和停止定时器7、定时器的单次最大定时时间:2M*12/晶振频率9、定时器应用(方式1、2;编程:中断方式、查询方式)10、计数器应用(方式1、2;编程:中断方式、查询方式)二、复习题(一)判断题1、在MCS-51单片机内部结构中,TMOD为模式控制寄存器,主要用来控制定时器的启动与停止。
(F)2、在MCS-51单片机内部结构中,TCON为控制寄存器,主要用来控制定时器的启动与停止。
(T)3、MCS-51单片机的两个定时器的均有两种工作方式,即定时和计数工作方式。
(T)4、MCS-51单片机的TMOD模式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作方式及操作模式。
(T)5、定时器/计数器T1于定时模式,工作于方式2,则工作方式字为20H。
(T)6、定时器/计数器T1于计数模式,工作于方式1,则工作方式字为50H。
(T)7、单片机8051的定时/计数器是否工作可以,通过外部中断进行控制。
(T)8、定时/计数器工作于定时方式时,是通过8051片内振荡器输出经12分频后的脉冲进行计数,直至溢出为止。
(T)9、定时/计数器工作于计数方式时,是通过8051的P3.4和P3.5对外部脉冲进行计数,当遇到脉冲下降沿时计数一次。
(T)10、定时/计数器在工作时需要消耗CPU的时间。
(F)11、定时/计数器在使用前和溢出后,必须对其赋初值才能正常工作。
(F)12、特殊功能寄存器SCON,与定时器/计数器的控制无关。
定时器 计数器的结构、特殊功能寄存器TMOD、TCON

TC=1微秒
可见,初值越小,定时时间越长。
实验27 初值与定时时间的关系
因为 脉冲个数=溢出值-初值=216-初值 ①
计数脉冲的频率fc = 振荡频率fosc÷12
所以
定时时间=脉冲个数×计数脉冲的周期
=(216-初值)×1/计数脉冲的频率fc =(216-初值)×12/振荡频率fosc 由②式可得: … ②
5. 1-4 定时器/计数器的结构、特殊功பைடு நூலகம்寄存器TMOD、TCON
教学目的
1、单片机定时/计数器的结构及工作原理。 2、掌握初值的计算公式,理解初值、满值 和溢出值等概念。 3、掌握专用寄存器TMOD、TCON 。
教学重点
1、了解定时/计数器组成框图; 2、掌握定时/计数器的初值计算公式。
教学难点
1、GATE 门控位 GATE=0 以运行控制位TR启动定时器 GATE=1 以外中断请求信号(/IMT0或/INT1)启动定时器 2、C/T 定时方式或计数方式选择位 C/T=0 定时工作方式 C/T=l 计数工作方式(采用外部引脚的输入脉冲为计数脉冲) 3、M1、M0 工作方式选择位 M1、M0=00 方式0 M1、M0=01 方式1 M1、M0=10 方式2 M1、M0=11 方式3
MCS-51单片机的特殊功能寄存器

MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR = DPH + DPL。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。
分成DPL(低8位)和DPH(高8位)两个寄存器。
用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。
89C51的定时器、计数器解析

(2)计算T1初值
设T1的初值为X: 则 (28-X)×2×10-6=5×10-4
X=28-250=6=06H
(3)程序设计
ORG 0000H
RESET: LJMP MAIN ;复位入口转主程序
ORG 000BH
LJMP IT0P ;转T0中断服务程序
ORG 001BH
LJMP IT1P
;转T1中断服务程序
SETB F0
;建立T0产生中断的标志
RETI
IT1P: CPL P1.0
;T1中断服务,P1.0位取反
RETI
END
26
4、工作方式 3
两个独立的计数器
TL0使用T0的资源 (TR0、TF0、INT0、 GATE、G/T)
TH0被固定为1个独 立的8位定时器(无 外部计数功能),并 注:当T1用作串行口的波特率发生器时,T0才工作在方式3。 使用T1的资源(TR1、 TF1)
7
三、定时计数器的控制寄存器
1、工作方式寄存器TMOD
控制T1
控制T0
D7 D6 D5 D4 D3 D2 D1 D0
字节
TMOD GATE1 C/ T1 M1 M0 GATE0 C/T0 M1 M0 地址
89H
00:方式0
门控位 定时/计数选择
方式选择 0:定时器 1:计数器
01:方式1 10:方式2 11:方式3
✓采用可编程芯片定时:这种定时方法是通过对系统时钟脉冲的计数来 实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使 用起来既灵活有方便。
结论:MCS-51单片机把定时电路集成在芯片中,称之为定时器/计数 器。
8051型单片机有两个定时/计数器,分别称为定时器/计数器0和定 时器/计数器1。
单片机中常用寄存器的功能介绍

1.定时器/计数器控制寄存器TCON定时器/计数器控制寄存器TCON的地址为88H,可以位读写,控制T0、T1的启动和停止计数,同时包含了T0、T1是否溢出的状态。
其功能如下:TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0⑴TF1是定时器T1的溢出申请位。
定时器T1被允许计数以后,从初值开始加1计数,当产生溢出时置TF1=1,向CPU请求中断。
到CPU响应该中断后才由硬件自动清0,也可以由查询程序清0(软件清零)。
⑵TF0是定时器T0的溢出申请位。
其作用类同于TF1。
TF0实际上是T0中断触发器的一个输出端。
⑶IE1是外部中断INT1请求标志位。
当CPU检测到在INT1管脚上出现低电平或脉冲下降沿的外部中断信号时,由硬件置位IE1=1,请求中断。
CPU响应中断并运行中断服务程序后,如脉冲边沿触发方式,则IE1位被硬件自动清0。
⑷IT1是外部中断INT1请求控制位,由程序来置1或清0。
IT1=0时,外部中断INT1被设置为电平触发方式,当INT1输入低电平时,置位IE1,申请中断,直到该中断被CPU响应。
同时,在该中断服务程序执行完之前,外部中断源有效电平必须被撤消,否则将产生另一次中断。
IT1=1时,外部中断1为边沿触发方式,CPU如果采样高电平到低电平跳变,则硬件自动对IE1置1,申请中断。
CPU响应中断后,IE1由硬件自动清0。
⑸IE0是外部中断INT0请求标志位。
⑹IT0是外部中断INT0触发方式控制位。
定时器计数器结构框图2.定时器/计数器方式寄存器TMOD选择定时器/计数器T0、T1的功能和工作方式,字节地址为89H。
TMOD D7D6D5D4D3D2D1D089H GATE C/T M1M0GATE C/T M1M0说明:M1、M0:工作方式选择位,用于对T0的四种工作方式,T1的三种工作方式进行选择。
单片机定时器的使用

; MOVIE, #9FH ;
TL0 溢出中断服务程序(由 000BH单元转来):
TL0INT: MOV TL0, #0FFH
…
; 外部引脚 T0 引起中断处理程序
RETI
TH0 溢出中断服务程序(由 001BH转来):
四、 方式 3
定时器 T0 工作在方式 3 时是 2 个 8 位定时器 /计数器。 且TH0 借用了定时器 T1 的溢出中断标志TF1和运行控制位 TR1。
例 3 假设有一个用户系统中已使用了两个外部中断源, 并置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要求 再增加一个外部中断源, 并由 P1.0 口输出一个 5K Hz的方波 (假设晶振频率为 6 MHz)。
SETB EA ; MAIN: ACALL DISP ; 主程序,
…
ORG 0A00H
T1INT: INC R0 ;
RETI
DISP: …
;
RET
三、 方式 2
方式 2 是定时器自动重装载的操作方式, 在这种方式下, 定时器 0 和 1 的工作是相同的, 它的工作过程与方式 0、 方式 1 基本相同, 只不过在溢出的同时, 将 8 位二进制初值 自动重装载, 即在中断服务子程序中, 不需要编程送初值, 这 里不再举例。定时器 T1 工作在方式 2 时, 可直接用作串行 口波特率发生器,
四、 方式 3 图 6.6 方式 3(两个 8 位独立计数器)
在工作方式3模式下,定时/计数器0被拆成两个独立 的8位计数器TL0和TH0。其中TL0既可以作计数器使用, 也可以作为定时器使用,定时/计数器0的各控制位和引脚 信号全归它使用。其功能和操作与方式0或方式1完全相同。 TH0就没有那么多“资源”可利用了,只能作为简单的定 时器使用,而且由于定时/计数器0的控制位已被TL0占用, 因此只能借用定时/计数器1的控制位TR1和TF1,也就是 以计数溢出去置位TF1,TR1则负责控制TH0定时的启动 和停止。
51单片机寄存器详解

定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。
TMOD:工作方式控制寄存器寄存器地址89H,不可位寻址。
位序 B7 B6 B5 B4 B3 B2 B1 B0位符号GATE C/T M1 M0 GATE C/T M1 M0GATE——门控位当=0时,以运行TR0(或TR1)启动或禁止定时器、计数器当=1时,以TR0*/INT0(或TR1*/INT1)启动或禁止定时器、计数器GATE=0 以TR0(TR1)启动定时器GATE=1 以INT0(INT1)启动定时器C/T=0 定时/计数工作方式选择位M1M0——工作方式选择位T2MOD:工作方式控制寄存器寄存器地址0C9H,不可位寻址------T2OE DCENT2OE:定时器2输出允许位,当=1时,P1.0/T2引脚输出连续脉冲信号DCEN:当=1时,T2配置成向上向下计数器A 主要完成三个功能:*确T0计数溢出标志位当计数器计数溢出时,该位置“1”。
使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。
使用中断方式时,此位作为中断申请标志位,进入中定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端)TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C 控制字的格式和含义a、 GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作; b、 C/T(TMOD.6) 分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器; d、 M1(TMOD.5),M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。
Timer Counter和TMOD

方式0:计满数值= 2^13 = 8192;
方式1:计满数值= 2^16 = 65536;
方式2:计满数值= 2^8 = 256;
对于方式2,如果要计10个脉冲值,则设初值为256-10。
方式0:最大定时间隔= 2^13 * 2 us = 16.384 ms;
方式1:最大定时间隔= 2^16 * 2 us = 131.072 ms;
方式2:最大定时间隔= 2^8 * 2 us = 512 us;
对于方式1,要求定时1ms,计数器初值为x,则有:
(2^16 - x)* 2 us = 1000 us,可求出x
GATE
C/T
M1
M0
GATE
CБайду номын сангаасT
M1
M0
高四位控制1,低四位控制0。各位意义如下:
GATE:为1时,对Timer/Counter1来说,启动受到双重控制,即RT1和/INT1同时为高;GATE为0时仅受TR0和TR1控制。
C/T:为1时,工作在Counter状态,计数通过T0(P3.4)和T1(P3.5)的负脉冲来触发;为0时工作在Timer状态,由内部振荡进行计时。
M1、M0:设计工作方式,
M1M0=00,满计数值为2^13,TL存低5位,TH存高8位;
M1M0=01,满计数值为2^16;
M1M0=10,满计数值为2^8,初值自动重装;
M1M0=11,(各资料上说的不一样);
3.Timer设定初值的方法
Timer工作时,对机器周期计数。如果fosc = 6 MHz,一个机器周期为12/fosc = 2 us,则:
Timer/Counter和TMOD
定时器 计数器的基本结构及工作原理

定时器计数器的基本结构及工作原理80C51单片机内部设有两个16位的可编程定时器/计数器。
可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。
在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
定时器/计数器的结构:从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。
其访问地址依次为8AH-8DH。
每个寄存器均可单独访问。
这些寄存器是用于存放定时或计数初值的。
此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。
这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。
TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
定时计数器的原理:16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。
当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。
因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。
如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×1/12=1μs这是最短的定时周期。
若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。
计数器在每个机器周期的S5P2期间采样引脚输入电平。
若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。
定时器计数器(TC)简介以及例子说明

定时器/计数器(T/C)简介一、定时器/计数器有关的特殊功能寄存器1. 计数数寄存器TH和TL计数器寄存器是16位的,计数寄存器由TH高8位和TL低8 位构成。
在特殊功能寄存器(SFR)中,对应T/C0为TH0和TL0,对应T/C1为TH1和TL1。
定时器/计数器的初始值通过TH1/TH0和TL1/TL0设置。
2. 定时器/计数器控制寄存器TCONTR0,TR1:T/C0,1启动控制位。
1——启动计数0——停止计数TCON复位后清“0”,T/C需受到软件控制才能启动计数,当计数寄存器计满时,产生向高位的进位TF,即溢出中断请求标志。
3. T/C的方式控制寄存器TMODT/C1 T/C0 C/T :计数器或定时器选择位。
1——为计数器0——为定时器GATE:门控信号1——T/C的启动受到双重控制,即要求TR0/TR1和INT0/INT1同时为高。
M1和M0:工作方式选择位。
(四种工作方式)4.定时器/计数器2(T/C2)控制寄存器TF2:T/C2益出标志——必须由软件清除EXF2:T/C2外部标志。
当EXEN2=1,且T2EX引脚上出现负跳变而引起捕获或重装载时置位,EXF2要靠软件来清除。
RCLK:接收时钟标志1——用定时器2 溢出脉冲作为串行口的接收时钟0——用定时器1的溢出脉冲做接收时钟。
TCLK:发送时钟标志。
1——用定时器2 溢出脉冲作为串行口的发送时钟0——用定时器1的溢出脉冲作发送时钟EXEN2:T/C2外部允许标志。
1——若定时器2未用作串行口的波特率发生器,T2EX端的负跳变引起T/C2的捕获或重装载。
0——T2EX端的外部信号不起作用。
TR2:T/C2运行控制位1——T/C2启动0——T/C2停止C/T2:计数器或定时器选择位1——计数器0——定时器CP/RL:捕获/重载标志。
1——若EXEN2=1,且T2EX端的信号负跳变时,发生捕获操作。
0——若定时器2溢出,或在EXEN2=1条件下T2EX端信号负跳变,都会造成自动重装载操作。
数字集成电路---计时器

定时器/计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。
定时和计数的本质是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,则记录一定个数的脉冲,其所需的时间是一定的,例如,输入脉冲的频率为2MHZ,则:计数2* 106 ---- 定时1秒。
因此,使用同一个接口芯片,既能进行计数,又能进行计时,统称为计时器/计数器。
(Timer/Counter简称T/C)。
计数器逻辑原理如图6-4所示。
主要构成:(1)控制寄存器;决定工作模式。
(2)状态寄存器;反应工作状态(可无,如8253无此寄存器)。
(3)初值寄存器;计数的初始值。
(4)计数输出寄存器;CPU从中读出当前计数值。
(5)计数器;执行计数操作,CPU不能访问。
工作原理:对CLK信号进行“减1计数”。
首先CPU把“控制字”,写入“控制寄存器”,把“计数初始值”写入“初值寄存器”,然后,定时/计数器按控制字要求计数。
计数从“计数初始值开始,每当CLK信号出现一次,计数值减1,当计数值减为0时,从OUT端输出规定的信号(具体形式与工作模式有关)。
当CLK信号出现时,计数值是否减1(即是否计数),受到“门控信号”GATE的影响,一般,仅当GATE有效时,才减1.门控信号GATE如何影响计数操作,以及输出端OUT在各种情况下输出的信号形式与定时/计数器的工作模式有关。
这里,应该指出如此三点。
803l单片机有2个16位的定时器/计数器:定时器0(T0)和定时器1(T1)。
T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。
作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。
由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。
TMOD

一、定时/计数器的结构定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
一、工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
其格式如下:GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
即此时定时器的启动多了一条件。
:定时/计数模式选择位。
=0为定时模式;=1为计数模式。
M1M0:工作方式设置位。
定时/计数器有四种工作方式,由M1M0进行设置。
TCON的低4位用于控制外部中断,已在前面介绍。
TCON的高4位用于控制定时/计数器的启动和中断申请。
其格式如下:▪TF1(TCON.7):T1溢出中断请求标志位。
T1计数溢出时由硬件自动置TF1为1。
CPU响应中断后TF1由硬件自动清0。
T1工作时,CPU可随时查询TF1的状态。
所以,TF1可用作查询测试的标志。
TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
▪TR1(TCON.6):T1运行控制位。
TR1置1时,T1开始工作;TR1置0时,T1停止工作。
TR1由软件置1或清0。
所以,用软件可控制定时/计数器的启动与停止。
▪TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
▪TR0(TCON.4):T0运行控制位,其功能与TR1类同。
定时/计数器应用举例初始化程序应完成如下工作:▪对TMOD赋值,以确定T0和T1的工作方式。
▪计算初值,并将其写入TH0、TL0或TH1、TL1。
▪中断方式时,则对IE赋值,开放中断。
定时器工作模式1

定时器⼯作模式1通过前⾯的定时器理论了解到,使⽤⼀个定时器,要经过下⾯四步:1、设置定时器/计数器的⼯作模式TMOD(常⽤的是模式1:TMOD=0x01);2、装⼊预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);3、如果⼯作在中断⽅式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;4、启动定时器/计数器:TR0/TR1=1;//1、设置定时器/计数器的⼯作模式TMOD(常⽤的是模式1:TMOD=0x01);//2、装⼊预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);//3、如果⼯作在中断⽅式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;//4、启动定时器/计数器:TR0/TR1=1;// 内容:通过定时让LED灯闪烁#include<reg52.h>sbit LED=P0^2; //定义LED端⼝//定时器初始化⼦程序void Init_Timer0(void){TMOD = 0x01; //使⽤模式1,16位定时器TH0=0x00; //给定初值,这⾥使⽤定时器最⼤值从0开始计数⼀直到65535溢出TL0=0x00;EA=1; //总中断打开 89C52必需要有ET0=1; //定时器中断打开TR0=1; //使⽤定时器0}main()//主程序{Init_Timer0();while(1);}//定时器中断⼦程序//interrupt和using都是C51的关键字。
C51中断过程通过使⽤interrupt关键字和中断号(0到31)来实现。
//using关键字⽤来指定中断服务程序使⽤的寄存器组。
//⽤法是:using后跟⼀个0到3的数,对应着4组⼯作寄存器。
void Timer0_isr(void) interrupt 1using1{TH0=0x00; //重新赋值TL0=0x00;LED=~LED; //指⽰灯反相,可以看到闪烁}65536 * 1us = 65.536ms,也就是说上⾯的程序每经过65.536ms改变P0^2的状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TMOD 在内存 RAM 中位于特殊功能寄存器区的 89H 处,其高 4 位用于设置定时
器/计数器T1 的工作方式,低 4 位用于设置定时器/计数器 T0 的工作方式。
由于 T0
和 T1 的用法很相似,所以,在此只结合 TMOD 的低 4 位讲解定时器/计数器 T0 的用法。
1、 GATE
当 GATE=0 时,定时器/计数器开始工作或停止工作不受 GATE 位的控制,而只受TCON寄存器中的 TR0 位控制,TR0=0 时定时器/计数器 T0 停止工作,而当 TR0=1 时定时器/计数器 T0 开始工作。
当 GATE=1 时,定时器/计数器 T0 工作的起停除了受 TCON 寄存器中的 TR0 位
控制外,还受单片机外部引脚 P3.2 的控制,只有该引脚为高电平且 TR0=1 这两个条
件同时满足时,定时器/计数器才开始工作,一般这种用法通常用来测量 P3.2 引脚上
正脉冲的宽度。
对于控制T1 方式字段中的 GATE 位和 T0 中的用法完全一样,只是当GATE 位为 1 时受单片机外部引脚P3.3 和 TCON 中 TR1 的控制。
2、 C/T
C/T 位决定 T0 工作在定时方式还是计数方式。
当 C/T=0 时,T0 工作在定时方式,此时由 TH0 和 TL0 组成的 16 位计数容器,这个容器会对晶振产生的脉冲再 12 分频后的脉冲进行计数,如果单片机外部接的是 12M 晶振,则 TH0 和 TL0 组成的 16 位
计数容器中的数据就会每隔 1 微妙自动加 1;
当 C/T=1 时,T0 工作在计数方式,由 TH0 和 TL0 组成的 16 位计数容器会对从单片机外部引脚 P3.4 输入单片机的脉冲进行计数,每输入一个脉冲,则 TH0 和 TL0
组成的 16 位计数容器中的数据会自动加 1。
如果 TMOD 高 4 位中的 C/T=0,表示 T1 工作在定时方式,而当 C/T=1表示 T1 工作在计数方式,计的是来自单片机外部引脚
P3.5 传入单片机的脉冲数。
当然无论是在 C/T=0 时定时器/计数器工作在定时方式,还是在 C/T=1 时定时器/计数器工作在计数方式,要想让 T0 开始工作,必须将 TCON 中的 TR0 设置为 1,如果想让 T0 停止工作,必须将 TCON 中的 TR0 设置为 0,即 TCON 中的 TR0 是控制定时器/计数器开始工作和停止工作的。
3、 M1和M0
M1 和 M0 两位都可以设置成 0 或 1,因此这两位有 4 种组合,这 4 种组合决定
了 T0 的计数容器 TH0 和 TL0 共同构成的 16 位计数容器中所计的脉冲数的变化规律。
具体见表 6-3。