第 8章定时器 /计数器定时器 0与定时器 1的特性8.1
与定时器 0和定时器 1相关的寄存器8.2
T0和 T1模块的电路结构与工作原理8.3
定时器 28.5
定时器 /计数器的 4种工作方式8.4
定时器 /计数器的初始化编程与应用举例8.6
要实现定时或延时控制,有 3种主要方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。
软件定时,即让机器执行一个程序段,这个程序段本身没有具体的执行目的,
但由于执行每条指令都需要时间,则执行一个程序段就需要一个固定的时间。
不可编程的硬件定时可以采用小规模集成电路器件如 555,外接定时部件 ——电阻和电容构成。
可编程定时器电路的定时值及其定时范围,可以很容易地由软件来确定和改变。
80C51单片机有两个 16位定时器 /计数器寄存器,Timer0( T0定时器 0)与
Timer1( T1定时器 1)或统称为 Tn
( n=0,1)。 80C52除这样的两个定时器 /计数器外还增加了 1个 Timer2( T2定时器 2)。
所有这 3个都能配为定时器或事件计数器。
8.1 定时器 0与定时器 1的特性
具有两种“功能模式”:“定时器功能模式”,对单片机的内部晶体振荡器信号计数,由于振荡器周期固定、准确,
故计数值即为定时值;“计数器功能模式”,对外部信号计数。
具有 4种工作方式:
13位计数寄存器;
16位计数寄存器;
8位自动重装入初始值计数器;
表 8-1 与 T0和 T1相关的寄存器
8.2 与定时器 0和定时器 1相关的寄存器
1,定时器方式寄存器 TMOD
TMOD是一个不可位寻址的寄存器,用于同时设置 Tn的功能模式与工作方式以及门控信号 。 其高 4位与低 4位相同,高 4位用于设置 T1,低 4位用于设置 T0。
图 8-1 定时器 /计数器方式控制寄存器 TMOD
M1 M0 工作方式 说 明
0 0 方式 0
13位计数器,TL0用作 5位预分频器(为了与早期的 8048
兼容)
0 1 方式 1
16位计数器,无预分频器
1 0 方式 2
自动重装入 8位计数器。当 TLx累计溢出时,将 THx中的预定值重装入至 TLx
1 1 方式 3
T0此时作为两个 8位定时器 /计数器。 TL0作为一个 8位定时器 /计数器,由 T0的控制位来控制; TH0作为另一个 8位定时器 /计数器,由 T1的控制位来控制。在这种方式下,
T1关闭不工作表 8-2 工作方式定义
2.定时器 /计数器控制寄存器 TCON
定时器 /计数器控制寄存器是一个可位寻址的寄存器,其中高 4位与两个定时器 /计数器工作方式相关(都以,T”打头);低 4
位用于外部中断控制。如图 8-2所示。
图 8-2 定时器 /计数器控制寄存器 TCON
8.3 T0和 T1模块的电路结构与工作原理图 8-3 定时器 /计数器的方框图图 8-4 定时器 /计数器电路结构图
8.3.1 循环累加计数寄存器
定时器 /计数器的核心部件是一个 16位宽(由 THx与 TLx构成)的循环累加计数寄存器(简称“计数寄存器”)。
它由脉冲信号的下降沿触发,每输入一个脉冲信号,计数器就加 1,其最大的计数值为 216=65536。在累加计数到 FFFFH
之后,下一次的加 1脉冲动作,将使计数寄存器的值返回到 0000H,同时最高位产生溢出并使标志位 TFx置 1。
8.3.2 脉冲源选择电路
1.定时器功能模式
当 C/=0,Tx模块被设定为定时器模式,
脉冲信号源取自于芯片内部的机器周期信号(即系统时钟的 12分频,fOSC/12)。
在定时器功能模式下,计数寄存器可以随时读出或写入。在 Tx开始一个新的定时轮回之前,一般需要往计数寄存器中写入一个特定初值(或自动重装入)。
显然,定时器的定时时间与系统的时钟振荡器工作频率有直接关系。一个计数脉冲等于一个机器周期( TM),即等于 12
个时钟周期。
因此,当晶体频率为 12MHz时,一个计数脉冲的周期为 1?s;而当晶体频率为
6MHz时,即计数脉冲的周期为 2?s。这就是经常把系统时钟选定为 12 MHz或 6 MHz
的主要原因。
2.计数器功能模式
当 C/=1时,Tx模块被设定为计数器模式,计数脉冲信号源来自于芯片外部引脚
Tx,输入信号的下降沿(也称“负跳变”)
使计数器计数,该信号是由外部触发事件产生的。当 Tx工作于计数器模式下,计数寄存器也可以随时读出或写入。在 Tx开始一个新的计数轮回之前,一般需要往计数寄存器中写入一个预定初值。
定时器 /计数器模块对于引脚 Tx上的信号在每个机器周期都要扫描一次。如果一个机器周期扫描到的值为 1,下一个机器周期扫描到为 0,则作为一次有效触发信号。
显然,检测一个由 1变 0的跳变信号至少需要 2个机器周期。因此,由外部事件形成的触发脉冲的最高频率为机器周期信号频率的 1/2。
8.4 定时器 /计数器的 4种工作方式
1.方式 0( 13位计数寄存器)
当 M1M0=00时,定时器 /计数器 Tx工作在方式 0。在这种方式下,每一个定时器都具有被 32除的预放大的 8位计数器,此 13位计数器是为了与 MCS-48兼容。图 8-5所示为 T1在方式 0时的操作。
图 8-5 定时器 /计数器 1方式 0,13位计数器
2.方式 1( 16位计数寄存器)
当置 M1M0=01时,就把定时器计数器
Tx置为方式 1,如图 8-6所示。
图 8-6 工作在方式 1的 Tx
3.方式 2(自动重装入 8位计数器寄存器)
当置 M1M0=10时,就使 Tx工作于方式 2。
图 8-7 定时器 /计数器 1方式 2,8位自动重装入
4.方式 3
当置 M1M0=11时,把 T0置为方式 3。
图 8-8 工作于方式 3的 T0
图 8-9 T0工作于方式 3时 T1的可能工作方式
8.5 定时器 2
图 8-10 定时器 /计数器 2控制寄存器 T2CON
图 8-11 定时器 2的捕获方式图 8-12 定时器 2在自动重装入方式
8.6 定时器 /计数器的初始化编程与应用举例
t=1/f(?s)
co=(int)t/2
lo=(8192–co)%32
hi=(8192–co)/32
其中的符号为:
f—时钟频率;
t—方波宽度,以?s表示;
co—定时器所计数的次数;
lo—计数初值低字节;
hi—计数初值高字节。
把喇叭接至 P3.4引脚,下列程序运行后,喇叭发出音阶,1”、,2”、,3”…… 。