STC89C52RC/RD中定时器2的使用方法

2023-05-16

学过一段时间单片机的你发现,中断服务函数可以在主函数进行的同时,进行一些对时间要求高的模块的配置时,则要用到定时器中断。而如果你要实现多个功能的操作,会使用多个定时器是必要的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,然后再按位寻址,
源码/模板:
/**
  * @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      //设置高位定时初值
    /***/
}
————————————————

#include <STC89C5xRC.H>
void InitT0(){
    TMOD=0X01;
    TH0=0XFC;
    TL0=0x66;
    ET0=1;
    TR0=1;
}
void servicet0() interrupt 1{
    static unsigned int t_1s=0;
    TH0=0XFC;
    TL0=0x66;
    t_1s++;
    if(t_1s>=1000){
        t_1s=0;
        P00=~P00;
    }
}

void InitT2(){
    T2MOD = 0;        //初始化模式寄存器
    T2CON = 0;        //初始化控制寄存器
    TL2 = 0x66;        //设置定时初始值
    TH2 = 0xFC;        //设置定时初始值
    RCAP2L = 0x66;        //设置定时重载值
    RCAP2H = 0xFC;        //设置定时重载值
    TR2 = 1;        //定时器2开始计时
    PT2=0;            //感觉比定时器0快一些
    ET2=1;
}
void servicet2() interrupt 5{
    static unsigned int t_1s=0;
    TF2=0;
    t_1s++;
    if(t_1s>=1000){
        t_1s=0;
        P01=~P01;
    }
}

 

void main(){
    InitT0();
    InitT2();
    EA=1;
    P1=(P1&0XE0)|0X0E;
    while(1){
    }
}
原文链接:https://blog.csdn.net/qq_60521516/article/details/124450447

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STC89C52RC/RD中定时器2的使用方法 的相关文章

  • insert语句中sequence的使用方法

    我们常常在表中需要插入一些自动增长的值 一方面 我们可以手动添加这些值 xff0c 另一方面 oracle提供的sequence可以帮助我们实现插入的值自动增长 而不需要我们手动的提供值 我们需要做的就是设置好sequence的初值和增长值
  • ctags使用方法 ctags的使用方法

    用 ctags 看代码时 xff0c 检索函数及变量使用的文件是 tags 文件 有时我们会定制检索的文件范围 xff0c 这时候就可以通过 ctags 命令的一些参数来控制 tags 文件的内容 1 xff1a 递归检索当前目录以下所有默
  • git 的使用方法 (下 - 远程仓库和图形化)

    目录 前言 xff1a 一 什么是协同开发二 Gitee 使用协同开发1 首先注册一个码云账号2 新建一个仓库3 根据下图把新建仓库设置为开源4 在远端合并分支的方法5 链接 git 远程6 提交 xff08 同步 xff09 远程7 远程
  • linux ssh上传下载文件命令SCP使用方法

    在linux环境里 xff0c 我们从服务器上下载或者从本地上传文件到服务器上可以通过SCP命令 来实现 SCP即Security Copy xff0c 是基于SSH登录实现的远程文件拷贝命令 命令参数 xff1a r 递归复制整个文件夹
  • CMake使用方法

    用MinGW和CMake搭建便捷的C C 43 43 开发环境 xff08 二 xff09 七 CMake练习 准备工作 xff1a 在E盘新建一个文件夹cmakeproj xff0c 作为工程目录 xff0c 在cmakeproj文件夹中
  • Gson使用方法

    一 概述 Gson是google提供的用来操作json数据的一个非常好用的类库 其使用范围非常的广泛 xff0c 所以非常有必要对其进行系统的学习 json是一种数据格式 xff0c 确切的说是一种文本数据格式 其在网络通讯过程中的作用非常
  • python中类和函数变量的 (作用域大小、使用方法)

    usr bin python coding UTF 8 class Employee 39 所有员工的基类 39 TotalCount 61 0 name 61 34 张三 34 def init self A1 A2 初始化文件名Empl
  • MFC CStringArray使用方法

    xfeff xfeff MFC CStringArray使用方法 2014 07 04 10 03 34 转载 标签 xff1a vc 分类 xff1a Visual C CArray arrroads CStringArray road
  • Windbg调试(使用方法)

    一 Windbg版本信息 Windbg分32位和64位版本 xff0c 32位程序应使用32位Windbg调试 xff0c 64位程序应64位Windbg调试 若想使用64位的Windbg分析32位的程序 使用如下命令进行CPU模式的切换
  • Hive--OR-AND使用方法

    OR AND 数据源 xff1a 1 22 1 21 2 22 1 20 select from id age where id 61 1 or id 61 2 and age 61 22 表示 xff1a 查询id 61 1 同时age
  • switch-case使用方法

    switch case 语句判断一个变量与一系列值中某个值是否相等 xff0c 每个值称为一个分支 switch case 语句语法格式如下 xff1a switch语句应用举例1 xff1a public class VariableTe
  • 485是什么以及特点、协议、使用方法

    1 485是什么 xff1f 485 xff0c 通信接口的远程称重数据采集方法 xff0c 在要求通信距离为几十米到上千米时 xff0c 广泛采用RS 485串行总线标准 RS 485采用平衡发送和差分接收 xff0c 因此具有抑制共模干
  • vim-plug的使用方法

    vim plug介绍 Vim plug 是一个自由 开源 速度非常快的 并行地安装或更新插件 xff0c 极简的 vim 插件管理器 GIT获取和安装 https git scm com 插件获取 https github com june
  • git-cola 使用方法

    目录 git cola 的用法实践记录 git cola 是 git的图形界面管理工具 因此 xff0c 在安装 git cola之前 xff0c 一般首先需要安装 git 官网地址 xff1a http git cola github i
  • jtextpane的使用方法

    jtextpane是java swing中的一个组件 xff0c 是一个可以编辑和显示html xff0c rtf和普通文本的富文本组件 xff0c jtextpane是根据使用EditorKit来显示内容的 xff0c 目前jtextpa
  • wait_event_interruptible_locked的使用方法

    wait event interruptible locked interface New wait event interruptible exclusive locked irq macros added They work just
  • vscode使用方法

    01 ctrl 43 u 返回上一个光标焦点 02 发送请求插件 到VSCode插件中搜索REST Client 搜索到 xff0c 点击install进行安装 创建一个 http文件 编写测试接口文件 右键选择 发送请求 xff0c 测试
  • 农业土壤墒情监测系统解决方案

    一 方案概述 土壤墒情监测系统能够实现对土壤墒情 土壤湿度 的长时间连续监测 用户可以根据监测需要 灵活布置土壤水分传感器 也可将传感器布置在不同的深度 测量剖面土壤水分情况 系统还提供了额外的扩展能力 可根据监测需求增加对应传感器 监测土
  • 多普勒超声波流量计工作原理及优缺点

    多普勒超声波流量计是是利用声波在流体中传播的多普勒效应 通过测定流体中运动粒子散射声波的多普勒频移 即可得到流体的速度 结合内置压力式水位计 利用速度面积法 即可测量液体的流量 适合于明渠 河道及难以建造标准断面的流速流量测量以及于各种满管
  • 土壤含水量仪的监测方法

    土壤含水量监测仪对土壤内部水分含量情况进行监测 可实现对灾害隐患点土壤含水量的长期实时监测 仪器主机采用低功耗设计 工作功耗可达毫瓦级 根据滑坡隐患点的特点 仪器主机采用多通道设计 可根据实际情况接驳1 4路土壤含水量传感器对监测点不同深度

随机推荐

  • python---布谷鸟搜索算法

    布谷鸟搜索算法 xff08 Cuckoo Search xff0c CS xff09 布谷鸟算法的启发当然来自于布谷鸟 xff0c 因为布谷鸟这种鸟很有意思 xff0c 生出来的孩子自己不养 xff0c 直接被扔到其他鸟的鸟巢中去了 xff
  • THRESH_OTSU mode: > ‘src_type == CV_8UC1 || src_type == CV_16UC1‘ > where > ‘src_type‘ is 6

    问题 xff1a python cv2 报错 xff1a 原因 OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法 xff0c 是一种自适应的阈值确定的方法 xff0c 又称大津阈值分割法 xff0c 是最小二
  • 树莓派4B安装ubuntu mate崩溃(卡死)解决办法

    初次安装过程中 不要连WIFI xff01 xff01 xff01 不要接网线 xff01 xff01 xff01 我重装了不下15次所得来的惨痛教训 xff01 xff01 xff01
  • ubuntu20.04配置FrankMocap实现3D人体姿态估计

    一 初始环境配置 1 ubuntu20 04配置显卡驱动 以我的这篇文章为例子 xff0c 显卡RTX2060及以下的都可以使用我的方法快速完成配置 xff0c RTX2060以上的我尚未进行尝试 xff0c 请自行斟酌尝试 联想拯救者R7
  • 使用VNC远程控制树莓派的Ubuntu20.04(arm)

    一 将PC与树莓派连接到同一个局域网内 比如 xff1a 将树莓派和PC连接到同一个wifi中 xff0c 方法一 xff1a 如果是家用wife发射器 xff0c 则可以在浏览器中输入 xff1a http 192 168 0 1 来查询
  • vue笔记

    ES6相关补充 var 没有块级作用域 let 有块级作用域 ES5之前因为if和for都没有块级作用域的概念 xff0c 只能借助function的作用域来解决应用外面变量的问题 let有if和for的块级作用域 变量作用域 xff1a
  • python3字符串

    Python3 字符串 字符串是 Python 中最常用的数据类型 我们可以使用引号 或 来创建字符串 创建字符串很简单 xff0c 只要为变量分配一个值即可 例如 xff1a var1 61 Hello World var2 61 Run
  • html思维导图

    标题标签 标题标签 h1 h5 xff0c 字体从大到小 对应英文语义headline 使用注意 xff1a 标题里的文字要xian想水平居中或者垂直居中得用text align和line height来做 xff0c 内外边距不行 xff
  • 什么是MVVM?

    什么是MVVM MVVM是Model View ViewModel的缩写 MVVM是一种设计思想 View层是视图层 xff0c 也就是用户界面 前端主要由HTML和CSS来构建 xff1b Model层 是指数据模型 xff0c 泛指后端
  • Docker——Windows版本Docker安装

    目录 一 简介 1 1 Docker如何解决大型项目依赖关系复杂 xff0c 不同组件依赖的兼容性问题 xff1f 1 2 Docker如何解决开发 测试 生产环境有差异的问题 1 3 Docker 和 虚拟机的区别 1 4 Docker架
  • 细说C++中的 :: 和 : 的区别

    C 43 43 中的 1 类的作用域 作用域符号 的前面一般是类名称 xff0c 后面一般是该类的成员名称 xff0c C 43 43 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分 假如 xff1a A B表示两个类 xff0
  • 扰动观测器(DOB)设计

    snf 机器人机械手可能会受到不同类型的干扰 例如未知的有效载荷 未建模的动力学和环境相互作用力 观察机器人操纵器中的这些未知干扰是许多机器人应用的基础 例如干扰抑制和无传感器力控制 机械手在进行正常操作时可能会受到不同类型的干扰 粗略地说
  • Gazebo安装教程——在 Ubuntu 上安装Gazebo的源代码

    安装工具 建议使用一些额外的工具来帮助编译源代码 xff0c 尽管其他正确获取和构建源代码的方法也是可能的 获取所有库的源代码的最简单方法是使用 vcstool 要以正确的顺序编译所有不同的库和 ign gazebo xff0c 建议使用c
  • 线性与非线性控制

    控制理论领域可以分为两个分支 xff1a 线性控制理论 这适用于由遵循叠加原理的设备组成的系统 xff0c 这大致意味着输出与输入成正比 它们由线性微分方程控制 一个主要的子类是另外具有不随时间变化的参数的系统 xff0c 称为线性时不变
  • 模型预测控制(Model predictive control,MPC)

    模型预测控制 MPC 是一种先进的过程控制方法 xff0c 用于在满足一组约束条件的同时控制过程 自 1980 年代以来 xff0c 它一直在化工厂和炼油厂的加工工业中使用 近年来 xff0c 它还被用于电力系统平衡模型 1 和电力电子学中
  • 蓝桥杯单片机官方测试程序现象

    IO模式 xff0c 矩阵按键下 xff1a 开机次数 测试AT24C02 S7 测试LED 按2次 S11 测试DAC 按4次 S15 测试ADC双通道 按2次 S19 测试超声波 S6 测试温度模块 S10 0 测量 S14 测试继电器
  • 51单片机的1T和12T的区别

    1T 模式 不分频 1个系统基本时钟 xff0c 执行一个动作 xff1b 12T模式 12分频 12个系统基本时钟 xff0c 执行一个动作 xff1b 因此 xff0c 12T模式和1T模式执行相同次数的动作 xff0c 12T模式需要
  • python2数据类型

    Python3 数字 Number Python 数字数据类型用于存储数值 数据类型是不允许改变的 这就意味着如果改变数字数据类型得值 xff0c 将重新分配内存空间 以下实例在变量赋值时 Number 对象将被创建 xff1a var1
  • keil中的extern的使用

    C51头文件使用extern的目的是外部变量或函数声明 使用时要注意 1 extern最好写在 h文件中 xff0c 方便后期的可读性 2 在使用extern进行外部变量声明时 xff0c 不能重新给变量赋值 例如 xff1a extern
  • STC89C52RC/RD中定时器2的使用方法

    学过一段时间单片机的你发现 xff0c 中断服务函数可以在主函数进行的同时 xff0c 进行一些对时间要求高的模块的配置时 xff0c 则要用到定时器中断 而如果你要实现多个功能的操作 xff0c 会使用多个定时器是必要的STC89C51单