51单片机定时器的使用

合集下载

单片机定时器的使用

单片机定时器的使用

由于TL0既能作定时器也能作计数器使用,而 TH0只能作定时器使用而不能作计数器使用,因此在 方式3模式下,定时/计数器0可以构成二个定时器或 者一个定时器和一个计数器。
如果定时/计数器0工作于工作方式3,那么定时/ 计数器1的工作方式就不可避免受到一定的限制,因 为自己的一些控制位已被定时/计数器借用,只能工 作在方式0、方式1或方式2下,如果设置T1工作在方 式3,则T1停止工作,相当于其他方式时令TR1=0。
在工业检测、控制中,很多场合都要用到计数或者定 时功能。例如对外部脉冲进行计数、产生精确的定时时间、 作串行口的波特率发声器等。MCS-51单片机内部有两个 可编程的定时器/计数器,以满足这方面的需要。它们具 有 两种工作模数(计数器模式、 定时器模式)和四种工 作方式( 方式0、方式1、方式2、方式3),其控制字均 在相应的特殊功能寄存器(SFR)中,通过对它的SFR的 编程,可以方便的选择工作模数和工作方式。
C/T位:计数器模式和定时器模式的选择位。
C/T=0,为定时器模式,内部计数器对晶振脉冲12分频 后的脉冲计数,该脉冲周期等于机器周期,所以可以理 解为对机器周期进行计数。从计数值可以求得计数的时 间,所以称为定时器模式。
C/T=1,为计数器模式,计数器对外部输入引脚T0 (P3.4)或T1(P3.5)的外部脉冲(负跳变)计数,允许 的最高计数频率为晶振频率的1/24。
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。TF产生的中断申请是否被接受, 还需要由中断是否开放 来决定。
TR1、TR0 分别是定时器 /计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时 被清 0。

51 单片机 定时器 延时1s函数

51 单片机 定时器 延时1s函数

51 单片机定时器延时1s函数1.引言1.1 概述本文介绍了51单片机中的定时器功能以及如何通过定时器实现延时1秒的函数。

在单片机应用中,定时器是一种非常重要且常用的功能模块之一。

它能够精确计时,并可用于实现周期性的任务触发、计时、脉冲输出等功能。

本文首先将对51单片机进行简要介绍,包括其基本概念、结构和特点。

随后,重点讲解了定时器的基本原理和功能。

定时器通常由一个计数器和一组控制寄存器组成,通过预设计数器的初值和控制寄存器的配置来实现不同的计时功能。

接着,本文详细介绍了如何通过编程实现一个延时1秒的函数。

延时函数是单片机开发中常用的功能,通过定时器的计时功能可以实现精确的延时控制。

本文将以C语言为例,介绍延时函数的编写步骤和原理,并给出示例代码和详细的说明。

最后,本文对所述内容进行了总结,并展望了定时器在单片机应用中的广泛应用前景。

通过学习定时器的相关知识和掌握延时函数的编写方法,我们可以更好地应用定时器功能,提高单片机应用的效率和精确性。

综上所述,通过本文的学习,读者可全面了解51单片机中定时器的功能和应用,并能够掌握延时函数的编写方法,为单片机应用开发提供一定的参考和指导。

1.2 文章结构本文以51单片机定时器功能为主题,旨在介绍如何使用定时器进行延时操作。

文章分为引言、正文和结论三个主要部分。

在引言部分,首先会对文章的背景进行概述,介绍单片机的基本概念和应用领域。

然后,给出本文的整体结构,并阐述文章的目的和意义。

正文部分将分为两个小节。

在2.1节中,将对单片机进行详细介绍,包括其构造与工作原理。

这部分的内容将帮助读者全面了解单片机的基本知识,为后续的定时器功能介绍打下基础。

2.2节将重点介绍定时器的功能和特点。

这部分将涵盖定时器的基本原理、工作模式以及在实际应用中的使用方法。

同时,还将详细讲解如何使用定时器进行1秒钟的延时操作,包括具体的代码实现和注意事项。

结论部分将对全文进行总结,并强调定时器的重要性和应用前景。

51单片机定时器设置及应用

51单片机定时器设置及应用
TMOD=0x00 TH0=(8192-m)/32; TL0=(8192-m)%32;
m:根据实际定时所确定的计数次数
二、方式 1
TMOD =0x01 TH0=(65536-m)/256; TL0=(65536-m)%256;
m:根据实际定时所确定的计数次数
三、方式 2
TMOD=0x02 TH0=256-m; TL0=256-m; m:根据实际定时所确定的计数次数
TMOD=0x02; //设定 T0 的长度和状态:8 位自动重装定时 TH0=256-10; //10us 定时,备份计数器的初值 TL0=256-10; //10us 定时,计数器的初值 EA=1; //系统开放中断 ET0=1; //允许 T0 中断 TR0=1; //启动 T0 for(;;); // 等待中断产生 } void T0_ISR( ) interrupt 1 { P10=~P10; //P1.0 每 10us 取反一次 }
ET0:定时/计数器 T0 中断允许控制位 ET0=1,允许 T0 中断 ET0=0,禁止 T0 中断
51 单片机中断系统结构图
51 单片机定时/计数器 C 语言应用模板 /************ 设置 T0 为 16 位定时器,定时 50ms,系统采用 12MHz 晶振。 ************/ #include <reg52.h> void main( )
TF1、TF0:定时/计数器溢出中断标志位,由系统自动置位或清零,用户不能写入数据。 TF1=1,表示 T1 溢出 TF0=1,表示 T0 溢出
TR1:T1 的启动或停止控制位。 TR1=1,启动 T1;TR1=0,停止 T1;
TR0:T0 的启动或停止控制位 TR0=1,启动 T0;TR0=0,停止 T0;

51单片机定时器初始化的基本步骤

51单片机定时器初始化的基本步骤

51单片机定时器初始化的基本步骤1.引言在51单片机编程中,定时器是一种重要的功能模块。

通过对定时器的初始化和配置,我们可以实现时间延迟、脉冲生成、计时等各种应用。

本文将介绍51单片机中定时器的基本概念,并详细解释定时器的初始化步骤。

2.定时器的基本概念定时器是一种用来测量时间间隔并产生相关中断的设备或模块。

在51单片机中,定时器通常由一个定时/计数器和相关的控制寄存器组成。

定时器通过计数器的不断累加来产生定时中断,并提供一定的计时功能。

3.定时器的工作原理定时器一般由一个预分频器和计数器组成。

预分频器可以将外部输入的时钟信号分频为较低的频率,然后输入给计数器。

计数器通过不断累加从预分频器得到的脉冲数来实现计时的功能。

当计数器中的值达到设定的阈值时,会触发定时器中断,进行相应的处理。

4.定时器的初始化步骤定时器的初始化主要包括以下几个步骤:4.1确定定时器模式51单片机中的定时器可以工作在定时模式或计数模式。

在定时模式下,定时器会自动开始计时,当计数器的值达到设定的阈值时,会触发中断。

在计数模式下,定时器接收外部的脉冲输入,并进行计数。

在本文中,我们以定时模式为例进行介绍。

4.2设置计时器的工作模式定时器可以通过寄存器的位操作来设置不同的工作模式。

具体的工作模式包括定时器的选择(如T0或T1)、计数方式(如自动重装载或不自动重装载)、计数位宽等。

根据实际需求,我们需要根据手册设定相应的寄存器位。

4.3设置定时器的初值定时器的初值即定时器计数器的初始值。

根据所需的延时时间或频率,我们需要计算出初值,并将其赋给相应的寄存器。

需要注意的是,由于定时器的计数过程是递增的,因此初值需要根据计数方式进行相应的调整。

4.4启动定时器在完成上述初始化步骤后,我们需要使能定时器,使其开始工作。

一般情况下,定时器的使能位位于相关的控制寄存器中,我们需要将其设置为1来启动定时器的计数过程。

5.定时器的使用案例以下是一个简单的使用定时器实现延时的案例:#i nc lu de<r eg51.h>v o id de la y_ms(u nsi g ne di nt ms){u n si gn ed in ti,j;f o r(i=0;i<ms;i++){f o r(j=0;j<120;j++);//调整延时时间}}v o id ma in(){T M OD=0x01;//设置定时器0为工作于模式1T H0=0x FC;//设置定时器初值T L0=0x18;T R0=1;//启动定时器0w h il e(1){//执行需要延时的操作d e la y_ms(1000);//延时1秒}}在上述案例中,我们使用定时器0来实现延时。

第六章 MCS-51单片机内部定时器

第六章 MCS-51单片机内部定时器

6.3.1 模式0及应用
在这种模式下,16位寄存器只用了13位。 其中,TL0的高3位未用,TH0占8位。当 TL0的低5位溢出时,向TH0进位。当TH0 溢出时,向中断标志位TF0进位,并申请中 断。 因此,可通过查询TF0 是否置位或考 察中断是否发生来判断定时器/计数器0的 操作完成与否。
(2)计算1ms定时T0的初值:
机器周期为(1/fOSC)×12=[1/(12×106)]×12=1μs, 设T0的 计数初值为X,则 (213-X)×1×10-6=1×10-3ms
X=213-1×10-3/(1×10) -6 =8192-1000=7192D=1110000011000
高8位: E0H 低5位: 18H
fosc=12MHz, 采用查询方式。
解:方波周期 T=1/100Hz=0.01s=10ms 用T1定时5ms 计数初值 X为: X=216-12×5×103/12=60536=EC78H 程序如下:
MOV TMOD, #10H ;T1模式1,定时方式
SETB TR1 LOOP:MOV TH1,#0ECH
例:晶振为12MHZ ,则计数周期为
T=12/(12*106)Hz =1微秒
最短的定时 周期
计数器工作方式:
当定时器/计数器为计数工作方式时,通过
引脚T0和T1对外部信号计数,外部脉冲的下降
沿触发计数
在每个机器周期的
采样过程:
S5P2期间采样引脚
当输入脉冲信号从1到0的负跳变时,计数器就 自动加1。 由于检测一个由1到0的跳变需要两 个机器周期,所以 计数的最高频率为振荡频 率的1/24。为了确保给定电平在变化前至少被 采样一次,外部计数脉冲的高低电平均需保持 一个机器周期以上。(占空比没有限制)

51单片机 定时器 c语言

51单片机 定时器 c语言

51单片机定时器 c语言51单片机是目前较为流行的一种单片机芯片,定时器是其重要的功能之一,可以用于实现各种定时任务,而c语言则是51单片机常用的编程语言之一。

下面将结合实例,阐述51单片机定时器在c语言中的使用方法。

一、引入头文件及定义定时器首先需要引入头文件“reg51.h”,然后需要定义一个定时器变量和一个计数变量。

在本文中,我们将使用定时器0,所以定义如下:```c#include<reg52.h>sbit led = P2^0; //定义led信号端口P2.0unsigned char count = 0; //计数变量unsigned char timerVal = 56; //定时器初值```需要注意的是,定时器初值的计算方法如下:$$定时器初值 = 256 - \frac{所需延时时间× 晶振频率}{12}$$在本例中,晶振频率为11.0592MHz,所需延时时间为0.001秒,则计算得到定时器初值为56。

二、设置定时器参数设置定时器参数前,需要先关闭定时器0。

设置完成后,再通过TR0位将定时器0启动。

```cvoid initTimer(){TMOD &= 0xF0; //定时器0, 方式1TMOD |= 0x01;TH0 = timerVal; //定时器初值高位TL0 = timerVal; //定时器初值低位ET0 = 1; //打开定时器0中断EA = 1; //打开总中断}void main(){initTimer(); //初始化定时器0while(1){if(count >= 100){led = !led; //LED翻转count = 0; //计数器清零}}}void timerHandler() interrupt 1{TH0 = timerVal;TL0 = timerVal;count++; //计数器+1}```在上述代码中,通过设置TMOD寄存器,将定时器工作在方式1。

51单片机定时器实验内容

51单片机定时器实验内容

51单片机定时器实验内容
51单片机定时器实验的内容可以根据不同的需求和目的进行调整,以下是
一些可能的实验内容:
1. 定时器初始化实验:实验目标是了解如何初始化51单片机的定时器,包括设置定时器的工作模式、计数值、初始值等。

实验中可以编写代码,让定时器在初始化后自动开始计时,并在达到指定时间后产生中断或输出信号。

2. 定时器中断实验:实验目标是了解如何使用51单片机的定时器中断功能,实现定时器在达到指定时间后自动触发中断,并在中断服务程序中执行特定的操作。

实验中可以编写代码,让定时器在达到指定时间后自动进入中断服务程序,并在其中执行特定的操作,如点亮LED灯等。

3. 定时器PWM输出实验:实验目标是了解如何使用51单片机的定时器PWM输出功能,实现定时器输出PWM波形。

实验中可以编写代码,让定时器输出不同占空比的PWM波形,并通过调整占空比来控制LED灯的亮
度等。

4. 定时器与外部事件同步实验:实验目标是了解如何使用51单片机的定时器与外部事件同步,实现定时器在外部事件发生时自动开始计时或停止计时。

实验中可以编写代码,让定时器在外部事件发生时自动开始计时或停止计时,并在达到指定时间后执行特定的操作。

以上是一些常见的51单片机定时器实验内容,通过这些实验可以深入了解51单片机的定时器工作原理和用法,并提高编程技能和硬件控制能力。

c51单片机定时器中断的执行过程

c51单片机定时器中断的执行过程

c51单片机定时器中断的执行过程
C51单片机定时器中断的执行过程可以分为以下几个步骤:
1. 初始化定时器:首先需要对定时器进行初始化,设置定时器的计数模式、计数值、溢出方式等参数。

这些参数可以通过编程实现,也可以通过硬件电路进行调整。

2. 启动定时器:初始化完成后,需要启动定时器。

启动定时器后,定时器开始按照预设的参数进行计数。

当计数值达到预设的溢出值时,定时器会产生一个溢出信号。

3. 设置中断服务程序:为了在定时器溢出时执行特定的操作,需要设置一个中断服务程序 ISR)。

中断服务程序是一段特殊的代码,它会在定时器溢出时被自动调用。

4. 开启中断:在中断服务程序设置完成后,需要开启相应的中断。

开启中断后,当定时器溢出时,CPU会自动跳转到中断服务程序执行。

5. 执行中断服务程序:当定时器溢出时,CPU会暂停当前任务,跳转到中断服务程序执行。

在中断服务程序中,可以执行一些特定的操作,如更新显示、读取传感器数据等。

6. 返回主程序:中断服务程序执行完成后,CPU会自动返回到主程序继续执行。

这样,通过定时器中断,可以实现对单片机的周期性控制和数据采集等功能。

51单片机的定时器应用解析

51单片机的定时器应用解析

51单片机的定时器应用解析定时器是一种多功能的外设,可以在嵌入式系统中广泛应用。

在 51 单片机中,定时器分为两种:定时/计数器和串行接口定时器(SIT)。

这篇文档将着重介绍定时/计数器的应用。

定时器基础定时器由两个 8 位定时器(Timer0 和 Timer1)和一个 16 位定时器(Timer2)组成。

定时器通过计数器实现定时功能,计数器钟频为定时器输入时钟的一半。

定时器的定时时间可以通过改变计数器初始值和时钟源分频系数来实现。

定时器应用延时定时器可以用来实现延时功能,常见的延时方式是使用定时器产生中断,在中断服务程序中完成延时操作。

PWM定时器可以用来实现脉冲宽度调制(PWM)功能,PWM 的输出占空比可以通过改变计数器初始值和重载值来实现。

计数器定时器也可以作为计数器使用。

在计数器模式下,定时器向计数器输入信号计数,并将计数值存入寄存器中。

定时器使用示例中断延时void init_timer0(unsigned int ms){TMOD &= 0xF0;TMOD |= 0x01;TH0 = ( - FOSC / 1000 * ms) >> 8;TL0 = ( - FOSC / 1000 * ms) & 0xFF;ET0 = 1;TR0 = 1;}void timer0_isr() __interrupt (1){static unsigned char cnt = 0;TH0 = ( - FOSC / 1000 * ms) >> 8;TL0 = ( - FOSC / 1000 * ms) & 0xFF;if(cnt++ >= 20){cnt = 0;// do something every 20 ms}}PWMvoid init_timer1(unsigned int freq, unsigned char duty_cycle) {TMOD &= 0x0F;TMOD |= 0x10;TH1 = ( - FOSC / freq / 2) >> 8;TL1 = ( - FOSC / freq / 2) & 0xFF;// calculate duty cycleunsigned int reload = (unsigned int)(FOSC / freq * duty_cycle / 100 / 2);// set duty cycleRCAP2H = reload >> 8;RCAP2L = reload & 0xFF;TR1 = 1;}结论定时器是 51 单片机中常用的外设之一,可以实现延时、PWM 等多种功能。

51单片机定时器(二)

51单片机定时器(二)

51单⽚机定时器(⼆)书接上回,下⾯是定时器的其他⼯作⽅式。

⼀、⼯作⽅式1:(还是拿t0做说明)定时/ 计数器的⼯作⽅式1⾃⼰经验是⽤的⽐较多的,它的结构图如下:TH0的⼋位和TL0的⼋位构成⼀个16位定时/计数器,可以定时时间最长在⼯作⽅式1下,计数器的计数值范围是:1—65536(216)当为定时⼯作⽅式1时,定时时间的计算公式为:(216—计数初值)╳晶振周期╳12或(216—计数初值)╳机器周期其时间单位与晶振周期或机器周期相同。

如果单⽚机的晶振选为6.000MHz,则最⼩定时时间为:[213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)(216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

⼯作⽅式1的使⽤,和⽅式0完全⼀样,不必赘⾔。

⼆、⼯作⽅式2⼯作⽅式2的结构图如下:从图中可以看出来,计数寄存器变成了⼀个——TL0,⼯作⽅式2下多了⼀个重装载寄存器,也就是原来的TH0。

在⼯作⽅式2下,如果TL0中的数据溢出,那么原先存储在TH0中的数据就会⾃动的装载到TL0中去,这是由单⽚机的硬件实现的,这样我们就不⽤在⼿动给定时器赋初值,⽽且硬件重装载不会耽误时间,所以⼯作⽅式2的计时是最准确的。

但是就是这样⼀来的计数结构只有8位,计数值有限,最⼤只能到255。

所以这种⼯作⽅式很适合于那些重复计数的应⽤场合。

例如我们可以通过这样的计数⽅式产⽣中断,从⽽产⽣⼀个固定频率的脉冲。

也可以当作串⾏数据通信的波特率发送器使⽤。

⼯作⽅式2下的其他使⽤和⼯作⽅式0,1相同。

三、⼯作⽅式3之前的3种⼯作⽅式中,定时器t0和t1的⼯作⽅式完全相同,⽽在⼯作⽅式3中终于有了个性的发挥不在相同了。

下⾯是⼯作⽅式3情况下t0的结构图。

可以看出,t0被分成了2个定时器,每个⼋位,定时/计数器0的TL0拆成的定时器和之前⽅式0,1⼀样,不过TH0拆成的就“因霸”了,它把原先定时器1的溢出标志位给占⽤了,⽽且还不受GATE门控的控制,这样以来,如果定时器0的TH0构成的8位定时器在使⽤,定定时器1就憋屈了,没有溢出位使⽤。

51单片机定时器设置

51单片机定时器设置

51单片机定时器设置51单片机,也被称为8051微控制器,是一种广泛应用的嵌入式系统。

它具有4个16位的定时器/计数器,可以用于实现定时、计数、脉冲生成等功能。

通过设置相应的控制位和计数初值,可以控制定时器的启动、停止和溢出等行为,从而实现精确的定时控制。

确定应用需求:首先需要明确应用的需求,包括需要定时的时间、计数的数量等。

根据需求选择合适的定时器型号和操作模式。

设置计数初值:根据需要的定时时间,计算出对应的计数初值。

计数初值需要根据定时器的位数和时钟频率进行计算。

设置控制位:控制位包括定时器控制寄存器(TCON)和中断控制寄存器(IE)。

通过设置控制位,可以控制定时器的启动、停止、溢出等行为,以及是否开启中断等功能。

编写程序代码:根据需求和应用场景,编写相应的程序代码。

程序代码需要包括初始化代码和主循环代码。

调试和测试:在完成设置和编程后,需要进行调试和测试。

可以通过观察定时器的状态和输出结果,检查定时器是否按照预期工作。

计数初值的计算要准确,否则会影响定时的精度。

控制位的设置要正确,否则会导致定时器无法正常工作。

需要考虑定时器的溢出情况,以及如何处理溢出中断。

需要考虑定时器的抗干扰能力,以及如何避免干扰对定时精度的影响。

需要根据具体应用场景进行优化,例如调整计数初值或控制位等,以达到更好的性能和精度。

51单片机的定时器是一个非常实用的功能模块,可以用于实现各种定时控制和计数操作。

在进行定时器设置时,需要注意计数初值的计算、控制位的设置、溢出处理以及抗干扰等问题。

同时需要根据具体应用场景进行优化,以达到更好的性能和精度。

在实际应用中,使用51单片机的定时器可以很方便地实现各种定时控制和计数操作,为嵌入式系统的开发提供了便利。

在嵌入式系统和微控制器领域,51单片机因其功能强大、使用广泛而备受。

其中,定时器中断功能是51单片机的重要特性之一,它为系统提供了高精度的定时和计数能力。

本文将详细介绍51单片机定时器中断的工作原理、配置和使用方法。

MCS-51系列单片机的定时器

MCS-51系列单片机的定时器
存器存放定时或计数初值,每个定时器都可以由软
件设置成定时工作方式或计数工作方式,工作方式 的设定由工作方式寄存器TMOD设置,由控制寄存 器TCON控制。
寄存器TMOD的字节地址为89H,其不可以进行位寻址,各位定义如 表6-1。
1、GATE-选通控制位(门控位) GATE=0,只要用软件对TR0(或TR1)置1就启动定 时器; GATE=l,只有外部中断INT1(或INT0)引脚为高电 平,且用软件对TR0(或TR1)置1才启动定时器。 2、C/ -工作方式选择位
时器计数器都具有计数和定时两种功能,并具有 3~4种工作方式。
51单片机定时器/计数器的逻辑结构如图6-1,可以看出,16位 的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和 TL0构成;T1由TH1和TL1构成,访问地址依次为8AH-8DH。 这些寄存器用于存放定时或计数初值,均可单独访问。此外,其 内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控 制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电 路连接起来的。TMOD主要是用于选定定时器的工作方式, TCON主要是用于控制定时器的启动停止,此外TCON还可以保 存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部 事件通过引脚T0(P3.4)和T1(P3.5)输入。
对定时器/计数器的工作方式寄存器TMOD中的M1 M0位进行设置,可以 使得定时器/计数器工作在4种工作方式下,下面对这4种方式做一下介绍。
6.3.1定时器/计数器的工作方式0
(1)计数结构 在工作方式0下,定时器/计数器采用13位计数结构。
(2)工作方式0的特点 ①两个定时器/计数器T0、T1均可在方式0下工作; ②13位计数结构,其计数器由THx全部8位和TLx的低5位构成(高3位不

51单片机定时器工作原理

51单片机定时器工作原理

51单片机定时器工作原理在嵌入式系统中,定时器是一个非常重要的模块,它可以用来进行定时操作、计数操作等。

而在51单片机中,定时器也是一个核心的功能模块。

本文将介绍51单片机定时器的工作原理,希望能够帮助大家更好地理解和应用定时器功能。

首先,我们来看一下51单片机中定时器的基本结构。

51单片机中有定时器/计数器T0和T1两个,它们都是16位的定时器/计数器。

每个定时器/计数器都有一个相关的控制寄存器,用来设置定时器的工作模式、计数初值等。

此外,定时器还有一个相关的中断控制寄存器,用来允许或禁止定时器中断。

定时器的工作原理主要包括定时器的工作模式、工作时钟源以及定时器的中断功能。

定时器的工作模式有4种,分别是模式0、模式1、模式2和模式3。

在不同的工作模式下,定时器可以实现不同的功能,比如定时器功能、计数功能等。

工作时钟源可以是外部时钟源,也可以是内部时钟源。

通过设置相关的控制寄存器,可以选择合适的工作时钟源。

定时器的中断功能可以在定时器溢出时产生中断请求,通过设置中断控制寄存器,可以允许或禁止定时器中断。

接下来,我们将详细介绍51单片机定时器的工作模式。

模式0是最简单的工作模式,定时器工作在方式0下时,定时器每次溢出都会产生一个中断请求。

模式1是定时器的13位工作模式,定时器每次溢出都会产生一个中断请求。

模式2是定时器的8位自动重装载模式,定时器每次溢出都会重新装载初值,并产生一个中断请求。

模式3是定时器的两个8位计数器工作在方式3下时,定时器可以实现两个独立的计数功能。

此外,定时器的工作时钟源也是非常重要的。

在51单片机中,定时器的工作时钟源可以是系统时钟、外部时钟或者定时器自己的时钟。

通过设置相应的控制寄存器,可以选择合适的工作时钟源。

最后,我们来介绍一下定时器的中断功能。

在51单片机中,定时器的中断功能可以在定时器溢出时产生中断请求,通过设置中断控制寄存器,可以允许或禁止定时器中断。

定时器中断可以在定时器溢出时执行一段中断服务程序,实现定时操作。

MCS-51定时计数器的应用

MCS-51定时计数器的应用

4
TMOD——方式控制字 方式控制字 由于LED的亮 灭是持续不断的 所以可以将 的亮/灭是持续不断的 所以可以将T1 由于 的亮 灭是持续不断的,所以可以将 计数器设成方式2,自动装入初值 重复进行计数 计数器设成方式 自动装入初值,重复进行计数, 自动装入初值 重复进行计数, T0计数器设成定时方式 、按这种方案考虑: 计数器设成定时方式1 按这种方案考虑: 计数器设成定时方式 TMOD的初值应该是 61H 的初值应该是: 的初值应该是 0 1 1 0 0 0 0 1
第四章 MCS-51定时/计数器的应用 定时/计数器是单片机应用中的重要部件, 其工作方式的灵活应用对提高编程技巧, 减轻CPU的负担和简化外围电路有很大益 处。本章通过两个实验说明定时/计数器的 基本用法,通过应用实例,使读者掌握定 时/计数器的软件设计技巧。
1
一、定时/计数器的基本用法 定时 计数器的基本用法
11
T1的定时初值应按下式计算(方式0为13位计数器) 的定时初值应按下式计算(方式0 13位计数器) 位计数器 10ms (213-X)·2μs=10ms 2μs=10 ∴X=3192=0110001111000B ∴X=3192=0110001111000B 3192 由于TL1 只装5 其余8 位装入TH 因此0 78H TH1 由于 TL1 只装 5 位 , 其余 8 位装入 TH1, 因此 0C78H TL 装入TH 时应特别小心。 装入TH1和TL1时应特别小心。 11000B 01100011 11000B I-TH1—-I I-TL1-I 实际装入情况是:63H装入TH 18H 实际装入情况是:63H装入TH1,18H 入TL1。 软件计数200= 软件计数200=0C8H 200
12

51单片机定时器典型程序

51单片机定时器典型程序

采用定时器/ 计数器T0 对外部脉冲进行计数,每计数100 个脉冲后,T0 转为定时工作方式。

定时1ms 后,又转为计数方式,如此循环不止。

假定MCS-51 单片机的晶体振荡器的频率为6MHz ,请使用方式 1 实现,要求编写出程序。

解答:定时器/ 计数器T0 在采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。

定时1ms后,又转为计数方式,如此循环不止。

假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。

解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。

除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。

编写程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2MOV TL0,#156 ;计数100个脉冲的初值赋值MOV TH0,#156SETB GA TE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA;CPU开中断CLR F0 ;设置下一轮为定时方式的标志位WAIT: AJMP W AITIT0P: CLR EA;关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#00H ;定时器/计数器T0为定时方式0MOV TH0,#0FEH ;定时1ms初值赋值MOV TL0,#0CHSETB EARETICOUNT: MOV TMOD,#06HMOV TL0,#156SETB EARETI。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1
51单片机定时器/计时器的使用
步骤:
1、 打开中断允许位:
对IE 寄存器进行控制,IE 寄存器各位的信息如下图所示:
EA : 为0时关所有中断;为1时开所有中断
ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES : 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开
2、 选择定时器/计时器的工作方式:
定时器TMOD 格式
CPU 在每个机器周期内对T0/T1
检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。

因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。

由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。

通常,T0或T1输入线上的计数脉冲频率总小于100kHz 。

方式0:定时器/计时器按13位加1计数,这13位由TH 中的高8位和TL 中的低5位组成,其中TL 中的高3位弃之不用(与MCS-48兼容)。

13位计数器按加1计数器计数,计满为0时能自动向CPU 发出溢出中断请求,但要它再次计数,CPU 必须在其中断服务程序中为它重装初值。

方式1:16位加1计数器,由TH 和TL 组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。

2
方式2:计数器被拆成一个8位寄存器TH 和一个8位计数器TL ,CPU 对它们初始化时必须送相同的定时初值。

当计数器启动后,TL 按8位加1计数,当它计满回零时,一方面向CPU 发送溢出中断请求,另一方面从TH 中重新获得初值并启动计数。

方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。

在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。

因此,T1就没有控制位可以用了,故TL1在计满回零时不会产生溢出中断请求的。

显然,T0和T1设定为方式3实际上就相当于设定了3个8位计数器同时工作,其中TH0和TL0为两个由软件重装的8位计数器,TH1和TL1为自动重装的8位计数器,但无溢出中断请求产生。

由于TL1工作于无中断请求状态,故用它来作为串口可变波特
3、 为计数器赋值
计数器初值计算
TC =M −C
TC :计数器初值,M :计数器模值(2k ),C :把计数器计满的计数值 定时器初值计算
T =(M −TC )T 计数

TC =M −T/T 计数
M :模值,T 计数:单片机时钟周期T CLK (ΦCLK 的倒数)的12倍;TC 为定时器的定时初值,T 为欲定时的时间。

TC =M −T ×ΦCLK /12
M :模值,ΦCLK :单片机时钟周期ΦCLK ;TC 为定时器的定时初值,T 为欲定时的时间。

例如:单片机主脉冲频率ΦCLK 为12MHz ,最大定时时间为: 方式0时 T MAX = 213×1us = 8.192ms 方式1时 T MAX = 216×1us = 65.536ms 方式2和方式3 T MAX = 28×1us = 0.256ms
4TR0:为0时,停T0计数;为1时,启T0计数
TF0:为0时,无T0中断(硬件复位);为1时,有T0溢出中断
TR1:为0时,停T1计数;为1时,启T1计数
TF1:为0时,无T1中断(硬件复位);为1时,有T1溢出中断
IE1:为0时,硬件复位;为1时INT1上有中断
IT1:为0时,INT1电平触发(软件复位);为1时,INT1负边沿触发
IE0:为0时,硬件复位;为1时
IT0:为0时,INT0电平触发(软件复位);INT0负边沿触发
5
在C51的C语言中使用interrupt x来指定中断入口地址,x为中断号,例T0中断:void Time0_Int() interrupt 1 //定时器T0的中断入口程序
3。

相关文档
最新文档