8052单片机定时计数器T2的使用

一、引言

最近做毕业设计用到了8052单片机,因为8052单片机的性能更强一些,而且有6个中断源,相较于8051单片机增加了定时计数器T2,功能更强大了。

今天主要说一下8052单片机T2做计数器时的用法,主要是寄存器的配置,定时器以及其他的用法等我研究之后再更新此贴。

二、8052与8051单片机的区别

在这里插入图片描述
备注:8052单片机相较于8051单片机除了ROM和RAM上的提升,主要是增加了一个定时器/计数器T2。

三、定时计数器T2的三种工作模式

1.捕捉模式

捕捉模式参考这里

2.自动重装模式

本文目前主要介绍该模式,其余模式有待更新。

3.波特率发生器

波特率发生器参考这里

四、定时计数器T2的寄存器

和8051单片机一样,T2也有控制寄存器和方式寄存器。
控制寄存器:T2CON,字节地址0C8H
方式寄存器:T2MOD,字节地址0C9H (一般用不到)
加电或复位后自动均置为0。

1.T2CON(控制寄存器)

在这里插入图片描述
在这里插入图片描述

2.T2MOD(方式寄存器)

在这里插入图片描述

五、"reg52.h"中包含的位定义变量

经过我的实际测试,再Keil5的环境下,导入头文件#include<reg52.h>后,T2MOD关键字仍不能被识别,但是没关系,T2MOD寄存器一般不用配置。

以下位定义的寄存器可以直接使用:

sfr T2CON  = 0xC8; //Timer 2 CONtrol, 定时器2控制
sfr RCAP2L = 0xCA; //Reload/CAPture 2 Low-byte, 重载/捕获低8位
sfr RCAP2H = 0xCB; //Reload/CAPture 2 High-byte, 重载/捕获高8位
sfr TL2    = 0xCC; //Timer 2 Low-byte, 定时器2低8位
sfr TH2    = 0xCD; //Timer 2 High-byte, 定时器2高8位

sbit TF2    = T2CON^7; //Timer (overflow) Flag 2, 定时器2溢出标志
sbit EXF2   = T2CON^6; //timer EXternal (overflow) Flag 2, 定时器2外部引脚溢出标志
sbit RCLK   = T2CON^5; //Receive CLocK, 接收时钟标志位
sbit TCLK   = T2CON^4; //Transmit CLocK, 发送时钟标志位
sbit EXEN2  = T2CON^3; //timer EXternal ENable, 外部中断允许标志位
sbit TR2    = T2CON^2; //Timer Run control 2, 定时器运行控制2
sbit C_T2   = T2CON^1; //Counter/Timer 2, 计数器/定时器功能选择2
sbit CP_RL2 = T2CON^0; //CaPture/ReLoad 2, 捕获/重载功能选择2
sbit ET2;              //T2的中断允许位,ET2=1,允许中断。ET2=0,不允许中断。

使用时无需定义,直接赋值即可,例如:

RCAP2L = 0xFF;
RCAP2H = 0xFF;

六、实例

使用T2计数器中断实现LED灯的开关控制。
每按一次开关,T2中断一次,在中断函数中改变LED的亮灭。
在这里插入图片描述

#include<reg52.h>
int num=0x00;
int main(){
	T2CON=0x00;    //可不进行配置,这行代码可以不写
	C_T2=1;        //使T2为计数方式  
	CP_RL2=0;      //使T2为重装模式
	EXEN2=0;       //禁止外部时钟触发,溢出时重装
	TH2=0XFF;       //高8位初值
	TL2=0XFF;       //低8位初值
	RCAP2H=0xFF;    //溢出时,将RCAP2H重装入TH2
	RCAP2L=0xFF;    //溢出时,将RCAP2L重装入TL2
	TR2=1;          //允许T2工作
	ET2=1;		    //允许T2中断
	EA=1;	        //开总中断
	while(1);
	return 0;
}

timer2() interrupt 5{
	TF2=0;        //清除中断标志位
	EXF2=0;       //清除溢出标志位
	P2=num;
	num=~num;
}
  • 1
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值