定时器原理及实验
单片机定时器实验报告

一、实验目的1. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
单片机实验报告定时器

一、实验目的1. 理解单片机定时器的原理及工作方式。
2. 掌握单片机定时器的编程方法,实现定时功能。
3. 学习使用定时器中断,处理定时器事件。
二、实验环境1. 硬件设备:MCS-51单片机实验板、示波器、电源等。
2. 软件环境:Keil C51、Proteus仿真软件。
三、实验原理1. 定时器概述定时器是单片机的一个重要组成部分,用于产生定时信号或测量时间。
MCS-51单片机内部有两个定时器,即定时器0和定时器1。
2. 定时器工作原理定时器通过内部计数器进行计数,当计数达到设定值时,产生一个定时中断,执行中断服务程序。
定时器的工作方式分为四种:方式0、方式1、方式2和方式3。
3. 定时器编程定时器编程主要包括以下几个步骤:(1)设置定时器工作模式:通过向定时器模式寄存器(TMOD)写入相应的值来设置定时器工作模式。
(2)设置定时器初值:通过向定时器寄存器(THx、TLx)写入相应的值来设置定时器初值。
(3)启动定时器:通过设置定时器控制寄存器(TCON)的相应位来启动定时器。
(4)编写定时器中断服务程序:当定时器溢出时,执行中断服务程序,实现相应的功能。
四、实验内容1. 实验一:定时器0定时50ms(1)硬件连接:将P1.0口连接到蜂鸣器。
(2)软件设计:- 设置定时器0工作在方式1,定时50ms。
- 开启定时器0中断。
- 编写定时器0中断服务程序,使蜂鸣器响50ms。
2. 实验二:定时器1计数脉冲(1)硬件连接:将P3.4口连接到信号发生器。
(2)软件设计:- 设置定时器1工作在方式2,计数P3.4口的脉冲信号。
- 开启定时器1中断。
- 编写定时器1中断服务程序,记录计数器计数值,并通过数码管显示。
3. 实验三:定时器0定时1s(1)硬件连接:将P1.0口连接到蜂鸣器。
(2)软件设计:- 设置定时器0工作在方式1,定时1s。
- 开启定时器0中断。
- 编写定时器0中断服务程序,使蜂鸣器响1s。
五、实验步骤1. 编写实验一程序,并使用Proteus进行仿真测试,验证程序功能。
定时器的设计实验报告

定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。
本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。
2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。
其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。
2.2 设计步骤1. 确定定时器的时间基准。
时间基准可以选择外部脉冲输入或者由稳定的晶振产生。
2. 设计计数器的位数。
根据计时的范围确定计数器的位数,以保证计数范围的覆盖。
3. 计算计数器的计数速度。
根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。
4. 根据计数器的位数和计数速度,选择合适的计数器芯片。
5. 配置计数器芯片的工作模式和输入脉冲的触发方式。
6. 连接电路并验证设计是否符合要求。
2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。
在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。
3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。
由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。
然而,该设计存在一个缺点,即计数器位数的限制。
由于计数器位数的限制,导致定时的最大时间间隔受到了限制。
单片机定时器实验原理

单片机定时器实验原理一、概述单片机定时器是单片机的重要组成部分,它能够实现定时控制、时间间隔生成等功能。
通过单片机定时器实验,可以更好地了解单片机的内部结构和工作原理,为进一步开发单片机应用系统打下坚实的基础。
二、实验目的1. 掌握单片机定时器的结构和原理。
2. 学会使用单片机定时器进行时间间隔控制。
3. 了解单片机定时器的应用范围和限制。
三、实验原理1. 单片机定时器的结构单片机定时器通常由一个计数器和一个控制逻辑组成。
计数器负责记录脉冲数,控制逻辑负责控制计数器的计数和复位。
单片机定时器通常采用可编程计数脉冲,可以实现任意时间间隔的生成。
2. 单片机定时器的原理单片机定时器的工作原理是基于计数器的计数。
当单片机接收到一个启动信号时,计数器开始计数,当计数达到预设的时间间隔时,单片机输出相应的信号或执行相应的操作。
通过改变计数器的预设值,可以改变时间间隔的长短。
3. 单片机定时器的应用单片机定时器在许多领域都有应用,如智能家居、工业控制、通信设备等。
在智能家居中,可以通过单片机定时器控制家电设备的开启和关闭;在工业控制中,可以通过单片机定时器实现生产线的自动化控制;在通信设备中,可以通过单片机定时器实现时间戳的生成和数据传输的时间控制。
四、实验步骤1. 准备实验器材和软件环境,包括单片机、定时器芯片、编程器、开发板等。
2. 连接实验设备,并调试确保连接正常。
3. 编写实验程序,并上传到单片机中。
4. 观察并记录实验结果,分析误差原因。
5. 根据实验结果,调整程序参数,进行多次实验,直到达到满意的效果。
五、实验注意事项1. 实验过程中要保持设备连接的稳定性,避免意外断开。
2. 编程和调试过程中要确保程序正确,避免误操作导致设备损坏。
3. 注意观察实验现象,及时记录实验数据,分析实验结果。
4. 实验结束后,要清理实验现场,确保设备复位。
六、实验结果分析通过实验,我们能够得到较为准确的时间间隔控制结果。
定时器原理及应用实验报告

定时器原理及应用实验报告定时器原理及应用实验报告一、实验目的:1. 了解定时器的基本原理和工作方式;2. 学习使用定时器进行各种定时操作;3. 掌握定时器在实际应用中的一些常见使用方法。
二、实验器材:1. 8051单片机实验板;2. 电脑;3. 开发软件Keil C51;4. 适配器和连接线。
三、实验原理:定时器是一种常见的计时设备,用于测量时间的间隔或周期。
在8051单片机中,定时器可通过内部的计数器和控制寄存器实现。
在本次实验中,使用T0定时器作为实验对象。
四、实验步骤:1. 打开Keil C51软件,在新建的工程中编写程序代码;2. 配置P0口的3、4号引脚为输入模式;3. 设置T0定时器的工作模式和计时时间;4. 将定时器引脚输出的方波信号接到P1.0引脚,通过示波器观察方波信号;5. 烧录程序代码到8051单片机;6. 上电启动单片机,观察并记录示波器上的方波信号;7. 根据实验结果,分析定时器的工作原理和应用场景。
五、实验结果:根据本次实验的设置,T0定时器的工作模式为模式1,计时时间为1秒。
在示波器上观察到定时器引脚输出的方波信号的频率为1Hz,即每秒产生一个高电平和一个低电平。
六、分析与讨论:根据实验结果可知,T0定时器在计时时间到达后会产生一个中断,并且在中断时改变定时器引脚的电平。
在实际应用中,可以通过定时器来实现各种需要精确计时的操作,如定时采集数据、测量时间间隔等。
七、实验总结:通过本次实验,我们了解了定时器的基本原理和工作方式,并学习了如何使用定时器进行各种定时操作。
定时器在实际应用中具有广泛的用途,可以实现许多需要精确计时的功能。
掌握定时器的使用方法对于单片机的开发和应用具有重要意义。
八、实验感想:本次实验使我更加深入地了解了定时器的原理和应用,掌握了一些常见的定时操作方法。
定时器在微控制器系统中有着广泛的应用,对于提高系统的稳定性和可靠性有着重要作用。
通过实验的操作,我对定时器的使用和工作原理有了更加深入的认识,对于今后在单片机开发中的应用和调试能力的提高有着积极的促进作用。
定时器的实验报告

一、实验目的1. 理解定时器的基本原理和工作方式。
2. 掌握定时器的配置和使用方法。
3. 通过编程实现定时器的定时功能。
4. 学习定时器中断的应用。
二、实验环境1. 实验设备:单片机实验板、电源、连接线等。
2. 实验软件:Keil uVision 4、IAR EWARM等C语言开发环境。
三、实验原理定时器是一种用于实现时间延迟的硬件模块,它能够在预定的时间内产生中断或完成特定的操作。
定时器通常由计数器、控制寄存器、时钟源等组成。
定时器的工作原理是利用时钟源产生的时钟信号对计数器进行计数,当计数器达到预设值时,触发中断或完成特定操作。
四、实验内容1. 定时器基本配置(1)设置定时器模式:根据实验需求,选择定时器的工作模式(如模式0、模式1等)。
(2)设置定时器时钟源:选择定时器时钟源(如系统时钟、外部时钟等)。
(3)设置定时器计数初值:根据实验需求,设置定时器计数初值。
2. 定时器定时功能实现(1)编写程序初始化定时器:配置定时器模式、时钟源、计数初值等。
(2)编写定时器中断服务程序:在中断服务程序中实现定时功能,如控制LED闪烁、读取传感器数据等。
3. 定时器中断应用(1)配置定时器中断:设置定时器中断优先级、中断使能等。
(2)编写定时器中断服务程序:在中断服务程序中实现所需功能,如采集数据、发送数据等。
五、实验步骤1. 编写程序初始化定时器:设置定时器模式、时钟源、计数初值等。
2. 编写定时器中断服务程序:实现定时功能,如控制LED闪烁。
3. 编写定时器中断配置程序:设置定时器中断优先级、中断使能等。
4. 编译、下载程序:将编写好的程序编译生成HEX文件,通过编程器下载到实验板上。
5. 运行实验:观察实验现象,如LED闪烁频率、数据采集等。
六、实验结果与分析1. 定时器定时功能实现实验结果显示,定时器能够按照设定的定时时间产生中断,中断服务程序能够正确执行。
例如,LED闪烁频率与定时时间一致。
定时器输出比较实验原理
定时器输出比较实验原理
定时器输出比较实验原理是通过定时器产生一个定时的脉冲信号,并将该信号与一个参考值进行比较,根据比较结果输出一个高电平或低电平。
具体原理如下:
1. 确定定时器的工作模式:定时器可以工作在不同模式下,如定时模式、计数模式、脉冲宽度调制模式等。
根据实验需求选择合适的模式。
2. 设置定时器的计数值和参考值:根据实验需求设置定时器的计数值和参考值。
计数值决定了定时器产生脉冲信号的周期,参考值是需要与脉冲信号进行比较的值。
3. 启动定时器:启动定时器后,定时器开始计数,并产生周期性的脉冲信号。
4. 脉冲信号与参考值比较:每当定时器计数值与参考值相等时,定时器会输出一个比较结果,表示脉冲信号与参考值的关系。
5. 输出比较结果:根据比较结果,定时器可以输出一个高电平或低电平信号。
可以利用这个输出信号来控制其他电路或设备的工作。
通过定时器输出比较实验,可以实现一些定时控制的功能,如周期性的事件触发、精确测量时间间隔等。
定时器的实验报告
定时器的实验报告1. 实验目的本实验旨在通过使用定时器,了解定时器的基本原理和应用。
2. 实验原理定时器是一种重要的计时工具,其基本原理是通过一个稳定的时钟信号,计算经过的时间并进行相应的操作。
定时器通常由一个计数器和一个时钟源组成。
定时器的计数器可以根据预设的值不断自增,当计数器达到设定值时,就会触发相应的中断或输出信号。
时钟源为定时器提供稳定的时钟脉冲,可以通过外部晶振、振荡器等方式提供。
3. 实验材料•单片机开发板•电脑•USB 数据线4. 实验步骤步骤1:准备工作连接开发板和电脑,确保开发板正常工作,并具备编程的能力。
步骤2:编写代码使用编程软件打开官方提供的开发工具,创建一个新项目。
在代码文件中添加定时器相关的代码,设置计数器的初始值和触发中断的条件。
步骤3:编译和烧录编译代码,并将生成的目标文件烧录到开发板中。
确保烧录成功,无误后进行下一步。
步骤4:实验测试将开发板连接到示波器或其他外设,观察定时器中断或输出信号的波形和频率。
根据需要,可以调整定时器的计数器初始值、触发条件等参数,观察不同的实验结果。
5. 实验结果与分析经过实验测试,可以观察到定时器正常工作,并且在达到预设值时触发中断或输出信号。
根据预先设定的参数,可以得到不同的定时器工作效果。
通过观察波形和频率,可以验证定时器的准确性和稳定性。
6. 实验总结本实验通过使用定时器,掌握了定时器的基本原理和应用。
定时器在嵌入式系统和计时器等领域具有重要的作用。
掌握定时器的使用,可以为后续的实验和项目开发提供参考和基础。
在实验过程中,需要注意定时器参数的设置和调整,以达到预期的结果。
定时器的使用还需要考虑中断优先级、占用资源等相关因素,并根据实际需求进行适当的优化。
7. 参考资料•数据手册,XX单片机系列。
•XX单片机开发手册。
以上是关于定时器的实验报告的基本结构,根据实际情况和实验过程,可以进行合理的扩展和修改。
在实验报告中,需要包含相关材料、步骤、结果和分析,以便于他人理解和参考。
32定时器应用的实验原理
32定时器应用的实验原理一、32定时器的原理32定时器是一种常见的计时器,通常用于测量时间间隔或执行定时任务。
其原理是通过内部的计数器来记录时间的流逝,并根据设定的时间参数进行相应的操作。
在32定时器中,计数器通常是一个32位的寄存器,每个时钟周期计数器的值加1。
当计数器的值达到设定的定时时间时,定时器会触发相应的事件或中断。
二、32定时器的应用1. 定时中断32定时器常用于定时中断的应用。
通过设置合适的定时时间,可以在特定的时间间隔内触发中断,从而执行相应的任务。
例如,在实时操作系统中,可以利用32定时器实现定时任务的调度,确保各个任务按照预定的时间执行。
2. PWM控制32定时器还可以用于脉宽调制(PWM)控制。
PWM是一种通过改变信号的脉冲宽度来控制电平的技术,广泛应用于电机控制、LED亮度调节等领域。
通过设置定时器的周期和占空比,可以生成不同频率和占空比的PWM信号,实现对电路的精确控制。
3. 脉冲计数32定时器还可以用于脉冲计数的应用。
通过设置定时器的输入引脚为外部脉冲信号,可以实时计数脉冲的数量。
这在一些需要测量脉冲频率或计数脉冲数量的场合中非常有用,例如测量转速、计数器等。
4. 定时测量32定时器还可以用于定时测量的应用。
通过利用定时器的计数功能,可以测量某个事件的发生时间间隔。
例如,在实验中可以利用32定时器测量超声波传感器发射和接收之间的时间差,从而计算出测距的距离。
三、32定时器实验为了更好地理解32定时器的应用原理,我们可以进行一些简单的实验。
以定时中断为例,我们可以通过编程控制32定时器,在每隔一定的时间触发中断,并在中断服务函数中执行相应的任务。
通过调整定时器的参数,可以改变中断的触发频率。
在实验中,首先需要初始化定时器的计数器和相关寄存器,并设置定时器的工作模式和中断使能。
然后,通过编程设置定时器的定时时间,即每隔多长时间触发一次中断。
最后,在中断服务函数中编写相应的代码,实现需要执行的任务。
定时器计数器实验报告
定时器计数器实验报告定时器计数器实验报告引言:定时器计数器是一种常用的电子元件,它可以在电路中起到计时和计数的作用。
在本次实验中,我们将探索定时器计数器的基本原理和应用,并通过实际操作来验证其性能和功能。
一、实验目的本次实验的目的是熟悉定时器计数器的工作原理,掌握其使用方法,并通过实验验证其性能和功能。
二、实验器材和原理1. 实验器材:- 定时器计数器模块- 电源- 示波器- 连接线- 电阻、电容等元件2. 实验原理:定时器计数器是一种能够产生精确时间间隔的电子元件。
它通常由一个时钟信号源和一个计数器组成。
时钟信号源提供固定频率的脉冲信号,计数器根据时钟信号的输入进行计数,并在达到设定值时触发相应的操作。
三、实验步骤1. 连接电路:将定时器计数器模块与电源和示波器连接起来,确保电路连接正确。
2. 设置参数:根据实验要求,设置定时器计数器的工作频率、计数范围等参数。
这些参数可以通过调节电阻、电容等元件来实现。
3. 运行实验:启动电源,观察示波器上的波形变化。
根据设定的参数,定时器计数器将在一定时间间隔内产生脉冲信号,并在达到计数值时触发相应的操作。
4. 数据记录和分析:记录实验过程中的数据和观察结果,并进行分析。
比较实验结果与理论预期的差异,找出可能的原因并提出改进措施。
四、实验结果与讨论通过实验,我们观察到定时器计数器在不同参数设定下的工作情况。
根据实验数据和观察结果,我们可以得出以下结论:1. 定时器计数器的工作频率与输入时钟信号的频率有关。
当时钟信号频率较高时,定时器计数器的计数速度也会相应增加。
2. 定时器计数器的计数范围决定了其能够计数的最大值。
当计数器达到设定的计数范围时,将触发相应的操作。
3. 定时器计数器可以应用于各种计时和计数的场合,如脉冲计数、频率测量等。
通过调节参数,可以实现不同的功能。
根据实验结果,我们可以进一步探索定时器计数器的应用领域和优化方法,提高其性能和功能。
五、实验总结通过本次实验,我们深入了解了定时器计数器的原理和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流程图
主程序:
开始 设置堆栈地址
设置TMOD方式
中断程序:
中断入口地址
重装初值
N
送定时初值
开T0中断 启动T0 计数单元赋值(20H,21H) 等待 N
(20H)-1=0? Y 20H单元赋值20 (21H)-1=0? Y 21H单元赋值60 P1.0取反 中断返回
Dian团队暑期嵌入式培训
第5讲 定时器原理及实验
周叶飞 @ Dian团队
Rereflyer@ 7/23/2011
问题回顾 波特率种类:1800、4800、9600和 19200等 之所以要用11.0592M这么变态的数字,是因 为在串口通信中需要计算出波特率。而波特 率必须是个整数,为了使波特率是个整数, 所以晶振就必须是11.0592的。
(3)根据需要开放定时器/计数器的中断——对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13 次方,也就是8192次。
工作方式1: 16位定时/计数方式,因此,最多可以计到2的16 次方,也就是65536次。
主要内容:
(1)定时器/计数器的结构及工作原理 (2)定时器基础实验
MCS-51单片机的定时器/计数器(一)
一、MCS-51单片机定时器/计数器组成:
定时器/计数器0(T0):16位的加计数器 定时器/计数器1(T1):16位的加计数器
二、定时器/计数器的功能
对外部输入信号的计数功能。定时器/计数器0(T0)的 外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来 脉冲输入端为P3.5。 定时功能。定时器/计数器的定时功能也是通过计数实 现的,它的计数脉冲是由单片机的片内振荡器输出经 12分频后产生的信号,即为对机器周期计数。
工作方式2和工作方式3:都是8位的定时/计数方式,因此, 最多可以计到2的8次方,也说是256次。
预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面 我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计 数方式类似。
编程步骤: 1、计算TMOD的值 由于:GATE=0;M1、M0=0、1;C/T=0; 所以:(TMOD)=10H 2、计算初值(单片机的振荡频率为12MHZ) 所需要的机器周期数: n=(50000us/1us)=50000 计数器的初始值:X=65536-50000=15536 所以:(TH0)=3CH;(TL0)=0B0H
流程图
主程序: 开始 中断程序: 中断入口地址 P1.0取反
设置堆栈地址 设置TMOD方式
重新给T0赋初值
送定时器初值 中断返回
开T0中断
启动T0 等待
实例二:利用方式1定时
题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟 、占空比为1:1的方波信号。
解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时 ,每隔1分将P1.0取反即可。 由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次, 可以实现1分钟定时。
←T0方式字段→
GATE —— 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制;
GATE = 1 启动受 /INT0 或 /INT1 的控制。
C/T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式; C //T = 1 计数方式。 M1M0—— 工作模式选择位(编程可决定四种工作模式)。
T1由TH1、TL1 构成,字节地址 为8DH、8BH
T0由TH0、TL0 构成,字节地址 为8CH、8AH TCON则用于控制定时计 特殊功能寄 数器T0和T1的启动和停止 存器TMOD 计数,同时管理定时器T0 控制定时计 和T1的溢出标志等。 数器的工作 MCS-51单片机定时器/计数器逻辑结构图 方式
MCS-51单片机的定时器/计数器(二)
MCS-51单片机的定时器/计数器应用举例: 利用定时器/计数器实现固定时间的定时 简易信号发生器
实例一:定时器/计数器实现固定时间的定时 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周 期为2ms,占空比为1:1的方波信号。 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生 定时,每隔1ms将P1.0取反即可。 编程步骤: 计算TMOD的值 由于GATE=0;M1M0=00;C/T=0; 所以 (TMOD)=00H 计算初值(单片机振荡频率为12MHZ) 所需要的机器周期数: n=(1000us/1us)=1000 计数器的初始值: X=8192-1000=7192 所以:(TH0)=0E0H,(TL0)=18H
M1M0—— 工作模式选择位(编程可决定四种工作模式)
0 0 1 1 0 1 0 1 13位定时/计数器 16位定时/计数器 模式0 模式1
8 位定时/计数器(自动重装初值) 模式2 T0 8位定时/计数 模式3
1
1
T1 停止工作
模式3
1)工作方式0
T0的等效逻辑结构
在计数工作方式下,计数器的计数值范围是: 1~8192(2的13方) 当为定时工作方式时,定时时间的计算公式为: ( 8192 -计数初值)×晶振周期×12 或 ( 8192 -计数初值)×机器周期 其时间单位与晶振周期或机器周期相同。 如果单片机的晶振选为6.000MHz,则最小定时时间为: [8192—(8192—1)]×1/6×10-6×12=2×10-6(s)=2(us) 最长定时时间为: (8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us)。
= 0 ——定时;
= 1 —— 对外计数。
定时:fosc / 12 = 1 /(12/fosc) = 1 / T
波形等间隔,次数已定,时间确定
即对机器周期进行计数。
T
N个方波 计数ቤተ መጻሕፍቲ ባይዱ脉冲不等间隔。
左图定时时间为 N*T
每个下降沿计数一次
确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。
TCON 88H
D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 D2 D1 D0
TR0 —— 定时 / 计数器0运行控制位。
软件置位,软件复位。
TR1 —— 定时 / 计数器1运行控制位。(用法与TR0类似) TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。
(1)定时/计数器的工作方式
3)工作方式2
T0的等效逻辑结构
方式2与方式0、1的区别: 工作方式0和工作方式1的最大特点就是计数溢出后,计 数器为全0,因而循环定时或循环计数应用时就存在反复设 置初值的问题,这给程序设计带来许多不便,同时也会影 响计时精度。
工作方式2就具有自动重装载功能,即自动加载计数初值, 所以也有的文献称之为自动重加载工作方式。在这种工作 方式中,16位计数器分为两部分,即以TL0为计数器,以 TH0作为预置寄存器,初始化时把计数初值分别加载至 TL0和TH0中,当计数溢出时,不再象方式0和方式1那样 需要“人工干预”,由软件重新赋值,而是由预置寄存器 TH以硬件方法自动给计数器TL0重新加载。 方式2在串口通讯时,常用作波特率发生器。
定时器/计数器的控制
定时器/计数器的控制主要是通过以下几个寄 存器实现的:
TCON---定时器/计数器控制寄存器 TMOD---定时器/计数器工作方式控制寄存器 IE ---中断允许控制寄存器
TMOD 89H
D7
GATA
D6
D5
M1
D4
M0
D3
GATA
D2
D1
M1
D0
M0
←T1方式字段→
4)工作方式3
如果定时/计数器0工作于工作方式3,那么定时/计数器1的 工作方式就因为自己的一些控制位已被定时/计数器0借用, 只能工作在方式0、方式1或方式2下,等效电路参见下图:
2.怎样编制计数程序? 首先必须对定时计数器进行初始化,然后再开启定时或 计数。简单的总结一下,定时计数器的初始化包括以下内 容。 (1)确定工作方式——对TMOD赋值; 如:任务中的MOV TMOD,#06H指令,设定T0为计数 器工作方式。 (2)预置定时计数器中计数的初值——直接写入TH和 TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初 值。 MOV TL0,#00H
2)工作方式1
T0的等效逻辑结构
在工作方式1下,计数器的计数值范围是: 1~65536(2的16方) 当为定时工作方式1时,定时时间的计算公式为: (65536—计数初值)× 晶振周期×12 或 (65536—计数初值)× 机器周期 其时间单位与晶振周期或机器周期相同。 如果单片机的晶振选为6.000MHz,则最小定时时间为: [65536—(65536—1)]×1/6×10-6×12=2×10-6(s)=2(us) 最长定时时间为: (65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)。