stc单片机管脚工作模式(STC单片机的特殊功能寄存)

今天我们来聊一聊STC单片机的特殊功能寄存器(SFR)。

首先,特殊功能寄存器位于何处呢? STC单片机的内部随机读取存储器(RAM),在物理和逻辑上可分为两大部分,内部256字节的随机读取存储器,内部扩展的随机读取存储器。其中,第一部分的地址为00H至FFH,第二部分根据单片机型号的不同空间的大小也有所不同。第一部分又分为两个模块:地址为00H~7FH的低128字节通用RAM,和地址为80H~FFH的高128字节RAM,而我们所讨论的特殊功能寄存器,就位于高128字节的地址空间中。如图1.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(1)

图1 特殊功能寄存器的位置

这种内存划分适用于基本所有stc系列单片机,如STC89C51/52,STC10/12/15乃至最新的STC8系列单片机。如图2.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(2)

图2 各种型号的STC单片机

那么,具体到一种型号的单片机上,如何查询和使用某一特殊功能寄存器呢?这是stc 12c5a60s2系列单片机的特殊功能寄存器及地址映象的对应表。如图3.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(3)

图3 特殊功能寄存器的地址映象

在使用相应的寄存器时,先声明寄存器地址,再对寄存器赋值即可。比如我们要将P1端口的输出模式配置为推挽输出,这样操作即可。如图4.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(4)

图4 将P1端口设置为推挽输出

我们需要注意特殊功能寄存器的地址能够被8整除,那么就可以进行位操作,反之则不可进行位操作。那么,表中的第一列均可进行位操作。如图5.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(5)

图5 第一列可进行位操作

例如我们将P1端口的第二位电平拉高,可以直接对该位进行赋值,而不不必对整个P1端口进行或运算。

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(6)

图6 将P1端口的第二位拉高

最后,在代码编写时,常常有朋友问到, reg51.h和reg 52.h这两个头文件有什么区别。这两个头文件都用于声明单片机的特殊功能寄存器。我们直接打开这两个头文件,注释内容告诉我们,reg51.h适用于80c51及80c31控制器,而reg52.h则适用于80c52及80c32控制器。如图7.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(7)

图7 两种头文件的区别

而c52单片机是c51单片机的增强板,主要区别为前者多了一个T2定时器,那么在头文件中,reg52.h就多了相应的T2定时器的相关特殊功能寄存器的声明,如定时器T2高八位、低八位寄存器:TH2,TL2;定时器T2中断允许寄存器:ET2等。如图8.

stc单片机管脚工作模式(STC单片机的特殊功能寄存)(8)

图8 reg52.h头文件多出的寄存器

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。