本文主要学习定时器/计数器的基本结构。对结构的学习首先要明确定时器/计数器的功能,可参考第一节的内容来理解。目前常用的单片机中往往都配备了定时器/计数器。在at89s52芯片内包含有三个16位的定时器/计数器:t0、t1和t2,其核心是加1计数器。我们主要要求掌握t0和t1的结构和功能。学习中要注意从电路结构上来理解功能的实现。定时器/计数器方式寄存器tmod和定时器/计数器控制寄存器tcon是用以设定定时器/计数器的工作方式、定时或计数功能,控制启动或停止以及产生溢出中断的重要模块,应该对这两个寄存器中的逐位的定义和功能进行学习和掌握。
一、定时器/计数器的功能
at89s52单片机定时器/计数器的基本部件是两个8位的计数器(t1计数器分为高8位th1和低8位tl1,t0计数器的高8位是th0,低8位是tl0)。如图1所示。
图1 t0和t1的基本构成
定时器/计数器的核心是一个加1计数器,在作定时器使用时,它对机器周期进行计数,每过一个机器周期计数器加1,直到计数器计满溢出。
当它用作对外部事件计数时,计数器接相应的外部输入引脚t0(p3.4)或t1(p3.5)并在每个机器周期的s5p2时采样,当采样到1—0的负跳变时,计数器加1。
二、定时器/计数器的结构
at89s52单片机内部的定时/计数器的结构如图2所示。定时器t0由特殊功能寄存器tl0(低8位)和th0(高8位)构成,定时器t1由特殊功能寄存器tl1(低8位)和th1(高8位)构成。每个寄存器均可单独访问。
图2 定时器/计数器的内部结构
三、tmod和tcon
at89s52的定时器/计数器是一种可编程部件,在定时器/计数器开始工作之前,cpu必须将一些命令(控制字)写入定时/计数器。
例如:选择哪一个定时器/计数器在何种工作方式下工作?
是用作定时器计时功能还是用作计数器的计数功能?
是否启动定时器/计数器的运行?
……
这些设置的功能是通过对特殊功能寄存器tmod和tcon的设置来实现。在初始化过程中,要将工作方式控制字写入方式寄存器(初始化工作的一部分),工作状态字写入控制寄存器,cpu就会按设定的工作方式独立运行。
1.定时器/计数器方式寄存器tmod
定时器/计数器方式控制寄存器tmod在特殊功能寄存器中,字节地址为89h。tmod不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器/计数器0,高半字节定义为定时器/计数器1。复位时,tmod所有位均为0。tmod的格式
如下表所示。
d7
d6
d5
d4
d3
d2
d1
d0
gate
c/
m1
m0
gate
c/
m1
m0
t1方式控制字
t0方式控制字
m1、m0:工作方式选择位。用来定义定时器/计数器的四种工作方式。
c/:功能选择位:c/位为定时器方式或计数器方式选择位。c/=1时,为计数器方式;c/=0时,为定时器方式。
gate:门控制位,确定定时器的开启与关闭。当gate=0时,只要定时器控制寄存器tcon中的tr0(或tr1)被置1时,t0(或t1)被允许开始计数(tcon各位含义见后面叙述)。
当gate=1时,外部中断引脚或的输入电平控制t0或t1的开启与关闭。
2.定时器/计数器控制寄存器tcon
tcon是t0和t1的控制寄存器,它同时也用来锁存t0、t1的溢出中断请求源和外部中断请求源。tcon寄存器复位时为00h,可以进行位寻址。定时器/计数器控制寄存器tcon字节地址为88h。tcon寄存器各位定义如下表
d7
d6
d5
d4
d3
d2
d1
d0
tf1
tr1
tf0
tr0
ie1
it1
ie0
it0
用于外部中断
tcon中各标志位的功能是:
tf1(d7):定时器1溢出标志位。当t1计满溢出时,由硬件使tf1置1,申请中断。进入中断服务程序后,由硬件自动清0,在查询方式下用软件清0。
tr1(d6):定时器1运行控制位。tr1置1,启动定时器1;tr1置0则停止工作。tr1由软件置1或清零
tf0(d5):定时器0溢出标志。其功能及操作情况同tf1。
tr0(d4):定时器0运行控制位。其功能及操作情况同tr1。
ie1(d3):外部中断1中断请求标志。it1=1时,外部中断1引脚上的电平由1变0时,ie1由硬件置位,外部中断1请求中断。当cpu响应中断并转向该中断服务程序执行时,由内部硬件自动清0。
it1(d2):外部中断1()电平触发方式或者脉冲触发方式控制位。it1=1时,外部中断1为负边沿触发方式,引脚上的电平从高到低负跳变有效。it1=0时,外部中断1为电平触发方式。上输入低电平有效。
ie0(d1):外部中断0中断请求标志。如果it0置1,则当上的电平由1变0时,ie0由硬件置位。在cpu把控制转到中断服务程序时由硬件使ie0复位。
it0(d0):外部中断源0触发方式控制位,其含义同it1。
3.tmod和tcon的控制功能可以通过一个具体的电路结构来加强理解
图3tmod和tcon控制功能的实现
在图3中,清楚的表示了tmod和tcon中的控制位对工作方式、定时/计数模式、启动、溢出中断的控制的实现。