技术标签: c语言 C51单片机 keil5 嵌入式硬件 单片机
学过一段时间单片机的你发现,中断服务函数可以在主函数进行的同时,进行一些对时间要求高的模块的配置时,则要用到定时器中断。而如果你要实现多个功能的操作,会使用多个定时器是必要的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种模式的配置说明
文章浏览阅读2.7k次。同理安装过程是相反的,而且我这里反了一个错误,忘记安装排线了,导致一直没好,最后安装排线就正常了。后来经过我验证是电池充电小板问题。红色框框里面是充电小板,然后充电器可以看到是不亮的。我的mac电脑用久了,最近有点小毛病,最近充不上电了,主要表现如下。卸掉螺丝后,然后卸掉一个充电线,然后根据如下图,把这几个卸掉。这是当初的样子,该电脑比较老了,型号是A466。我们需要先卸掉排线,然后卸掉如下螺丝。打开如下,然后倾斜的撬动这个充电小板。_mac 电源头充电接口就是电源小板吗
文章浏览阅读4.3k次,点赞2次,收藏4次。nvenc.c是一个用nvidia来执行的代码,下面简单分析nvenc编码的基本流程, 主要关注与nvenc底层相关的接口调用,也就是下图所示AVCodec_nvencoder 流程
文章浏览阅读1.2k次,点赞2次,收藏4次。1、如何创建自定义焊盘,比如这种形状的焊盘。(1)、打开PCB Editor –>Allegro PCB Design ->New,在类型中选择Shape symbol,并输入名字,比如test,点击OK。(2)、点击Setup -> Parameter Editor,进行页面尺寸及栅格点设置。(3)、点击..._allegro画圆焊盘
文章浏览阅读1.9k次。(ECS Bare Metal Instance)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点,分钟级的交付周期将提供给您实时的业务响应能力。操作系统虚拟化架构把单个的操作系统划分为多个容器,使用容器管理器来进行管理。裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。_分别简述寄居虚拟化、裸金属虚拟化、操作系统虚拟化、函数库虚拟化的特点。
文章浏览阅读727次。2023贵州省职业院校技能大赛大数据技术与应用专业样题_贵州省大数据技能竞赛题目
文章浏览阅读1.3k次。在学习红黑树之前,最好已经学习过AVL树了,因为二者的实现方式是有很大程度类似的(左旋和右旋),但是只不过二叉平衡树是在每次加入节点时,需要计算该节点的左右子树高度差,如果高度差大于一则旋转调节使其平衡;而红黑树是在每次加入节点时计算红黑节点之间的关系,如果关系错误,则通过旋转和改变颜色来调节树的结构。总之,AVL树也好,RB树也好,都只不过是一种优化二叉查找树的高级方式而已。下面是C#实..._c#红黑树
文章浏览阅读1.1w次,点赞141次,收藏423次。大家好,我是小林哥。经常会有读者跟小林发私信,说我的图解系统和图解网络在面试中帮到他们,而且不少都是拿到了一线的大厂。于是,我就在想,能不能邀请这些优秀的读者来分享他面试心得和学习经验。因为小林读者里肯定还有很多是在校生,我相信这些过来人的经验会帮助到你们,也让大家能提前知道如何准备,少走一些弯路,磨平校招的信息差,不至于到大四才知道校招这些事情。说干就干,然后就有了这个「读者牛逼系列」,真心希望这里的每一位牛逼读者的经历,能够影响到你,给你带来启发和价值。今天来跟大家分享的是一位我影响很深刻的读_读完 深入理解计算机系统 阅读顺序
文章浏览阅读1.8k次。基本操作: 移动:← → ↓ ↑ 对话:空格键/回车键 运行环境:Windows/LinuxJRE 1.6或以上(不装跑不了) JRE下载地址:http://www.java.com/zh_CN/download/manual.jsp 注意:游戏处在开发阶段,仅体验 StarTown v0.5 英文版 1.添加游戏专用数据库 2.添加fps控制游戏运行的速度 3.改善人物行走 本次更新添加了一_5 .0p:/>x'; 墆 娶爔 8hwz bk6t0il 符蜂開da日
文章浏览阅读603次。视屏按照后台下发的模块(片段节点)快进或快退protected void prev() { isFastSeeking = true; if (isLoopSegmeng) { isLoopSegmeng = false; playMenuView.setPlayLoopSegmengBackgroud(isLoopSe_快进时显示快进片段
文章浏览阅读1.3k次。公用响应公用响应首页接口获取用户token获取首页数据获取商品详情页评论列表获取商品搜索历史搜索商品获取商品分类获取商品通过分类id商品收藏商品取消收藏添加到购物车我的购物车变化购物车数量删除购物车用户点击立即购买下单用户创建订单页面用户地址 获取用户地址 设置默认用户地址删除用户地址添加讨论区 列表问题详情页用户删除问题详情页评论用户添加问题..._crmeb如何对接小程序接口
文章浏览阅读1w次,点赞5次,收藏6次。在dos命令行下输入:telnet towel.blinkenlights.nl_dos命令星球
文章浏览阅读7.6k次,点赞3次,收藏6次。哈佛结构和冯·诺依曼结构的区别_冯·诺曼架构缺陷