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里面的数值。

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

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

相关文章

excel统计分析——单因素方差分析

参考资料:生物统计学 方差分析是将总变异分解为组间变异的方差和组内变异的方差,并通过F检验推断处理效应是否显著的过程,而方差是通过平方和与自由度计算出来的,所以方差分析首先需要进行平方和与自由度的分解。具体步骤如下&…

简单FTP客户端软件开发——JavaFX开发FTP客户端

文章目录 导入外部包commons-net-3.10.0.jarJavaFX开发客户端 FTP客户端要求如下: 简单FTP客户端软件开发 网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用…

yolov5目标检测神经网络——损失函数计算原理

前面已经写了4篇关于yolov5的文章,链接如下: 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolov5目标检测网络实现(2)——网络结构实现 3、基于libtorch的yolov5目标检测网络实现(3)——Kmeans聚类获取anc…

OpenCV-13绘制多边形和文本

一、画多边形 使用API polylines绘制多边形。 polylines(img, pts, isClose, color, thickness, lineType, shift) 其中: pts:表示多边形的点集&#xff…

nvm安装版本后设置默认镜像地址和nvm list available出现空白解决办法

如题 npm config get registry https://registry.npmjs.org/发现镜像地址依旧是默认的 解决 运行输入npm config list 查看这个选项对应的目录 修改为的内容如下 homehttps://npmmirror.com registryhttps://registry.npmmirror.com/或者也可以 homehttps://npmmirror.com…

008、所有权

所有权可以说是Rust中最为独特的一个功能了。正是所有权概念和相关工具的引入,Rust才能够在没有垃圾回收机制的前提下保障内存安全。 因此,正确地了解所有权概念及其在Rust中的实现方式,对于所有Rust开发者来讲都是十分重要的。在本文中&…

JavaScript 基础(一)

实验需新建一个 test.html 文件&#xff0c;用于编写代码。后续的例子中&#xff0c;将不再提醒建立文件&#xff0c;大家根据个人需求自行创建对应的 html 文件&#xff0c;并完成代码练习&#xff1a; 首先来看看范例代码&#xff1a; <!doctype html> <html>&…

Docker:部署若依前后端分离版

Docker&#xff1a;部署若依前后端分离版 1. 停止天翼云上的原来跑的若依项目2. 停止腾讯云上的若依项目3. 使用Docker部署3.1 天翼云数据库&Redis3.1.1 部署数据库3.1.2 部署Redis数据库3.1.1 部署Nginx(这里被天翼云坑了换的腾讯云运行nginx) 3.2 腾讯云部署后端&前端…

【机器学习】卷积神经网络(四)-实现细节(Caffe框架为例)

六、 实现细节 都有哪些开源的卷积神经网络实现 caffe中卷积神经网络各个层&#xff08;卷积层、全连接层、池化层、激活函数层、内基层、损失层等&#xff09; Caffe2 与caffe 对比 caffe2 开源吗 使用caffe的c 版本和python版本&#xff0c;分别适用于哪些场景 6.1 卷积层 在…

【C++】STL 容器 - map 关联容器 ③ ( map 容器常用 api 操作 | map 容器迭代器遍历 | map#insert 函数返回值处理 )

文章目录 一、map 容器迭代器遍历1、map 容器迭代器2、代码示例 二、map 容器插入结果处理1、map#insert 函数返回值处理2、代码示例 一、map 容器迭代器遍历 1、map 容器迭代器 C 语言中 标准模板库 ( STL ) 的 std::map 容器 提供了 begin() 成员函数 和 end() 成员函数 , 这…

关于发展模式加入变量的问题解决

问题1描述&#xff1a; 编译的时候不报错&#xff0c;但是在运行的时候出错输出 FLDLST: ustar in fincl( 17 ) not found ENDRUN: called without a message string 问题1解决&#xff1a; 这是因为在cas-esm 的atm_in 中写入了某个变量&#xff0c;但是在F90 代码里面没…

MODIS ET 蒸散发数据

MODIS ET 即 MOD16 系列产品&#xff0c;属于MODIS Level4 的产品。 在 LP DAAC - MODIS 上搜索了现存的 ET&#xff08;Evapotranspiration&#xff09; 数据&#xff1a; 建议使用最新版本Collection 6.1&#xff0c;也就是结尾是.061的数据集。 在 Collection 6.1 中&…