【第十四届蓝桥杯单片机组】学习笔记(3):定时器和计数器

2023-10-27

前言

定时器作为单片机的内设用途十分广泛:控制信号的采样周期、产生周期信号、测量单片机运行时间、时间片轮转多线程…

关于51单片机定时器的详细解释在我的另外一篇文章:51单片机定时器中有介绍,这里就不再重复了,本篇文章主要是介绍蓝桥杯比赛中需要知道的定时器模式等,介绍如何快速使用编写代码。

定时器配置

  • 在比赛的时候可以使用STC-ISP软件来对定时器的模式和初值进行配置;
    在这里插入图片描述
    • 系统频率:你所使用的晶振频率;
    • 选择定时器:一般51单片机常用的是定时器0和定时器1;
    • 定时器模式:16位就是0xFFFF=65535次计数容量
      在这里插入图片描述
    • 定时器时钟(FOSC):1T则是晶振频率为单位的一个周期,12T则是12次晶振震荡周期作为定时器计数一次;

定时器中断

通过ISP工具配置完定时器之后,是没有开启定时器中断的,这里还需要我们去在初始化定时器后,再去配置中断寄存器;

51单片机中断允许寄存器IE

位序号 D7 D6 D5 D4 D3 D2 D1 D0
位符号 EA ET2 ES ET1 EX1 ET0 EX0
  • EA:全局中断(中断总开关)
  • ET2、ET1、ET0:定时器2,定时器1,定时器0中断
  • ES:串口中断
  • EX1、EX0:外部中断

所以我们如果想开启定时器0中断,那么需要使能EA和ET0

void Timer0Init(void)		//1毫秒@11.0592MHz
{
	AUXR |= 0x80;			//定时器时钟1T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0xCD;				//设置定时初始值
	TH0 = 0xD4;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;				//定时器0开始计时
	
	/*上述的代码是ISP工具生成的定时器的模式初值设置代码,如果要开启中断则要自己写下面两句,开启中断*/
	
	EA=1;//开启总中断
	ET0=1;//开启定时器0中断
}

中断服务函数

51单片机的中断服务函数是在正常函数定义后面加上interrupt 中断服务号来编写的,中断服务号就存储了对应中断源的中断入口地址;

  • 定时器0:interrupt 1
  • 定时器1:interrupt 3
void Time0Isr() interrupt 1	//定时器0中断回调函数
{
	static uint8_t num=0;
	if(num<100)
	{
		num++;
	}
	else
	{
		LED1=~LED1;//中断服务函数,如果是定时器没有自动重装载的话记得在这里重装初始,即设置:TH0和TL0的值
		num=0;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【第十四届蓝桥杯单片机组】学习笔记(3):定时器和计数器 的相关文章

  • 可执行文件的格式(ELF格式)详解

    各种讲解elf文件格式一上来就是各种数据类型 看了半天却不知道这些数据类型是干啥的 所以咱就先找个例子直接上手 这样对elf文件格式有个具体而生动的了解 然后再去看那些手册 就完全不惧了 我们使用一个汇编程序max s并对其进行编译链接产生
  • vant 使用deep修改样式不好使解决方案

  • php7 libevent扩展,PHP7 安装event扩展的实现方法

    Libevent 是一个用C语言编写的 轻量级的开源高性能I O框架 支持多种 I O 多路复用技术 epoll poll dev poll select 和 kqueue 等 支持 I O 定时器和信号等事件 注册事件优先级 PHP提供了
  • 【牛客】四选一多路器

    描述 制作一个四选一的多路选择器 要求输出定义上为线网类型 状态转换 d0 11 d1 10 d2 01 d3 00 信号示意图 波形示意图 输入描述 输入信号 d1 d2 d3 d4 sel 类型 wire 输出描述 输出信号 mux o
  • 前端面试题之React

    文章目录 1 React生命周期 V16 3 之前 挂载阶段 组件更新阶段 卸载阶段 新增后 挂载阶段 更新阶段 static getDerivedStateFromProps shouldComponentUpdate render ge
  • SSM myBatis 配置及自动生成Bean 和 Dao

    因为我发现在做SSM 的配置的时候 配置中出现一点问题都会导致项目打包失败或者其他问题 但是我发现网上很多都没有贴出每个配置文件的代码 如果是新手在配置上就会走很多的弯路 所以这里我贴出所有配置文件的代码 这样会方便很多新手快速的构建正确的
  • Arduino控制舵机

    一 舵机一般有三根线 和Arduino连接一般如下 二 代码分析 include

随机推荐

  • 为什么我们使用Story Points进行估算?

    故事点 Story Points 简介 Scrum指南告诉我们 估算应该由将要完成工作的人提供 但它并没有告诉我们应该如何提供估算 它把这个决定留给了我们 Scrum团队使用的一种常见策略是使用称为故事点的度量单位进行估算 但为什么要使用S
  • hive的row_number()、rank()和dense_rank()的区别以及具体使用

    row number rank 和dense rank 这三个是hive内置的分析函数 下面我们来看看他们的区别和具体的使用案例 首先创建一个文件test A 1 B 3 C 2 D 3 E 4 F 5 G 6 1 2 3 4 5 6 7
  • 国际化字符编码处理总结

    在处理国际化时 处理不当就会产生乱码 通用的做法是都转换为UTF 8编码 对于高层开发语言十分简单 对于底层编程语言则有些复杂 其中涉及的概念也有很多 字符是指计算机中使用的字母 数字 字和符号 包括 1 2 3 A B C 等等 在 AS
  • ‘‘‘python‘‘‘内置函数

    目录 关键字 class 定义类 内置函数 和定义函数的调用一致 常用方法 字符串的方法
  • lua/luci入门

    lua 注释 单行注释 多行注释 数据类型可以用type函数判断 nil 未使用过的变量 既是值 也是类型 boolean string number 相当于c里的double table 唯一的数据结构 基本与php数组类型同 索引数组从
  • openwrt之Uci

    Openwrt中所有的配置文件都存放再 etc config中 uci是openwrt中用来修改配置文件的一个软件 一 配置文件的格式 config声明一个section example 指的是section的type 也就是类型 test
  • C++ 多语言切换

    如果设置UI资源文件非重点不做介绍 设置英文版接口 SetThreadUILanguage MAKELANGID LANG ENGLISH SUBLANG ENGLISH US 此时如果操作系统的语言选择的是简体中文 那么掉系统的AfxMe
  • 已解决(Python3中pip无法安装urllib报错问题)No matching distribution found for urllib

    已解决 Python3中pip无法安装urllib报错问题 ERROR Could not find a version that satisfies the requirement urllib from versions none ER
  • selenium 下载文件取消安全下载的配置

    使用 selenium 下载碰见的问题 文件存在危险 因此 Chrome 已将其拦截 查找了很多配置文件都无法解决这个问题 经过多次测试 下面的参数配置可以解决这个问题 selenium 下载文件取消安全下载的配置 如果想要下载文件 可以添
  • MATLAB/Simulink 永磁同步电机启动(I/F控制) 中高速运行(滑模观测器控制/磁链观测器)

    MATLAB Simulink 永磁同步电机启动 I F控制 中高速运行 滑模观测器控制 磁链观测器 运行模式间切换方案设计 性能要求 价格等方面请加好友 卡尔曼滤波器加锁相环 ID 1628564485704566696Elaine
  • java jen部署_CSS布局:Jen Simmons的网格,区域和@Supports

    java jen部署 In this episode of the Versioning Show Tim and David are joined by Jen Simmons Designer Advocate at Mozilla a
  • Python3 基础语法练习小Demo

    文章目录 反恐精英基础版 分析 代码实现 反恐精英修复版 分析 代码实现 反恐精英加强版 分析 代码实现 反恐精英超级加强版 分析 代码实现 反恐精英基础版 一个精英对一个匪徒 分析 定义人类 描述公共属性 life 100 name 姓名
  • 自定义开发成绩查询小程序

    在当今数字化时代 教育行业借助技术手段提高教学效果 作为老师 拥有一个自己的成绩查询系统可以帮助你更好地管理学生成绩 并提供更及时的反馈 本文将为你详细介绍如何从零开始搭建一个成绩查询系统 让你的教学工作更加高效和便捷 不过比较便捷好用的方
  • [人工智能-深度学习-44]:开发环境 - Anaconda的目录结构与SourceInsight工程

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121309970 目录 第1章 前言
  • 如何在Ubuntu系统中使用Traefik为容器设置反向代理?

    Traefik 是一种为 docker 容器建立反向代理的现代方法 当您希望在 docker 容器中运行多个应用程序 并公开端口 80 和 443 时 traefik 可能是反向代理的最佳选择 Traefik 提供了自己的监控仪表板 您还可
  • Visual Studio Code输出窗口中文乱码

    Visual Studio Code输出窗口中文乱码 Visual Studio Code输出窗口中文乱码 为了防止自己以后又忘记 只能自己写文章记下来 区别VS Code和VS 1 vs2019是个IDE vscode本质上是个编辑器 只
  • cuda核函数传入__device__函数指针的使用例子

    cuda的global函数里面可以调用 device 函数 在有特殊需要的时候 还可以把 device 函数作为参数传入到一个 global 函数中 在cuda里面不能像c 那样简单地传入函数的指针 需要在传入前对函数的指针做一些包装 例如
  • Qt 改变形状的对话框

    ifndef SORTDIALOG H define SORTDIALOG H include
  • LeetCode: 16 回溯

    Letter Combinations of a Phone Number 这种题就是DFS 递归 一堆传引用 迭代解法见http www cnblogs com grandyang p 4452220 html 也可以用队列实现 clas
  • 【第十四届蓝桥杯单片机组】学习笔记(3):定时器和计数器

    定时器和计数器 前言 定时器配置 定时器中断 51单片机中断允许寄存器IE 中断服务函数 前言 定时器作为单片机的内设用途十分广泛 控制信号的采样周期 产生周期信号 测量单片机运行时间 时间片轮转多线程 关于51单片机定时器的详细解释在我的