当前位置: 首页 > news >正文

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中,如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢?

IE(interrupt enable)寄存器中,都是中断的使能位置。

其中的EA(enable all)是总使能位,ES(enable serial)是串口中断使能位,其余是两个外部中断EX(enable external)的使能位(其余的两个外部中断在其他的寄存器中),和三个定时器ET(enable timer)的中断使能位。

TCON(timer control)寄存器中,是一个关于定时器/计时器的控制寄存器,但是也集成了外部中断的一些控制位,如下图:

其中I打头的,都是关于外部中断的控制位,TCON中关于外部中断的中的位数的名字非常奇怪,其中一个为IE,和IE寄存器的名字一样,不知道的还以为是总中断的控制位,也有人认为其的缩写是(interrupt enbale),但是其确实一个关于外部中断的标志位,所以名字很奇怪。在所有的寄存器中,标志位都是由芯片自己控制的,也就是标志位自己会变成1或者0,这个标志位是用来给操作者读取的,是芯片对于中断的一种外界的反应,相当于串口中断中的TI和RI,是自己变化的。IE和TI和RI一样,是中断的一个标志,不过是外部中断的标志,只需要记住TCON中集成的外部中断的中断标志(部分,只有两个),而其中的IT(interrupt type),也是外部中断的控制位,表示的中断类型,IT = 1的时候是下降沿,IT = 0的时候是低电平。总之,外部中断没有自己独立的一个,为外部中断控制寄存器,其控制位都是分布在别的寄存器中的。其控制位,除了控制中断的使能位之外,其余的都是I开头的。

其中,T打头都是定时器的控制位,虽然表示的计时器少了一个(一共有三个计时器)。TR(time run)表示的是可以允许让计时器开始计时,为1的时候,是可以开始允许计时的。而TF(time overflow)是计时器溢出的时候,表示的是计时器中断标志位,和上述的IE是一样的,溢出的时候就是为1,都是由硬件完成的,平时没有什么用,我猜正是因为这些硬件标志位,才让程序执行中断函数的。

SCON(serial control)串口控制器,串口控制器和计时器一样,都是有自己独立的控制器。

其中的SM0 和 SM1表示的是四种串口的工作方式,以及对应的波特率,在练习中选择的是方式一。REN(receive enable)表示的是让串口能够收到消息TI和RI都是串口中断的标志位,这个一般是进入串口中断的时候,用来判断究竟是收到满了中断,还是发送满了中断了。其余的控制位就不用管了。

PCON(power control)电源控制器。

这个寄存器的使用有限,通常是和SCON配合使用,其中的SMOD和SMOD0两个的用法是不一样的。

当SMOD0(B6位) = 0的时候,SCON中的SM0才是选择工作模式使用的,为1的时候,是其他用处。

同时SMOD也是SCON中公式的指数,我们一般选择为0,所以在串口中断的时候,PCON = 0的。

总结一下需要的调整的寄存器外部中断需要调整两个寄存器就好了定时器的话,需要调整三个寄存器以及初值,IE,TCON(两个变量),TMOD三个寄存器以及TL和TH的初值,前两个是控制寄存器,TMOD是选择定时器的模式使用的,GATE控制位看样子是和外部中断配合做延时使用的C/非T是用来切换定时器和计数器的,定时器是使用内部的时钟计时,计数器顾名思义就是用来计数的,这个是需要连接外部的引脚来将是否计数传进来的。串口中断的话,需要IE,需要SCON,PCON,TCON(一个变量),还需要TMOD,也需要调整TH和TL的值,不过这个过程可能在PCON设置波特率的时候就已经确定了TH的值了。IE是用来打开全部中断和串口中断的(不打开定时器中断),SCON是用来调整串口中断控制位的,PCON是用来调整波特率的,TMOD用来调整计时器模式的,其中需要TCON是用来激活TR1的,没有这个控制位的话定时器是不能跑的,值得一提的是,这个是不需要开启定时器中断的,而且串口中断的话占用的一定是定时器1。所以后续更改的是定时器1里面的数值。

相关文章:

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中,如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢? IE(interrupt enable)寄存器中,都是中断的使能位置。 其中的EA(enable all)是总使能位,ES(enable serial)是串口…...

2023.12.28 Python高级-正则表达式

目录 re正则表达式,一种专门用来匹配目标字符串的规则 re.match(),从头匹配一个,无则none re.search(), 不从头匹配返回一个,无则none re.findall(), 不从头匹配,用list返回所有 re分组 re匹配修饰符 re贪婪非贪婪 re切割和替换 re正则表达式,一种专门用来匹配目标字符串…...

编程笔记 html5cssjs 014 网页布局框架

编程笔记 html5&css&js 014 网页布局框架 一、Bootstrap简介二、使用Bootstrap布局 网页布局不只用HTML,还要用CSS和JAVASCRIPT等技术完成,这里暂时简单了解一下Bootstrap。 一、Bootstrap简介 这是一个开源的前端框架,由Twitter的前端工程师Ma…...

抖店和商品橱窗有什么区别?新手应该选哪个?

我是电商珠珠 临近年底了,有的人已经开始为下一年筹谋,有的去抖音做账号做直播带货,不会直播带货的就想尝试做下抖店,来为以后的经济打基础。 刚想要接触却对这类有些迷糊,发现商品橱窗和抖店都可以卖货,…...

在Adobe Acrobat上如何做PDF文档签名

Adobe Acrobat如何做PDF文档签名?PDF文档签名是指对PDF文档进行基于证书的数字签名,类似于传统的手写签名,可标识签名文档的人员。与手写签名不同,数字签名难以伪造,因为其包含签名者唯一的加密信息。为PDF文档进行基于…...

Leetcode 988. Smallest String Starting From Leaf (二叉树遍历好题)

Smallest String Starting From Leaf Medium 1.6K 227 Companies You are given the root of a binary tree where each node has a value in the range [0, 25] representing the letters ‘a’ to ‘z’. Return the lexicographically smallest string that starts at a le…...

redis 三主六从高可用docker(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) 此博客解决,redis加入集群后,是用于停掉后重启,将nodes.conf中的旧的Ip替换为新的IP,从而达到不会因为IP变化导致集群无法…...

12.26

key_it.c #include"key_it.h" void led_init() {// 设置GPIOE/GPIOF时钟使能RCC->MP_AHB4ENSETR | (0x3 << 4);// 设置PE10/PE8/PF10为输出模式GPIOE->MODER & (~(0x3 << 20));GPIOE->MODER | (0x1 << 20);GPIOE->MODER & (~…...

2022年全国职业院校技能大赛高职组云计算正式赛卷第三场-公有云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务 1】公有云服务搭建[10 分] 【任务 2】公有云服务运维[10 分] 【任务 3】公有云运维…...

Python | 机器学习之数据清洗

机器学习前的数据清洗&#xff08;异常值检验&#xff0c;标准化处理&#xff0c;哑变量处理&#xff09; Python | 机器学习之数据清洗 机器学习 - 基础概念 - scikit-learn - 数据预处理​​​​​​​ 数据的标准化&#xff08;离差标准化、log函数转换、atan函数转换、z…...

力扣:509. 斐波那契数(动态规划,附带递归版本) 详细讲解动态规划的思路

题目&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中…...

Python3,压箱底的代码片段,提升工作效率稳稳的。

压箱底代码存活 1、引言2、代码实例2.1 操作存储服务2.1.1 Redis操作2.1.2 MongoDB操作2.1.3 MySQL操作 2.2 异步操作2.3 多线程 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;这年底了&#xff0c;得不得分享一点压箱底的东西啊 小鱼&#xff1a;… 压箱底的东西&…...

Flowable-升级为7.0.0.M2-第三节

目录 启动项目添加虚拟机参数启动成功 启动项目 添加虚拟机参数 java.base/java.langALL-UNNAMED --add-opens java.base/java.mathALL-UNNAMED --add-opens java.base/java.util.concurrentALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/ja…...

JavaWeb——前端之AjaxVue

6. 前后端交互 6.1 Ajax&#xff08;原生的&#xff09; 概念&#xff1a; Asynchronous JavaScript And XML&#xff08;异步的JavaScript和XML&#xff09; 作用&#xff1a; 数据交互&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据异步交…...

在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序

如果您有 Android 设备&#xff0c;您可能会将个人和专业的重要文件保存在设备的 SD 卡上。这些文件包括照片、视频、文档和各种其他类型的文件。您绝对不想丢失这些文件&#xff0c;但当您的 SD 卡损坏时&#xff0c;数据丢失是不可避免的。 幸运的是&#xff0c;您不需要这样…...

uni-app/vue封装etc车牌照输入,获取键盘按键键值

先看下效果如下&#xff1a; 动态图如下 uniapp的keyup获取不到keyCode和compositionstart&#xff0c;compositionend&#xff0c;所以需要监听input节点的keyup事件&#xff0c; 思路以及代码如下&#xff1a; 1.将每一个字符用文本框输入&#xff0c;代码如下 <view …...

iostat获取IO延迟单位从ms调整us的方案

iostat命令统计的磁盘I/O延迟通常是以毫秒&#xff08;ms&#xff09;为单位&#xff0c;例如在输出中的await字段表示的是平均服务时间&#xff0c;包括等待时间和处理时间&#xff0c;这个值就是以毫秒为单位。 然而&#xff0c;要获取更精确到微秒级别&#xff08;us&#x…...

K8s 源码剖析及debug实战之 Kube-Scheduler(四):预选算法详解

文章目录 0. 引言1. 回顾2. podFitsOnNode 为什么执行两次预选3. 预选算法有哪些4. 参考 0. 引言 欢迎关注本专栏&#xff0c;本专栏主要从 K8s 源码出发&#xff0c;深入理解 K8s 一些组件底层的代码逻辑&#xff0c;同时借助 debug Minikube 来进一步了解 K8s 底层的代码运行…...

ES6之解构赋值详解

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…...

UntiyShader(五)属性、内置文件和变量

目录 一、如何使用属性 例子 ShaderLab中的属性的类型和Cg中的变量的类型之间的匹配关系 二、Unity提供的内置文件和变量 内置的包含文件 内置的变量 一、如何使用属性 在一开始我们提到过&#xff0c;材质和UnityShader之间有着密切的练习&#xff0c;我们可以通过材质面…...

如何用MAA自动化助手彻底解放你的《明日方舟》游戏时间:5个实用技巧

如何用MAA自动化助手彻底解放你的《明日方舟》游戏时间&#xff1a;5个实用技巧 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址…...

为ESP32智能灯光项目3D打印定制保护外壳:从设计到实战

1. 项目概述与核心价值如果你正在玩智能灯光项目&#xff0c;尤其是基于ESP32和NeoPixel LED灯带&#xff0c;那么Adafruit的Sparkle Motion系列控制板大概率已经进入了你的视野。这是一块将ESP32-S3、电源管理、电平转换和LED驱动接口高度集成的“一体化”板卡&#xff0c;专为…...

从排版混乱到学术规范:NKThesis LaTeX模板的中文标题架构演进之路

从排版混乱到学术规范&#xff1a;NKThesis LaTeX模板的中文标题架构演进之路 【免费下载链接】NKThesis 南开大学硕士毕业论文/博士论文模板 (Latex Template for Nankai University) 项目地址: https://gitcode.com/gh_mirrors/nk/NKThesis 在学术写作的数字化浪潮中&…...

8款投屏软件亲测对比:哪款才是真正的“良心之选”?

市面上的投屏软件多如牛毛&#xff0c;但真正好用的没几个。为了帮大家避坑&#xff0c;我亲自下载、安装、使用了8款常见的投屏工具&#xff0c;从是否收费、有无广告、功能丰富度、兼容性、实际体验五个维度做了深度测试。下面是我的真实使用感受&#xff0c;希望对你有帮助。…...

使用Python快速接入Taotoken聚合大模型API的简明教程

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Python快速接入Taotoken聚合大模型API的简明教程 本文面向希望快速集成大模型能力的Python开发者&#xff0c;介绍如何通过官方…...

Midjourney v7艺术风格跃迁路径:从基础写实到超现实叙事的5阶能力模型,含GPT-4o协同提示链模板

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney v7艺术风格跃迁路径总览 Midjourney v7 并非简单迭代&#xff0c;而是以扩散模型架构重构与多模态风格理解为内核的范式跃迁。其核心突破在于引入「语义风格锚点&#xff08;Semantic Style…...

基于规则引擎的自动化文件管理工具smartcat实战指南

1. 项目概述&#xff1a;一个智能化的文件分类与归档工具最近在整理个人电脑和服务器上的文件时&#xff0c;我又一次陷入了混乱。下载文件夹里塞满了各种格式的文档、图片、压缩包&#xff0c;项目目录下混杂着不同版本的代码、设计稿和会议记录。手动分类不仅耗时&#xff0c…...

AI 的能源账单:训练一次模型够一个城市用一年、$440 亿投资涌入、核能成为新基建 — 算力背后的环境代价

Stanford HAI 2026 年 AI Index 报告用一组数字泼了盆冷水&#xff1a;AI 模型正在取得突破性的科学和推理成果&#xff0c;但环境代价高到令人不安。报告披露&#xff1a;一个前沿大模型的单次训练&#xff0c;能耗相当于一个小型城市一天的全部用电量。而 2024-2026 年间&…...

Perplexity最新v2.4文档重大更新预警:3个已删除接口、2个强制迁移路径、1个即将下线的Auth Flow——错过今晚将无法兼容生产环境

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity最新v2.4文档重大更新预警总览 Perplexity v2.4 文档体系迎来结构性升级&#xff0c;核心聚焦于开发者体验一致性、API 响应语义增强及本地化支持扩展。本次更新不再仅限于补丁式修订&#x…...

AI技能库实战:模块化设计赋能博客创作自动化工作流

1. 项目概述&#xff1a;一个面向AI时代的博客技能开源库最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫inblog-inc/inblog-ai-skills。光看这个名字&#xff0c;就透着一股子“务实”的味道。它不是又一个教你如何调参炼丹的AI模型库&#xff0c;也不…...