单片机定时器计数器原理与应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)计算初值,并将其写入 TH0、TL0 或 TH1、TL1。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
3)中断方式时,则对 IE 赋值,开放中断。
EA=1;
//开总中断
ET0=1; //开定时器中断
4)使 TR0 或 TR1 置位,启动定时/计数器定时或计数。
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void main()
{
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
单片机的定时器/计数器具有 4 种工作方式。其中控制字均在相应得特殊功能寄存器中, 通过编程,用户可以方便地选择定时器/计数器两种工作模式和 4 种工作方式。
2、定时器/计数器的结构 MCS-51 单片机的定时器/计数器结构如下图,定时器/计数器 T0 由特殊功能寄存器 TH0,TL0 构成,定时器/计数器 T1 由特殊功能寄存器 TH1、TL1 构成。
低四位与外部中断有关,已介绍。高四位的功能如下: 1、TF1、TF0---T1、T0 计数器溢出标志位 当计数器溢出时,该位置“1”。使用查询方式时,此位作为状态位供 CPU 查询,但应注 意在查询该位有效后应以软件方法及时将该位清“0”。使用中断方式时,此位作为中断 申请标志位,进入中断服务程序后由硬件自动清“0”。 2、 TR1、TR0—计数器运行控制位 TR1/TR0=1,启动定时器/计数器工作的必要条件,还与 GATE 位的状态有关。 TR1/TR0=0,停止定时器/计数器工作,改为可由软件置“1”或清”0”. 5、定时器/计数器的 4 种工作方式 当 M1、M0 为 00 时,定时器/计数器被设置为工作方式 0,这时定时器/定时器的等效框图如 下:
TH0=0x3C; //装入高八位
TL0=0xB0;
//装入低八位
tt++;
技术支持群:11313486
}
7、方式 0 应用 假设系统时钟采用 6MHz,要在 P1.0 上输出一个周期为 2ms 的方波,如图所示。
方波的周期用定时器 T0 来确定,采用中断的方法来实现,即在 T0 中设置一个时间常数(计 数初值),使其每隔 1ms 产生一次中断,CPU 相应中断后,在中断服务程序中对 P1.0 取反。 编程步骤为以下: 1) 计算初值如下图
GATE=0 时,A 点如图电位恒为 1,B 点的电位取决于 TRX 状态。TRX=1,B 点为高电平, 控制端控制电子开关闭合。计数器脉冲加到 TI 或 T0 引脚,允许 T1 或 T0 计数。TRX=0,B 点为低电平,电子开关断开,禁止 T1 或 T0 计数。
GATA=1 时,B 点点位由 INTX 的输入电平和 TRX 的状态确定,当 TRX=1,且 INTX=1(X=1, 0)时,B 点才位 1,控制端控制电子开关闭合,允许定时器/计数器计数,故这种情况下计 数控制是由 TRX 和 INTX 两个条件控制。
具体程序如下:
#include<reg52.h> //引入头文件
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit dula=P2^6; //定义段选
sbit wela=P2^7; //定义位选
uchar num,tt; //定义变量
红峰电子学习室
3、工作方式寄存器 TMOD TMOD 用于选择定时器/计数器的工作模式和工作方式,它的字节地址为 89H,不能进行位寻 址。其格式如下:
8 位分为两组,高四位控制 T1,低四位控制 T0。 1) GATE=0 时,仅由运行控制位 TR0 或 TR1=1 来启动定时器/计数器运行。
GATE=1 时,由 TR0 或 TR1=1 和外部中断引脚上的高电平共同来启动定时器/计数器。 2) M1、M0 共有四种编码,对应 4 种工作方式如图:
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器的方式 2 为自动恢复初值的 8 位定时器/计数器,THX 作为常数缓冲器, 当 TLX 计数溢出时,在置 1 溢出标志位 TFX 的同时,还自动的将 THX 中的常数送至 TLX, 使 TLX 从初值开始重新计数。定时器/计数器的方式 2 工作过程如下图所示。
方式 0 和方式 1 的最大特点是计数溢出后,计数器为全 0。因此在循环定时或循环计数 应用时就存在反复用软件设置计数初值的问题。这不仅影响定时精度,而且也给程序设计带 来麻烦。方式 2 就是针对此问题而设置的。 当 M1、M0 为 10 时,定时器/计数器处于工作方式 2,这时定时器/计数器的等效框图如图所 示。(以定时器 T1 为例,X=1)。
3) C/T--计数器模式和定时器模式选择位 C/T=0,为定时模式。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
C/T=1,为计数模式,计数器对外部引脚 T0 或 T1 的外部脉冲负跳变计数。
4、定时器/计数器控制寄存器 TCON TCON 的字节地址为 88H,可进行位寻址,位地址为 88H---8FH。TCON 格式如下:
个计数器的计数脉冲输入端。每当外部输入的脉冲发生负跳变时,计数器加 1。 2) 定时器功能也是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机内部,即
每个机器周期产生一个计数脉冲,也就是每经过 1 个机器周期的时间,计数器加 1。如 果单片机采用 12MHz 晶体,则计数器频率为 1MHz(一个机器周期等于 12 个振荡周期)即 每过 1us 的时间计数器加 1。这样可以根据计数值计数出定时时间,也可以根据定时时 间的要求计算出计数器的初值。当定时器/计数器为定时工作方式时,计数器的加 1 信 号由振荡器的 12 分频信号产生,即每过一个机器周期,计数器加 1,直至计满溢出为 止。显然,定时器的定时时间与系统的振荡频率有关。 3)如果晶阵频率为 12MHz 是如何计算的呢?
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器
在工业检测、控制中,许多场合都要用到计数或定时功能。MCS-51 单片机内有两个可 编程的定时器/计数器 T1、T0,以满足这方面的需要。两个定时器/计数器都具有定时器和 计数器功能。 1、两种工作模式: 1) 计数功能是对外来脉冲进行计数。MCS—51 芯片有 T0 和 T1 两个输入引脚,分别是这两
技术支持群:11313486
tt=0;
num=0;
TMOD=0x01; //设定定时器 0 为工作方式 1
TH0=0x3C; //装入高八位
TL0=0xB0; //装入低八位
EA=1;
//开总中断
ET0=1; //开定时器中断
TR0=1; //启动定时器
wela=1; //打开位选
P0=0x00; //显示所有位
定时器/计数器工作在方式 0 时,为 13 位的计数器,由 TLX(X=0,1)的低 5 位和 THX 的高 8 位所构成。TLX 低 5 位溢出则向 THX 进行,THX 计数溢出则置位 TCON 中的溢出标志位 TFX。C/T 位控制的电子开关决定了定时器/计数器的工作模式:
C/T=0,电子开关打在上面位置,T1 为定时器工作模式,以振荡器的 12 分频后的信 号作为计数信号。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
特殊功能寄存器 TMOD 用于选择定时器/计数器 T0、T1 的工作模式和工作方式。TCON 用于控制 T0、T1 的启动和停止计数,同时包含了 T0、T1 的状态。TMOD、TCON 这两个寄存 器的内容由软件设置。单片机复位时,两个寄存器的所有位都被清“0”。
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器 T0 分为两个独立的 8 位计数器:TL0 和 TH0,TL0 使用 T0 的状态控制位 C/T、 GATE、TR0、INT0,而 TH0 被固定为一个 8 位定时器,并使用定时器 T1 的状态控制位 TR1 和 TF1,同时占用定时器 T1 的中断请求标志 TF1。 6、定时器/计数器的应用 假设用定时器 0 定时 50 毫秒的编程步骤。 1)对 TMOD 赋值,以确定 T0 和 T1 的工作方式。
当 M1、M0 为 01 时,定时器/计数器工作于方式 1,这时定时器/计数器的等效电路如下 图所示。以定时器/计数器 T1 为例。
方式 1 和方式 0 的差别仅仅在于计数器的位数不同,方式 1 为 16 位的计数器,由 THX 作为高位和 TLX 作为低位构成(X=0,1),方式 0 则为 13 位计数器,有关控制状态位的含义 (GATE、C/T、TFX、TRX)与方式 0 相同。
C/T=1,电子开关打在下面的位置,T1 为计数器工作模式,计数脉冲为 P3.4、P3.5 引 脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加 1。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
GATE 位的状态决定定时器/计数器运行控制取决于 TRX 一个条件还是 TRX 和 INTX 引 脚这两个条件。
wela=0; //关闭位选
dula=1; //打开段选
P0=0x3F; //送入字形 0
dula=0; //关闭段选
whitt==20) //进入 20 次中断每次中断为 50 毫秒,就是 1 秒
{ tt=0; //让 tt 初始为零
num++; //让 num++
if(num==16) //限制 num 到 16
方式 3 是为了增加一个附加的 8 位定时器/计数器而提供的,方式 3 只能适用于 T0, T1 不能工作在方式 3。T1 处于方式 3 时,相当于 TR1=0,T1 停止计数。
当 TMOD 的低 2 位为 11 时,T0 的工作坊式被选为方式 3,各引脚与 T0 的逻辑关系如下 图所示。
红峰电子学习室
2) 初始化程序 初始化程序包括定时器初始化和中断初始化,主要对 IP、IE、TCON、TMOD 的相
应位进行正确的设置,并将计数器初值送入定时器中。 3) 中断服务程序 4) 中断服务程序初了完成要求的产生方波这一工作之外,还要注意将计数初值重新装入定
时器,为下一次产生中断作准备。(程序没有给出请自行编写)。
num=0; //让 num 清零
dula=1; //打开段选
P0=table[num]; //送入字形码
dula=0; //关闭段选
} } } void exter0() interrupt 1 定义中断函数 {
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
3)中断方式时,则对 IE 赋值,开放中断。
EA=1;
//开总中断
ET0=1; //开定时器中断
4)使 TR0 或 TR1 置位,启动定时/计数器定时或计数。
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void main()
{
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
单片机的定时器/计数器具有 4 种工作方式。其中控制字均在相应得特殊功能寄存器中, 通过编程,用户可以方便地选择定时器/计数器两种工作模式和 4 种工作方式。
2、定时器/计数器的结构 MCS-51 单片机的定时器/计数器结构如下图,定时器/计数器 T0 由特殊功能寄存器 TH0,TL0 构成,定时器/计数器 T1 由特殊功能寄存器 TH1、TL1 构成。
低四位与外部中断有关,已介绍。高四位的功能如下: 1、TF1、TF0---T1、T0 计数器溢出标志位 当计数器溢出时,该位置“1”。使用查询方式时,此位作为状态位供 CPU 查询,但应注 意在查询该位有效后应以软件方法及时将该位清“0”。使用中断方式时,此位作为中断 申请标志位,进入中断服务程序后由硬件自动清“0”。 2、 TR1、TR0—计数器运行控制位 TR1/TR0=1,启动定时器/计数器工作的必要条件,还与 GATE 位的状态有关。 TR1/TR0=0,停止定时器/计数器工作,改为可由软件置“1”或清”0”. 5、定时器/计数器的 4 种工作方式 当 M1、M0 为 00 时,定时器/计数器被设置为工作方式 0,这时定时器/定时器的等效框图如 下:
TH0=0x3C; //装入高八位
TL0=0xB0;
//装入低八位
tt++;
技术支持群:11313486
}
7、方式 0 应用 假设系统时钟采用 6MHz,要在 P1.0 上输出一个周期为 2ms 的方波,如图所示。
方波的周期用定时器 T0 来确定,采用中断的方法来实现,即在 T0 中设置一个时间常数(计 数初值),使其每隔 1ms 产生一次中断,CPU 相应中断后,在中断服务程序中对 P1.0 取反。 编程步骤为以下: 1) 计算初值如下图
GATE=0 时,A 点如图电位恒为 1,B 点的电位取决于 TRX 状态。TRX=1,B 点为高电平, 控制端控制电子开关闭合。计数器脉冲加到 TI 或 T0 引脚,允许 T1 或 T0 计数。TRX=0,B 点为低电平,电子开关断开,禁止 T1 或 T0 计数。
GATA=1 时,B 点点位由 INTX 的输入电平和 TRX 的状态确定,当 TRX=1,且 INTX=1(X=1, 0)时,B 点才位 1,控制端控制电子开关闭合,允许定时器/计数器计数,故这种情况下计 数控制是由 TRX 和 INTX 两个条件控制。
具体程序如下:
#include<reg52.h> //引入头文件
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit dula=P2^6; //定义段选
sbit wela=P2^7; //定义位选
uchar num,tt; //定义变量
红峰电子学习室
3、工作方式寄存器 TMOD TMOD 用于选择定时器/计数器的工作模式和工作方式,它的字节地址为 89H,不能进行位寻 址。其格式如下:
8 位分为两组,高四位控制 T1,低四位控制 T0。 1) GATE=0 时,仅由运行控制位 TR0 或 TR1=1 来启动定时器/计数器运行。
GATE=1 时,由 TR0 或 TR1=1 和外部中断引脚上的高电平共同来启动定时器/计数器。 2) M1、M0 共有四种编码,对应 4 种工作方式如图:
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器的方式 2 为自动恢复初值的 8 位定时器/计数器,THX 作为常数缓冲器, 当 TLX 计数溢出时,在置 1 溢出标志位 TFX 的同时,还自动的将 THX 中的常数送至 TLX, 使 TLX 从初值开始重新计数。定时器/计数器的方式 2 工作过程如下图所示。
方式 0 和方式 1 的最大特点是计数溢出后,计数器为全 0。因此在循环定时或循环计数 应用时就存在反复用软件设置计数初值的问题。这不仅影响定时精度,而且也给程序设计带 来麻烦。方式 2 就是针对此问题而设置的。 当 M1、M0 为 10 时,定时器/计数器处于工作方式 2,这时定时器/计数器的等效框图如图所 示。(以定时器 T1 为例,X=1)。
3) C/T--计数器模式和定时器模式选择位 C/T=0,为定时模式。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
C/T=1,为计数模式,计数器对外部引脚 T0 或 T1 的外部脉冲负跳变计数。
4、定时器/计数器控制寄存器 TCON TCON 的字节地址为 88H,可进行位寻址,位地址为 88H---8FH。TCON 格式如下:
个计数器的计数脉冲输入端。每当外部输入的脉冲发生负跳变时,计数器加 1。 2) 定时器功能也是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机内部,即
每个机器周期产生一个计数脉冲,也就是每经过 1 个机器周期的时间,计数器加 1。如 果单片机采用 12MHz 晶体,则计数器频率为 1MHz(一个机器周期等于 12 个振荡周期)即 每过 1us 的时间计数器加 1。这样可以根据计数值计数出定时时间,也可以根据定时时 间的要求计算出计数器的初值。当定时器/计数器为定时工作方式时,计数器的加 1 信 号由振荡器的 12 分频信号产生,即每过一个机器周期,计数器加 1,直至计满溢出为 止。显然,定时器的定时时间与系统的振荡频率有关。 3)如果晶阵频率为 12MHz 是如何计算的呢?
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器
在工业检测、控制中,许多场合都要用到计数或定时功能。MCS-51 单片机内有两个可 编程的定时器/计数器 T1、T0,以满足这方面的需要。两个定时器/计数器都具有定时器和 计数器功能。 1、两种工作模式: 1) 计数功能是对外来脉冲进行计数。MCS—51 芯片有 T0 和 T1 两个输入引脚,分别是这两
技术支持群:11313486
tt=0;
num=0;
TMOD=0x01; //设定定时器 0 为工作方式 1
TH0=0x3C; //装入高八位
TL0=0xB0; //装入低八位
EA=1;
//开总中断
ET0=1; //开定时器中断
TR0=1; //启动定时器
wela=1; //打开位选
P0=0x00; //显示所有位
定时器/计数器工作在方式 0 时,为 13 位的计数器,由 TLX(X=0,1)的低 5 位和 THX 的高 8 位所构成。TLX 低 5 位溢出则向 THX 进行,THX 计数溢出则置位 TCON 中的溢出标志位 TFX。C/T 位控制的电子开关决定了定时器/计数器的工作模式:
C/T=0,电子开关打在上面位置,T1 为定时器工作模式,以振荡器的 12 分频后的信 号作为计数信号。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
特殊功能寄存器 TMOD 用于选择定时器/计数器 T0、T1 的工作模式和工作方式。TCON 用于控制 T0、T1 的启动和停止计数,同时包含了 T0、T1 的状态。TMOD、TCON 这两个寄存 器的内容由软件设置。单片机复位时,两个寄存器的所有位都被清“0”。
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
定时器/计数器 T0 分为两个独立的 8 位计数器:TL0 和 TH0,TL0 使用 T0 的状态控制位 C/T、 GATE、TR0、INT0,而 TH0 被固定为一个 8 位定时器,并使用定时器 T1 的状态控制位 TR1 和 TF1,同时占用定时器 T1 的中断请求标志 TF1。 6、定时器/计数器的应用 假设用定时器 0 定时 50 毫秒的编程步骤。 1)对 TMOD 赋值,以确定 T0 和 T1 的工作方式。
当 M1、M0 为 01 时,定时器/计数器工作于方式 1,这时定时器/计数器的等效电路如下 图所示。以定时器/计数器 T1 为例。
方式 1 和方式 0 的差别仅仅在于计数器的位数不同,方式 1 为 16 位的计数器,由 THX 作为高位和 TLX 作为低位构成(X=0,1),方式 0 则为 13 位计数器,有关控制状态位的含义 (GATE、C/T、TFX、TRX)与方式 0 相同。
C/T=1,电子开关打在下面的位置,T1 为计数器工作模式,计数脉冲为 P3.4、P3.5 引 脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加 1。
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程
技术支持群:11313486
GATE 位的状态决定定时器/计数器运行控制取决于 TRX 一个条件还是 TRX 和 INTX 引 脚这两个条件。
wela=0; //关闭位选
dula=1; //打开段选
P0=0x3F; //送入字形 0
dula=0; //关闭段选
whitt==20) //进入 20 次中断每次中断为 50 毫秒,就是 1 秒
{ tt=0; //让 tt 初始为零
num++; //让 num++
if(num==16) //限制 num 到 16
方式 3 是为了增加一个附加的 8 位定时器/计数器而提供的,方式 3 只能适用于 T0, T1 不能工作在方式 3。T1 处于方式 3 时,相当于 TR1=0,T1 停止计数。
当 TMOD 的低 2 位为 11 时,T0 的工作坊式被选为方式 3,各引脚与 T0 的逻辑关系如下 图所示。
红峰电子学习室
2) 初始化程序 初始化程序包括定时器初始化和中断初始化,主要对 IP、IE、TCON、TMOD 的相
应位进行正确的设置,并将计数器初值送入定时器中。 3) 中断服务程序 4) 中断服务程序初了完成要求的产生方波这一工作之外,还要注意将计数初值重新装入定
时器,为下一次产生中断作准备。(程序没有给出请自行编写)。
num=0; //让 num 清零
dula=1; //打开段选
P0=table[num]; //送入字形码
dula=0; //关闭段选
} } } void exter0() interrupt 1 定义中断函数 {
红峰电子学习室
MSC-51 单片机 C 语言简单入门教程