IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机的定时器2的配置 -> 正文阅读

[嵌入式]51单片机的定时器2的配置

学过一段时间单片机的你发现,中断服务函数可以在主函数进行的同时,进行一些对时间要求高的模块的配置时,则要用到定时器中断。而如果你要实现多个功能的操作,会使用多个定时器是必要的STC89C51单片机所有的资源中最不好搞清楚的就是定时器2,尤其是对于那些以前从来没有玩过单片机的新手。定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。

? 定时器2有三个模式,在这里我们只是介绍系统的简单配置与将定时器2当成一般递增/递减计数器的使用代码,剩下的模式可以自己查阅手册:

? 下面我带着大家简单配置一下:

请添加图片描述
? 手册上写着T2CON是可位寻址的。意思就是可以单独对一个位进行配置。打开单片机的头文件#include <REGX52.H>,可以看到,这些位的具体定义。

? TH2,TL2为大家熟悉的定时器计数初值的配置,RCAP2L与RCAP2H称作陷阱寄存器,用作重装载值的配置。可以在DECN=0的原理图里看到reload字样,表示重装载

? 需要我们手动配置的也就是TF2(定时器溢出标志)和TR2(定时器开关)剩下的寄存器一部分配置定时器的工作模式,这里选择16位自动重装,所以都配置为0

? EXEN2,由于我们不使用捕获模式,所以不用,将其置0.

? 这里需要我们配置的寄存器比较少,所以采用T2CON = 0;先将所有位都置0,然后再按位寻址,进行配置.

TR2 = 1;	//定时器2开始计时
TF2 = 0;        //中断标志清零(写在中断服务函数中)

请添加图片描述

? 可以看到定时器2只需要计时,不需要输出,DECN默认0是向上计数,所以将T2MOD都置为0就行。

T2MOD = 0;	//初始化模式寄存器
T2CON =  0;	  //初始化控制寄存器
TL2 = 0x66;	//设置定时初值
TH2 = 0xFC;	//设置定时初值

请添加图片描述

中断的配置

完全可以参照之前定时器0与定时器1的中断图表:
请添加图片描述
我们看到Timer2哪一行,从左往右看

需要配置的有TF2,ET2,EA以及后面的中断优先级PT2(实际在头文件中就只定义了PT2一个端口)

ET2=1;
EA=1;
PT2=0;

中断服务函数:

请添加图片描述
与普通定时器不同的是,中断标志TF2需要软件配置,其次重装载值需要置入RCAP2L与RCAP2H,以及中断标志位 TF2是需要在软件里面手动置位的,而普通的定时器0,1都是由硬件自动置1.这一点很重要,说白了对于定时器0,1而言TF0,TF1不配置都行。但是定时器2必须要进行配置,否则的话就无法进入中断函数。

void Timer2_Routine() interrupt 5
{
    TF2 = 0;
    RCAP2L  = 0x66	   //设置低位定时初值
    RCAP2H = 0xFC	//设置高位定时初值
    /***/
}

源码/模板:

/**
  * @brief  定时器2初始化,1毫秒@11.0592MHz
  * @param  无
  * @retval 无
  */
void Timer2_Init(void)		
{
	T2MOD = 0;	//初始化模式寄存器
	T2CON = 0;	//初始化控制寄存器
	TL2 = 0x66;	//设置定时初值
	TH2 = 0xFC;	//设置定时初值
	ET2=1;
	EA=1;
	PT2=0;
    TR2 = 1;		//定时器2开始计时
}
//中断服务函数模板
void Timer2_Routine() interrupt 5
{
    TF2 = 0;           //中断标志复位
    RCAP2L  = 0x66	   //设置低位定时初值
    RCAP2H = 0xFC	  //设置高位定时初值
    /***/
}

相关文章推荐:
定时器的相关概念复习
定时器2的另外2种模式的配置说明

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2022-05-04 07:29:03  更:2022-05-04 07:29:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:51:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码