单片机 sfr定义
我是一名单片机工程师,对于什么是sfr,下面的讲解你参考一下。
sfr全称为:special function register(翻译为:特殊功能寄存器)
先了解什么是寄存器。
打个比喻。
单片机里面,共有两种寄存器,第一种是ROM,第二种是RAM。
1 ROM的功能:ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变,就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理。
2 RAM的功能:RAM就是在程序运行中,数据会随时改变的,就像我们的黑板,写上了可以擦,擦完再写上去,相当于程序运行的时候,调用ROM里面的数据进行各种运算。
再来了解如何为特殊功能
这个sfr是在RAM(动态寄存器)里面的,如何为特殊功能呢?
举一个非常简单的例子区别一下,比如:sfr P0 = 0x80,把单片机地址0x80改名字为P0,因为0x80这个地址是连接着单片机外面的P0口的,为什么要改名字呢?就是方便我们记忆运用。
那如何为不特殊呢?就是除了sfr或者我们没有刻意定义名字的,就归为不特殊。
一个弄明白之后,
sfr P1 = 0x90
sfr P2 = 0xA0
sfr P3 = 0xB0
sfr PSW = 0xD0
sfr ACC = 0xE0
上面这些你就懂了,简单来了就是为RAM里面的地址改名字方便我们用。
其实这些东西你不用过于研究的,你了解一下就可以,因为我们在写程序中肯定有一个reg52.h的头文件,因为定义名字这个事情就在这个头文件里面了,你会调用就行,不用过于研究。
如果你想学习更多单片机和程序的知识,可以看看我整理好的“17个实验学会单片机”,百度一下“17个实验学会单片机”就可以看到在首页了。
关于尾声
学单片机靠的是坚持,不能三天打鱼两天晒网,只要坚持就会看到希望。如果不坚持,一辈子(100年)都学不会,如果坚持,一个月后你就会感觉到单片机迷人的一面了。加油,祝你成功!
征和黄金油封链条好。其优点有:
1、寿命长。征和黄金油封链条能更好的减小磨损。
2、噪声小。征和黄金油封链条能更好的润滑。
3、基本免维护。征和黄金油封链条有油封胶圈,可以更好的隔绝润滑油的外泄、沙石、泥土、水和灰尘等杂物。
在c语言中无法对SFR(特殊寄存器),比如程序状态寄存器(PSW)等寄存器进行操作,也就不能判断它们的标志位了。比如判断Z标志位,C标志位等操作。对于要操作这类寄存器。我们唯一的办法只能用汇编语言。或者在C语言中嵌入汇编语言来解决。所以我们写单片机程序千万不能放弃汇编语言。某些底层的硬件操作只能靠汇编语言来完成。
希望对你有所帮助,望采纳。
sfr P0 =0x80
(C语言,这样就定义了51系列MCU中0x80地址,在编程时可以用P0符号代替地址0x80,具有定义硬件特性)
在汇编中和DATA相似,举例子:
P0 DATA 80H
(汇编语言,说明和上面一样)
define 是KEIL中预处理命令,作为define后面字串的文本代替,一般没有定义硬件的特性,,在使用时,前面必须加上 # 号,编译器在编译时,先查找代码中的宏定义自串,然后在用在宏后面的数据去替代,例子:
#define pi 3.1415926
(以后使用中,可以用pi来代替3.1415926)
在使用define定义宏的时候,是没有数据类型指定的,而在调用的时候被相关数据类型转换。
Good Luck.