关于51单片机中的RAM、SFR和位地址的问题
扫描二维码
随时随地手机看文章
51单片机中_有_4EH这个位地址。
51单片机片内RAM的20H~2FH,这十六字节,可以按照“位”来寻址。
这里面共有128个“位地址”,分别为00H~7FH。
位地址4EH,是在“字节地址为29H的字节单元”中的第6位。
后记:做而论道搜集了51单片机中片内RAM的使用规范,整理如下。
MCS-51系列单片机片内RAM共有128字节,地址范围为00H~7FH。
在这128字节中,全部都可以按照字节地址进行操作(读、写或运算),直接或间接寻址方式皆可。
在这128字节中,按照使用特点,可以分成三类:工作寄存器区、位寻址区和通用数据区。
片内RAM的使用分类可见表1。
下面按照它们的功能特点,分别加以介绍。
1.工作寄存器区
在MCS-51系列单片机的片内RAM中,有四个工作寄存器区,分别称为工作寄存器区0~工作寄存器区3。
每区有八个字节,除了可以用字节地址号码操作之外,还可以用R0、R1…R7为名称对其操作。用名称进行操作,称为寄存器寻址,指令代码较为简短。
其中R0、R1可以作为间接寻址寄存器,以其中内容作为地址,能够对片内RAM(或片外RAM的256字节)进行间接寻址。
在任何时刻,只能使用一个工作寄存器区。当前使用那个区,可以通过指令设置PSW中的RS1和RS0来决定。PSW称为程序状态字,是下面要介绍的特殊功能寄存器。
通过设置RS1和RS0,可以快速切换当前工作寄存器区,适合在不同的程序段中进行保护现场。当前没有使用的工作寄存器区,不能使用R0、R1…R7等名称,但可以按字节地址对其随意读写。
复位时RS1和RS0皆初始化为0,故此复位后将自动使用工作寄存器区0。
2.位寻址区
位寻址区共有16字节,字节地址为20H~2FH,每个字节中的8个“位”,都有一个“位地址”。共有128个位,“位地址”的范围为00H~7FH。
这个区域中的“字节地址”与“位地址”的对应关系可见表2。
从表2中可以看到,前面问题所提到的“位地址4EH”,是在“字节地址29H”中,是第6位。
对位寻址区可以按照“位地址”来对某一个位单独进行操作,也可以按照“字节地址”进行操作,即同时对八个位地址的内容进行操作。
MCS-51系列单片机具有一套专用的“位操作”指令(又称为布尔指令),可对这些位地址进行“与”、“或”、“非”等操作。这是该系列单片机的特色之一。
3.通用数据区
通用数据区有80字节,只能按“字节地址”(直接或间接寻址)进行操作。
上面介绍了00H~7FH地址范围内的RAM,下面接着这个地址,继续向高地址方向介绍。
在片内80H~FFH地址范围内,离散的分布着21个特殊功能寄存器(SFR),寄存器名称与地址分布见表3。
8052系列单片机,在80H~FFH范围内,还有128字节的片内通用RAM,对其操作时,则必须采用“间址”寻址方式。
而对这片地址范围内的特殊功能寄存器只能采用“直接”寻址方式进行操作。
特殊功能寄存器中有11个还可以进行“位寻址”,表3中也列出了可以位寻址的寄存器以及位地址号码。
在表3中,如果位地址为空白,则说明该寄存器不能进行“位寻址”。
由表3可以看出规律:当字节地址可以被8整除时,该字节即可以按位寻址。其最低位的“位地址”与“字节地址”相同,其他位的位地址向高位依次加1。
================================================