概要
在学单片机原理这本书的时候,讲的特殊功能寄存器--SFR。老师都会告诉你,只有地址以0和8结尾的SFR(能被8整除)才能进行位寻址。但这是为什么呢?其实很简单,让我们慢慢道来!
详细解析
首先,我们要知道8051单片机只有位地址空间才可以进行位寻址,位地址空间有2个区域,一个是片内RAM的20H~2FH,一共16个单元128位;另一个区域则是SFR中的位地址,一共有12个寄存器,实际96个位,其中93个位可位寻址(因为AEH、BEH、BFH位未定义)。
8051的位寻址能力就是作用在这些范围内:内部RAM的20H~2FH的128个位,位地址00~7FH和特殊功能寄存器的12个寄存器。
说了这么多可能大家又乱了,但是我们可以看一下下面这张图:
这张图片就是清晰地解释了,其实SFR中字节地址以0和8结尾(被8整除)的寄存器 就是图中右边部分红色标注的部分。因为每个SFR寄存器有8位,刚好SFR的位地址编码和字节地址编码都是从80H开始的,所以那些80H,88H,90H,98H......都可以被位寻址。
小结
其实51单片机的SFR字节地址只有以0和8结尾才能位寻址的原因就是SFR的字节地址和位地址都是从80H开始编码,且一个寄存器有8个位,所以从80H开始,每加8就是下一个可位寻址的SFR寄存器!例如:80H,88H,90H,98H......
以上都是本人的见解,欢迎评论指正!希望对你有所帮助!