首页 理论教育 100ms长时间定时实验-单片机原理与应用实验指导书

100ms长时间定时实验-单片机原理与应用实验指导书

时间:2023-11-06 理论教育 版权反馈
【摘要】:实验原理1.51单片机定时器0的4种工作模式工作模式0。以12 MHz晶振为例:每秒钟可以执行1000000个机器周期,而定时器每次溢出最多65536个机器周期。对于计算初值小于最大时间间隔时,定时10 ms的定时器初值计算如下。实验源程序实验仿真电路实验图8-1100 ms长时间定时实验仿真图思考题1.对于通过多次反复定时累加完成长时间定时工作的定时器,在定时器每次重装初值过程中是否会产生延时?

100ms长时间定时实验-单片机原理与应用实验指导书

实验目的

(1)理解定时计数器的基本结构。

(2)了解单片机定时器C语言程序的设计和调试方法。

(3)掌握定时器初始化设计、初值计算以及长时间定时的设计。

实验仪器

单片机开发板、稳压电源、计算机。

实验原理

1.51单片机定时器0的4种工作模式

(1)工作模式0。

由TL0的低5位和TH0的全部8位共同构成一个13位的定时器/计数器,定时器/计数器启动后,定时或计数脉冲个数加到TL0上,从预先设置的初值(时间常数)开始累加,不断递增1,当TL0计满后,向TH0进位,直到13位寄存器计满溢出。TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求,并且定时器/计数器硬件会自动地把13位的寄存器值清零,如果需要进一步定时/计数,需要使用相关指令重置时间常数,并把定时器/计数器的中断标记TF0置0。

(2)工作模式1。

工作模式1是最常用的定时器工作模式。模式1与模式0几乎相同,唯一的区别就是,模式1中的寄存器TH0和TL0共同构成的是一个16位定时器/计数器,因此比模式0中的定时/计数范围更大。

(3)工作模式2。

工作模式2特别适用于较精确的脉冲信号发生器。这种模式又称为自动再装入预置数模式。有时候,我们的定时/计数操作是需要多次重复定时/计数的,如果溢出时不做任何处理,那么在第二轮定时/计数时就是从0开始定时/计数了,这并不是我们想要的。我们想要的是每次溢出之后,再重新开始定时/计数,那么就需要把预置数(时间常数)重新装入某个地方,而重新装入预置数的操作是硬件设备自动完成的,不需要人工干预,所以这种工作模式也称为自动再装入预置数模式。

在工作模式2中,把自动重装入的预置数存放在定时器/计数器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0参与定时/计数操作。这个工作模式常用于波特率发生器(串口通信),T1工作在串口模式2;使用这种方式时,定时器就是为了提供一个时间基准;计数溢出之后,不需要做太多的事情,只做一件事就可以了,即重新装入预置数,再开始重新计数,而且中间不会有任何延时。

(4)工作模式3。

工作模式3只适用于定时器/计数器T0。定时器T1处于工作模式3时相当于TR1=0。由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器。

2.定时器初值的设定

工作模式0:13位定时器/计数器工作模式,最多可计数次数为2的13次方,即8192次。

工作模式1:16位定时器/计数器工作模式,最多可计数次数为2的16次方,即65536次。

工作模式2:8位定时器/计数器工作模式,最多可计数次数为2的8次方,即256次。

工作模式3:8位定时器/计数器工作模式,最多可计数次数为2的8次方,即256次。

以12 MHz晶振为例:每秒钟可以执行1000000个机器周期,而定时器每次溢出最多65536个机器周期。

那么对12 MHz的晶振来讲,1个机器周期1μs(12/fosc=1μs)。

工作模式0:13位定时器最大时间间隔=213μs=8192μs=8.192 ms

工作模式1:16位定时器最大时间间隔=216μs=65536μs=65.536 ms

工作模式2:8位定时器最大时间间隔=28μs=256μs=0.256 ms(www.xing528.com)

工作模式3:8位定时器最大时间间隔=28μs=256μs=0.256 ms

以上是定时器定时的最大时间间隔。对于计算初值小于最大时间间隔时,定时10 ms的定时器初值计算如下。

若系统使用12 MHz晶振,12 MHz除以12为1 MHz,也就是说1 s=1000000个机器周期,那么10 ms=10000次机器周期。

预置数的计算公式:

预置数=最大值-需要计数的次数

再将预置数(65536-10000)装入16位定时计数器,如下:

TH0=(65536-10000)/256

TL0=(65536-10000)%256

如果系统使用11.0592 MHz晶振,11.0592 MHz除以12为921600 Hz,就是1 s=921600个机器周期,10 ms=9216个机器周期。

预置数的计算公式:

预置数=最大值-需要计数的次数

再将预置数(65536-9216)装入16位定时计数器,如下:

TH0=(65536-9216)/256

TL0=(65536-9216)%256

3.长时间定时原理

51单片机定时器/计数器的定时时长最大也就是65.536ms,最大计数65536次。如何做到超过量程的定时/计数呢?简单的方法就是累加,利用单次定时/计数的累加,完成长时间定时或者大数据的计数。

实验源程序

实验仿真电路(实验图8-1)

实验图8-1 100 ms长时间定时实验仿真图

思考题

1.对于通过多次反复定时累加完成长时间定时工作的定时器,在定时器每次重装初值过程中是否会产生延时?最终完成终极定时后是否存在误差?

2.若上题中出现了误差该如何弥补?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈