51单片机定时器中断定时方式012的区别

2023-05-16

51单片机定时方式0,1和2的区别:
首先采用Fsoc=12MHz晶振,其机器周期为12/Fsoc,即为1us; 定时方式0为13位定时/计数器,记满值为213=8192;定时方式1为16位定时/计数器,记满值为216=65536,16位初值分为高8位与低8位赋值,如采用定时器0,定时时间20ms,其高8位赋值TH0=(65536-20000/1)/256分析一下高8位赋值公式,由于51只有向上计数能力,因此可以假设先用65536填满,然后再减去要计时的时间20000,/1为除以机器周期,然后/256为把低8位(2^8=256)去掉,保留高8位;TL0=(65536-20000/1)%256,%256为对256进行取余,即把高8位去掉,保留低8位。由于其不具有重装初值功能 ,若要执行连续计时多个20ms,必须在定时器中断(T0对应 interrupt 1)中给其重新赋TH0 TL0初值,然后用一变量来统计次数,实现20ms的倍数定时。定时器0中断相关的寄存器有总中断开关(EA),定时器T0中断开关(ET0) 使能T0(TR0),TMOD为设置工作方式,如方式1为TMOD=0x01。 定时方式2 为具有自动重装初值能力的8位定时/计数器,其一个定时范围只有256us,以定时器0为例,其中TH0为定时初值,TL0为执行后自动重装的初值。 讲一下配置一个定时器中断的整个过程:1. 设置定时方式TMOD;2. 赋初值;3. 开总中断EA;4. 开定时器中断ET0、ET1;5. 使能中断TR0、TR1;6. 写中断服务函数,T0对应interrupt 1, T1对应interrupt 3;

工作方式1:在这里插入图片描述

工作方式2:在这里插入图片描述

对比两种方式,可以看到方式1需要在中断服务函数中重新赋初值,方可执行多次定时器中断,而方式2不需要,因为它每执行一次定时器中断后会将TL0的值作为初值进行自动重装。

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

51单片机定时器中断定时方式012的区别 的相关文章

  • Android Studio如何实现音乐播放器(简单易上手)

    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味 xff0c 这个时候一边播放自己喜欢的音乐 xff0c 一边继续打代码 xff0c 心情自然也愉快很多 音乐带给人的听觉享受是无可比拟的 xff0c 动听的音乐可以愉悦人的身心 xff0c
  • 一分钟学会Python中pip的安装与使用

    文章目录 一 简单介绍二 下载安装三 最常用命令1 显示版本和路径2 获取帮助3 升级 pip4 安装包5 升级包6 卸载包7 搜索包8 显示安装包信息9 列出已安装的包10 查看指定包的详细信息 一 简单介绍 pip 是 Python 包
  • 不清楚SBUS,这份SBUS协议详解请收藏

    1 简介 SBUS xff0c 全称Serial Bus xff0c 即串行通信总线 本质上是一种串口通信协议 xff0c 采用100K的波特率 xff0c 8位数据位 xff0c 2位停止位 xff0c 偶效验 xff0c 即8E2的串口
  • IDEA 创建Servlet,HelloWorldServlet(图文并茂,超级详细)

    第一步 xff1a 创建一个空的新项目 xff0c File gt New gt Project Empty Project 第二步 xff1a 生成一个module xff0c 项目上点右键 xff0c New gt Moudle 或 F
  • 教你彻底卸载Ubuntu双系统,去污不残留

    我们卸载Ubuntu双系统 xff0c 可能出于以下原因 xff1a span class token number 1 span span class token class name Ubuntu span 系统内核损坏无法正常进入 s
  • Python安装Pytorch教程(图文详解)

    最近人工智能等多门课需要复现论文 xff0c 近两年的论文很多都是基于Pytorch环境做的实验 xff0c 所以 xff0c 这里总结一下Pytorch的安装教程 xff0c 做好最快 最简单 最好地完成安装 本机环境Win10 43 1
  • Win10安装Ubuntu18.04双系统,图文详解,全网最详细教程

    博主经历过多次双系统的安装与卸载 xff0c 所以这次安装就记录下全过程 xff0c 能让后面的同学少走弯路 本教程对笔记本电脑单硬盘和双硬盘通用 安装目录 一 查看电脑信息1 BIOS模式2 查看硬盘数 二 制作系统盘1 下载镜像源2 制
  • Ubuntu18.04安装Ceres,图文详解

    视觉SLAM14讲 的第6章里面 xff0c 用到了Ceres库 xff0c 按照本书3rdparty提供的资源编译时 xff0c 会报错 xff0c 原因是和eigen3版本发生冲突 网上很多解决方法是重装eigen xff0c 尝试后也
  • Ubuntu20.04部署yolov5目标检测算法,无人车/无人机应用

    在FireFly RK3588开发板上烧录了Ubuntu20 04系统 xff0c 在此基础上线部署下简单的Python版本yolov5代码 xff0c 目前博主已全部转为C 43 43 版本了 xff0c 并且转化了pt模型为rknn模型
  • ubuntu查看cpu使用率

    rk3588上安装的ubuntu系统 xff0c 规格书上是8核CPU xff0c 希望跑算法时使用4核来跑 xff0c 所以需要查看cpu的使用情况 输入gnome system monitor xff0c 开启进程界面 xff1a 点击
  • 【视觉SLAM】MonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving C

    Citations xff1a F Wimbauer N Yang L von Stumberg et al MonoRec Semi Supervised Dense Reconstruction in Dynamic Environme
  • Win10蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

    最近一段时间 xff0c 我一直出现蓝屏的情况 xff0c 以为是 span class token constant CPU span 散热不行导致的重启 xff0c 因为比较频繁所以在此记录解决这个问题 xff0c 还是一贯的风格 xf
  • Android Studio实现文件管理器

    项目目录 一 项目概述二 开发环境三 详细设计1 布局设计2 程序运行时申请权限3 查看文件4 删除文件5 搜索文件6 新建文件 四 运行演示 一 项目概述 本次带来的文件管理器 xff0c 能够对SD卡的目录进行管理 主要功能包括新建文件
  • Failed to install the following Android SDK packages as some licences have not been accepted. bu

    报错信息 Android 开发者工具 Android开发者构建工具28 0 3 Android开发者平台28的协议都没有被接受 Failed to install the following Android SDK packages as
  • Jetson TX1 介绍

    前因 Jetson TX1 核心模块目前已经停产 xff0c 但是我们发现市面上有很多二手模块可以很容易获取 xff0c 同时 xff0c 英伟达对于Jetson TX1 的所有软件支持依然集成在了SDK manager中 xff0c 在最
  • Received status code 400 from server: Bad Request

    一 报错信息 FAILURE span class token operator span span class token class name Build span failed span class token keyword wit
  • Oracle VirtualBox虚拟机安装

    1 到官网下载虚拟机安装包 xff08 https www virtualbox org wiki Downloads xff09 2 下载后的样子 3 选择安装路径 4 选择要安装的功能 5 安装 6 安装完成
  • VirtualBox虚拟机安装Red Hat Enterprise Linux7.2

    1 首先安装好VirtualBox 2 下载好rhel server 7 2 xff0c 下载好长这样 3 点击新建 xff0c 在弹出窗口中输入名称 xff0c 选择类型和版本 xff0c 之后点击下一步 4 选择内存大小 xff0c 根
  • HTML 页面中的 target 用法

    值含义 blank在新窗口中打开链接 parent在父窗体中打开链接 self在当前窗体打开链接 此为默认值 top在当前窗体打开链接 xff0c 并替换当前的整个窗体 框架页 一个对应的框架页的名称在对应框架页中打开
  • VirtualBox挂载RedHat光盘

    1 使用root用户登录RedHat系统 xff0c 点击设备 gt 安装增强功能 2 安装增强功能后桌面会出现一个光盘标志 xff0c 弹出框点取消 3 为防止后续步骤出错 xff0c 此处重新分配光盘 点击设备 gt 分配光驱 xff0

随机推荐