定时器/计数器的结构及工作原理是什么
扫描二维码
随时随地手机看文章
单片机定时器其实跟我们平时常说的计数器,是同一个电子元件,只不过计数器记录的是单片机外部情况,所接收的也是外部脉冲,而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件。
二、单片机定时器的类型
在单片机中,分为软件定时器,不可编程硬件定时器,可编程定时器。
1、软件定时:CPU每执行一条指令时,是需要固定时间的,所以,通过执行空指令可以达到延时的效果,这样子做的代价是占用CPU时间,所以一般很少这么做。
2、不可编程硬件定时器:是由电路和硬件来完成定时功能的,一般采用基本电路,外接定时部件(电阻和电容),通过改变电阻的阻值和电容的电容值来修改定时值,一旦确定后件不能通过软件修改,这样子做的优点是不需要占用CPU时间。
3、可编程定时器:通过软件来确定定时值及其范围,可编程定时器功能强大,灵活性高。这是本文详细讲解的定时器。
MCS 51 单片机内部带有两个 16 位定时器/计数器(8052 则有 3 个), 以及一个全双工的异步通信串行接口,这给用户带来了极大的方便。本文介绍 8051 系列单片机内部定时器/计数器和串行口的结构及工作原理。
定时器/计数器的结构及工作原理
定时器/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。
定时器/计数器的基本结构如图 6.1 所示。
图 6.1 定时器/计数器结构框图
图中,基本部件是两个 8 位的计数器,其中 TH1 、TL1 是 T1 的计数器,TH0 、TL0 是 T0 的计数器。TH1 和 TL1 、TH0 和 TL0 构成两个 16 位加法计数器,它的工作状态及工作方式由定时器/计数器的工作方式寄存器 TMOD 及定时器/计数器控制寄存器 TCON 的各位决定。工作状态有定时和计数两种 , 由 TMOD 中的一位控制 。工作方式有方式 0~3 共四种 ,由 TMOD 中的两位编码决定 。TMOD 和 TCON 的内容 由软件写入。定时器/计数器的输出是加法计数器的计满 出信号,它使 TCON 的某位(TF0 或 TF1) 置 1,作为定时器/计数器的溢出中断标志。
当加法计数器的初值被设置,用指令改变 TMOD 和 TCON 的 内容后,就会在下一条 指令的第一个机器周期的 S1P1 时按设定的方式自动进行工作。
工作方式在后面讨论,这里先讨论定时和计数工作状态。在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经 12 分频后得到的,所 以定时器可看做是对计算机机器周期的计数器(因为每个机器周期包含 12 个振荡周期,故每个机器周期定时器加 1 ,可以把输入的时钟脉冲看成机器周期信号), 故其频率为晶振频率的 1/12 。如晶振频率为 12 MHz,则定时器每接收一个输入脉冲的时间为 1 μs 。
当它用作对外部事件计数时,接相应的外部输入端 T0(P3.4) 或 T1(P3.5)。 在这种情况下 ,当检测到输入端的电平由高跳变到低时,计数器就加 1(它在每个机器周期 的 S5P2 时采样外部输入 ,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加 1)。 加 1 操作发生在检测到这种跳变后的一个机器周期中的 S3P1 ,因此需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的 1/24 。这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。
这里要注意的是:加法计数器是计满溢出时才申请中断,所以在给计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值,设 最大值为 M,计数值为 N,初值为 X,则 X 的计算方法如下:
计数状态:X=M-N
定时状态:X=M-定时时间/T
其中 T=12÷晶振频率