51单片机定时器中断配置

news2024/11/27 13:49:24

测试环境

单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试;
IDE:Keil C51;

定时器配置及主要代码

以定时器T0为例,查看手册,有4种工作模式:模式0(16位自动重装载模式),模式1(16位不可自动重装载模式),模式2(8位自动重装载模式),模式3(不可屏蔽中断的16位自动重装载模式);
与定时器T0相关的寄存器如下图:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
我们使用定时器T0的模式0,因此要将TMOD寄存器的低4位全部设置为0,另外,还需要配置辅助寄存器AUXR,如下图:
在这里插入图片描述
使用1T模式,将AUXR的最高位T0x12位设置为1;

在这里插入图片描述上图中红框中的公式为模式0定时器重载值的计算方法,
假设时钟频率为fOSC,重载值[TH0,TL0]为Reload,定时器T0为16位,1T模式,向上计数,到溢出的时候,共计数65536-Reload次,每次耗时1/fOSC,单位为秒,如果我们需要中断的时间为1ms,即定时器周期为1/1000ms,则:
65536 − R e l o a d f O S C = 1 1000 \frac{65536-Reload}{f_{OSC}}=\frac{1}{1000} fOSC65536Reload=10001
即:
R e l o a d = 65536 − f O S C 1000 Reload = 65536 -\frac{ f_{OSC}}{1000} Reload=655361000fOSC
综上,T0定时器的初始化,代码如下,其中系统时钟频率为宏定义方式,可按实际情况修改:

#define FOSC     				22118400L//时钟主频22.1184Mhz
/*******************************************************************************
  * 函数名:T0_Init
  * 功  能:定时器T0初始化
  * 参  数:无
  * 返回值:无
  * 说  明:模式0,16位自动重载模式,1ms中断
*******************************************************************************/
void T0_Init(void)
{
	uint16_t u16Reload = 0;
	AUXR |= 0x80;//T0为1T模式
	TMOD &= 0xF0;//T0为16位自动重载
	
	u16Reload = (uint16_t)((uint32_t)65536 - ((uint32_t)FOSC / 1000));
	TL0 = (uint8_t)(u16Reload >> 0);		//设置定时初始值
	TH0 = (uint8_t)(u16Reload >> 8);		//设置定时初始值
	
	//中断优先级1,较低级
	IP |= 0x02;//PT0=1
	IPH &= 0xFD;//PT0H=0
	
	TF0 = 0;//清除T0溢出中断标志
	TR0 = 1;//定时器T0开始计时
	ET0 = 1;//使能定时器中断
}

在定时器中断中,可以根据需要添加代码或函数:

/*******************************************************************************
  * 函数名:T0_ISR
  * 功  能:定时器T0中断
  * 参  数:无
  * 返回值:无
  * 说  明:定时器T0,1ms中断
*******************************************************************************/
void T0_ISR(void) interrupt 1
{
	TF0 = 0;//清除中断标志位
	//do something(添加需要的代码)
}

另外,还要开启总中断,即EA = 1,可以放到main函数初始化时执行;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1851789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于淘宝商城用户购物行为数据分析系统

摘 要 在电商行业高速发展的今天,用户购物行为数据量呈指数型增长,传统的数据处理架构已经无法满足于现如今的数据处理需求。针对于这样的需求本课题设计了一种基于淘宝的用户购物行为分析系统,旨在通过对大量数据进行分析处理进而深入研究用…

全国青少年人工智能创新挑战赛考试系统果然卡壳了

本比赛的官网地址是:http://aiic.china61.org.cn/niWXB 昨天考的全国青少年人工智能创新挑战赛的图形化编程卡的没有答题区,有的是空白,有的是组卷,大家先熟悉题目,构思怎么编程,两道编程题5050分值&#…

对兼容各操作系统的Anki选择题模板的更新——提供更方便的笔记修改功能

2021年当我想做一个兼容各操作系统的Anki选择题模板的时候,到处搜索茧中网,根本找不到相关内容,直到偶然在github上看到Simon Lammer的Anki持久化模块,才算真正实现。现在再在茧中网上搜索兼容各种操作系统的Anki选择题模板&#…

剖析 Kafka 消息丢失的原因

文章目录 前言一、生产者导致消息丢失的场景场景1:消息体太大解决方案 :1、减少生产者发送消息体体积2、调整参数max.request.size 场景2:异步发送机制解决方案 :1、使用带回调函数的发送方法 场景3:网络问题和配置不当…

FineReport报表案例

普通报表 保存的文件类型为 cpt,依靠着单元格的扩展与父子格的关系来实现模板效果,可进行参数查询,填报报表,图表设计等等,但是在分页预览模式下不能在报表主体中展示控件,而且单元格间相互影响&#xff0c…

IDEA快速入门02-快速入门

二、快速入门 2.1 打开IDEA,点击New一个项目 入口,依次打开 File -> New -> Project。 2.2 使用Spring Initializr方式构建Spring Boot项目 2.3 设置项目所属组、项目名称、java版本等 2.4 选择SpringBoot版本及依赖组件 点击Create进行创建。 2.6 创建成…

【第一性原理】邓巴数字

这里写自定义目录标题 什么是邓巴数字邓巴数背后的科学历史上各个组织的人数与邓巴数字的关系在人类进化中的意义现代社会中邓巴数字的体现邓巴数字的意义其他与沟通相关的数据注意事项结论参考 罗宾邓巴教授生于1947年,进化心理学家,牛津大学教授&#…

一种微弱故障特征增强的旋转机械故障诊断方法(MATLAB)

导致轴承失效的根本原因是由异常磨损和局部间的机械冲击所导致的。对轴箱轴承日常运转的下所产生的均匀磨损而言,其振动信号特征与正常轴承振动信号大致一样,随机性较强,其概率密度函数呈现出高斯分布的现象,但由于磨损所导致的不…

C语言程序设计-2 程序的灵魂—算法

【例 2.1】求 12345。 最原始方法: 步骤 1:先求 12,得到结果 2。 步骤 2:将步骤 1 得到的乘积 2 乘以 3,得到结果 6。 步骤 3:将 6 再乘以 4,得 24。 步骤 4:将 24 再乘以 5&#xf…

Python自动化(2)——键盘模拟

Python自动化(2)——键盘模拟 前台键盘模拟 前台键盘模拟和后台键盘模拟的区别在于,是否绑定窗口。即前台模拟是只模拟键盘操作,例如按下按键a,如果聚焦在一个文本文档的编辑区,那么就会把这个a输入进去。但如果是聚焦到了浏览器…

测试辅助工具(抓包工具)的使用1 之初识抓包工具(fiddler)

1.什么是抓包? 说明:客户端向服务器发送请求以及服务器响应客户端的请求,都是以数据包来传递的。 抓包(packet capture):通过工具拦截客户端与服务器交互的数据包。 抓包后可以修改数据包的内容 2.为什么要抓包&…

【洛谷P3366】【模板】最小生成树 解题报告

洛谷P3366 -【模板】最小生成树 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 N , M N,M N,M,表示该图共有 N N N 个结点和 M M M 条无向边。 接下…

解决js打开新页面百度网盘显示不存在方法:啊哦,你所访问的页面不存在了。

用js打开新页面open或window.location.href打开百度网盘后都显示:啊哦,你所访问的页面不存在了。 window.open(baidu_url); window.location.href baidu_url;在浏览器上,回车后网盘资源是可以打开的,刷新也是打开的。这是很奇怪…

IPv6知识点整理

IPv6:是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 。 国…

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…

初学者的TensorFlow 2.0 开发环境安装 -《MCU嵌入式AI开发笔记》(第七集)

MCU嵌入式AI开发笔记 初学者的TensorFlow 2.0 开发环境安装 -《MCU嵌入式AI开发笔记》(第七集)。抖音、B站、视频号等站点搜索柔贝特三哥,《MCU嵌入式AI开发笔记》视频同步更新,视频详细讲解。 07 初学者的 TensorFlow 2.0 教程 …

【tomcat】tomcat系统架构以及核心启动流程

对于web后端开发工程师来说,tomcat作为一个应用服务器框架本质上就是一个HTTP服务Servlet容器。研究过spring、spring mvc源码的同学应该了解,spring mvc其实就是基于Servlet规范实现的请求的转发路由、转发处理。而Spring和SpringMVC就是通过web.xml文件…

DINO-DETR

DINO-DETR DETR收敛慢的问题1. Contrastive DeNoising Training(对比方法降噪训练)2. Mixed Query Selection(混合查询选择方法对锚点进行初始化)3. Look Forward Twice(两次前向方法)==DINO模型的传播过程,以及部分模块的改进==DETR收敛慢的问题 PnP-DETR(ICCV 2021) 改进了…

同时使用接口文档swagger和knife4j

项目场景: springboot项目中同时使用接口文档swagger和knife4j 问题描述 在实体类中设置了字段必填的属性,在访问接口文档时出现异常 实体类关键代码片段 /*** 部门表 sys_dept*/ public class SysDept extends BaseEntity {private static final lo…

大聪明教你学Java | 深入浅出聊 Kafka

前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…