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

相关推荐
CODECOLLECT1 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen2 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠4 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_4 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技7 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计7 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报8 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业8 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能8 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn8 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件