(定时器/计数器)中断系统(详解与使用)

讲解

简介

定时器/计数器

定时器实际上也是计数器,只是计数的是固定周期的脉冲

定时和计数只是触发来源不同(时钟信号和外部脉冲)其他方面是一样的。

 定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到“设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。

中断

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

假设一个人在家看电视,这时候突然门铃响了,这个人此时就要停止看电视去开门,然后关上门后继续回来看电视,这个例子当中看电视这个动作就是常规的计算机运行过程,门铃响就相当于一个中断信号(中断请求),用户这时停止看电视(中断当前程序)起来开门(中断响应),关上门后(中断处理结束)继续看电视(继续执行当前程序)。这一整个过程就是中断发生时,CPU的处理方式。

  还是上面的例子,现在假设门铃响的时候水烧开了,此时用户可以选择先开门后关水,也可以选择先关水后开门,这个先后关系就是中断优先级,假设门铃的中断优先级比烧水的优先级高,那就会先开门,后关水,反之,则会先关水,后开门,这就是针对两个及两个以上中断同时发生的时候CPU根据中断优先级执行中断的过程。

51单片机

定时器/计数器

16位寄存器T0、T1分别由TH0、TL0和TH1、TL1四个8位计数器组成

定时器的区别

        T0可分为2个独立的8位定时器,而定时器1不能;

        T1可作为串口的波特率发生器,而定时器0不能。

工作原理

        用途:定时器和计数器

        核心:加1计数器

        原理:每来一个脉冲则加1计数器加1,当加到寄存器要溢出时再来一个脉冲使加1计数器归零(溢出)同时使TCON寄存器中的TF0(或TF1)置1,向CPU发出中断请求。

脉冲来源

        定时器:由系统的时钟晶振输出脉冲源提供

        计数器:脉冲来源是由T0或T1引脚输入的外部脉冲源提供

注意: T0或T1都不能同时既做定时器也做计数器  

TCON控制寄存器

启动和停止定时/计数器的计数,并控制定时器的工作状态,支持按位寻址。单片机复位后清0。

注意:TCON寄存器中的低四位和定时计数器无关,和外部中断相关

位序 D7 D6 D5 D4 D3 D2 D1 D0
名称 TF1 TR1 TF0

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt应用软件【测试篇】vargrid内存检查工具

文章目录 vargrid介绍vargrid官网vargrid安装常用命令Valgrind的主要命令vargrid介绍 Valgrind是一个用于构建动态分析工具的框架,能自动检测许多内存管理和线程错误,并详细分析程序性能。Valgrind发行版包括七个成熟工具:内存错误检测器、两个线程错误检测器、缓存和分支预…

防御保护课程笔记

内容安全 防病毒 过滤技术 密码学

基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于java ssm springbootVUE疫情防疫系统系统前后端分离设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐…

vue3使用百度地图实现个性化地图和轨迹

vue3使用百度地图实现个性化地图和轨迹 最终效果如图: 步骤如下: 一、百度地图在vue3中的引入 1.首先在百度地图开发中心中申请ak(不多介绍) 2.两种引入方式:在 index.html 中直接引入;使用npm导包。&…

【已亲测有效】如何彻底删除nodejs,避免影响安装新版本

第一步开始菜单搜索uninstall node.js,点击之后等待删除(删除node_modules文件夹以及以下这些文件) 第二步手动删除nodejs下载位置的其他文件夹。(就是另外自己新建的两个文件夹node_cache和node_global) 到这里其实应…

GEE:计算NDVI时间序列和谐波拟合曲线之间的残差时间序列

作者:CSDN @ _养乐多_ 本文将介绍在谷歌地球引擎(Google Earth Engine)使用 Landsat 时间序列数据数据进行时间序列谐波(harmonic)拟合建模,并对模型的残差(residual)序列(计算NDVI时间序列和谐波拟合曲线之间的残差时间序列)进行分析。具体流程为使用Landsat计算ND…

MariaDB MaxScale实现mysql8读写分离

目录 1.MaxScale 是干什么的? 2.MaxScale 实验环境 3.实现数据库主从复制 4.创建用户 1) 创建监控用户 2) 创建路由用户 5.docker 安装MaxScale 6.配置maxscale 使用 maxctrl list servers 命令查看运行状态 查看注册服务 使用 maxctrl list listeners Read-…

I/O:标准IO(二)

一、标准IO操作函数 1.fgets、fputs int fputs(const char *s, FILE *stream); 功能描述:将字符串s写入stream指向的文件中 返回数:成功写入文件中数据的字节数 int puts(const char* s) 功能描述:将字符串s写入终端; 返回值&…

kitex 入门和基于grpc的使用

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于kitex系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基础系…

动态规划--(算法竞赛、蓝桥杯)--二维费用背包

1、B站视频链接&#xff1a;E15 背包DP 二维费用背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; int f[101][101]; //f[j][k]第i件物品&#xff0c;体积<j,重量<k的最大价值int main(){int n,V,W;//物品、容量、承重int v,w,val;//体积、重…

redis实现分布式全局唯一id

目录 一、前言二、如何通过Redis设计一个分布式全局唯一ID生成工具2.1 使用 Redis 计数器实现2.2 使用 Redis Hash结构实现 三、通过代码实现分布式全局唯一ID工具3.1 导入依赖配置3.2 配置yml文件3.3 序列化配置3.4 编写获取工具3.5 测试获取工具 四、运行结果 一、前言 在很…

施耐德M340和M200 Modbus 通讯实现

Unity平台下M340和M200通过Modbus TCP通讯 两者通过RJ45连接&#xff0c;M340内IO scanning配置&#xff1a; IP address是各个M200的地址&#xff0c;通过这个配置&#xff0c;可以将各server的指定数据区映射到M340的内部数据区。 相比于M200作Modbus TCP Client&#xff0…

Java SE 1.基础常识

1.计算机语言 1.机器语言&#xff1a; 二进制的0和1组成的编码2.汇编语言&#xff1a; 英文标识符组成的编码3.高级语言&#xff1a; 接近自然语言 2.Java技术平台 1.JAVA SE 1.Java Platform Standard Edition&#xff0c;Java标准版 1.JDK 1.Java开发工具集&#xff1a;包括J…

Python实现双向链表:从基础到应用

一、引言 双向链表是一种比单向链表更复杂的数据结构&#xff0c;每个节点除了包含数据和指向下一个节点的指针外&#xff0c;还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始&#xff0c;向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…

黑猫的牌面

解法&#xff1a; 桶 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \nint main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);vector<int> tong(1001);int t 4;int k, pai;long lon…

vue3+ts+vite使用mock数据

安装以下命令 npm i vite-plugin-mock --save-dev npm i mockjs --save-dev 在根路径下创建mock文件夹 mock\user.ts const menuList [{path: /system,component: Layout,name: system,meta: {title: 系统管理,icon: Setting,roles: [sys:manage]},children: [{path: /depar…

leetcode--接雨水(双指针法,动态规划,单调栈)

目录 方法一&#xff1a;双指针法 方法二&#xff1a;动态规划 方法三&#xff1a;单调栈 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 黑色的是柱子&#xff0c;蓝色的是雨水&#xff0c;我们先来观察一下雨水的分布情况: 雨水落在凹槽之间&#xff0c;在一个凹槽的…

前端Vue3项目如何打包成Docker镜像运行

将前端Vue3项目打包成Docker镜像并运行包括几个主要步骤&#xff1a;项目打包、编写Dockerfile、构建镜像和运行容器。下面是一个基本的流程&#xff1a; 1. 项目打包 首先&#xff0c;确保你的Vue3项目可以正常运行和打包。在项目根目录下执行以下命令来打包你的Vue3项目&am…

《PyTorch深度学习实践》第十三讲RNN进阶

一、 双向循环神经网络&#xff08;Bidirectional Recurrent Neural Network&#xff0c;BiRNN&#xff09;是一种常见的循环神经网络结构。与传统的循环神经网络只考虑历史时刻的信息不同&#xff0c;双向循环神经网络不仅考虑历史时刻的信息&#xff0c;还考虑未来时刻的信息…

14:00面试,14:07就出来了,问的问题过于变态了。。。

我从一家小公司转投到另一家公司&#xff0c;期待着新的工作环境和机会。然而&#xff0c;新公司的加班文化让我有些始料未及。虽然薪资相对较高&#xff0c;但长时间的工作和缺乏休息使我身心俱疲。 就在我逐渐适应这种高强度的工作节奏时&#xff0c;公司突然宣布了一则令人…
最新文章