51单片机定时器中断配置

测试环境

单片机型号: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=1IPH &= 0xFD;//PT0H=0TF0 = 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.mzph.cn/web/32390.shtml

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

相关文章

MSPM0G3507——GPIO例程讲解1——input_capture

函数: 参数: 返回值: 主函数代码: #include "ti_msp_dl_config.h"extern volatile uint32_t interruptVectors[];int main(void) {SYSCFG_DL_init(); //把所有的LED灯和按键初始化了一…

LangChain:如何高效管理 LLM 聊天历史记录?

LangChain 团队发布了一篇关于使用 Dragonfly DB 来有效管理 LangChain 应用程序聊天历史记录的教程。 该教程旨在解决用户在使用 LangChain 应用程序时普遍遇到的一个问题:如何高效地管理聊天历史记录。 LangChain 团队在推文中强调了 Dragonfly DB 在管理聊天历…

【vue3|第12期】Vue3的Props详解:组件通信

日期:2024年6月19日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

【Redis】黑马点评短信登录

https://blog.csdn.net/qq_33888850/article/details/129770077 https://blog.csdn.net/weixin_51515308/article/details/128010464 https://www.bilibili.com/video/BV1cr4y1671t?p24 导入数据库 https://github.com/MagicToDo/hm-dianping sql文件在 hm-dianping-init\src…

计算机网络:运输层 - TCP首部格式 连接的创建与释放

计算机网络:运输层 - TCP首部格式 & 连接的创建与释放 TCP首部格式源端口 目的端口序号确认号数据偏移保留控制位窗口检验和紧急指针 TCP连接创建 - 三次握手TCP传输过程TCP连接释放 - 四次挥手 TCP首部格式 TCP的首部如下: 首部的前20 byte是固定的…

【物联网】室内定位技术及定位方式简介

目录 一、概述 二、常用的室内定位技术 2.1 WIFI技术 2.2 UWB超宽带 2.3 蓝牙BLE 2.4 ZigBee技术 2.5 RFID技术 三、常用的室内定位方式 3.1 信号到达时间 3.2 信号到达时间差 3.3 信号到达角 3.4 接收信号强度 一、概述 GPS是目前应用最广泛的定位技术&#xff0…

一种基于稀疏学习的旋转机械故障诊断方法(MATLAB)

稀疏表示方法是一种利用最少原子在过完备字典上表示或逼近信号的方法,该方法具有信号表示的高分辨率、稀疏性、强抗干扰能力和自适应性等优点。稀疏表示聚焦于设计合适的稀疏表示字典和挖掘有用的稀疏先验信息,其核心思想是将故障特征信息近似表示为字典…

Linux下VSCode的安装和基本使用

应用场景:嵌入式开发。 基本只需要良好的编辑环境,能支持文件搜索和跳转,就挺OK的。 之所以要在Linux下安装,是因为在WIN11上安装后,搜索功能基本废了,咋弄都弄不好,又不方便重装win系统&#x…

LLM功能应用的测试艺术:策略与实践

在人工智能技术日新月异的今天,大规模语言模型(LLMs)凭借其强大的自然语言处理能力,正逐渐成为众多应用和服务的核心驱动力。从智能客服到创作辅助,从信息检索到个性化推荐,LLMs的广泛应用对测试策略提出了全新的挑战。本文旨在探讨针对拥有LLM功能的应用或软件,如何制定…

韩顺平0基础学java——第29天

p592-599 线程 用户线程和守护线程 1.用户线程:也叫工作线程,当线程的任务执行完或通知方式结束 2守护线程:一般是为工作线程服务的,当所有的用户线选束,守护线程自动结束 3.常见的守护线程:垃圾回收机制 当我们希望当main线程结束后&…

2.APP测试-安卓adb抓取日志

1.打开手机的开发者模式,打开USB调试 (1)小米手机打开开发者模式: 【设置】-【我的设备】-【全部参数信息】-快速多次点击【OS版本】-进入开发者模式 (2)连接手机和电脑,手机打开USB调试 【设置…

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针 0. 引言1. 关于m_scale2. 关于m_ruler3. 关于m_northarrow4. 结语 0. 引言 本篇介绍下m_map中添加指北针(m_northarrow)、比例尺(m_ruler)和进行比例缩放(m_scale)的函数及其用法 。 1. 关于m_scale m_scale用于图件…

响应式高端网站模板源码图库素材 资源下载平台源码

源码介绍 亲测可用,可用于做娱乐网资源网,功能非常的齐全无任何加密也无任何后门!响应式高端网站模板源码图库素材 资源下载平台源码(可运营) 页面很美观,堪比大型网站的美工,而且页面做的也很…

扫码称重上位机

目录 一 设计原型 二 后台代码 一 设计原型 模拟工具: 二 后台代码 主程序: using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Text;namespace 扫码称重上位机 {public partial class Form1 : Form{public Form1(){Initialize…

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题, 1.问题描述2.问题原因3.解决方案3.1配置谷歌框架:3.1软件优化 4.附图 1.问题描述 红米手机打开安卓APP没有广告,直接闪退,无法使用谷歌框架 异常关键词中包含&…

P1223 排队接水

题目描述 有 𝑛 个人在一个水龙头前排队接水,假如每个人接水的时间为 𝑇𝑖,请编程找出这 𝑛 个人排队的一种顺序,使得 𝑛个人的平均等待时间最小。 输入格式 第一行为一个整数 &a…

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

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

Hive笔记-5

240619-Hive笔记-5 6.2.2 全表和特定列查询 1) 全表查询 hive (default)> select * from emp; select 查看你要查看的信息 from 你要从哪张表里面查 2) 选择特定列查询 hive (default)> select empno, ename from emp; 注意: (1&#xff0…

c++编译器优化不显示拷贝构造函数

一.错误情景&#xff08;无法打印拷贝函数&#xff09; #include<iostream> using namespace std;class person { public:person(){cout << "person默认构造函数调用" << endl;}person(int age){cout << "有参构造函数调用" <…

SUSE linux的快照和恢复

snapper用于创建和管理文件系统快照&#xff0c;并在需要时实现回滚&#xff0c;它还可以用于创建用户数据的磁盘备份。snapper使用btrfs文件系统或者精简配置的被格式化成XFS或EXT4的LVM卷。snapper可以通过命令行或YaST来进行管理。 btrfs是一种copy-on-write文件系统&#x…