内容正文:
2.1.4 片内数据存储器
1
8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址0x00~0x7F)和高128单元(单元地址0x80~0xFF)。
片内数据存储器
RAM: Random Access Memory ,随机存取存储器
特点:可以随机读写数据,掉电内容丢失
容量:低128×8
用途:存放中间结果或临时数据——数据存储器
序 号 区 域 地 址 功 能
1 工作寄存器区 0x00~0x07 第0组工作寄存器(R0~R7)
0x08~0x0F 第1组工作寄存器(R0~R7)
0x10~0x17 第2组工作寄存器(R0~R7)
0x18~0x1F 第3组工作寄存器(R0~R7)
2 位寻址区 0x20~0x2F 位寻址区,位地址为:0x00~0x7F
3 用户RAM区 0x30~0x7F 用户数据缓冲区
片内数据存储器低128单元
这128字节的数据存储器怎样使用呢?其实,我们采用C语言编程的话,只要按照要求定义各类变量就可以了,不需要我们来具体考虑怎样存放这些中间变量,这也是我们采用C语言编程的好处,我们不需要了解太多单片机内部的结构。
专用寄存器SFR
控制程序
硬件系统
专用寄存器
对于编程员来讲,单片机的硬件就是以专用寄存器形式存在的,只要在程序中对专用寄存器赋值就可以控制硬件系统。对于单片机的硬件来讲,它把所有的硬件动作都转化成了专用寄存器的不同控制状态呈献给编程员。
7
专用寄存器
单片机专用寄存器,也称为特殊功能寄存器(Special Function Register,SFR)
位于内部RAM地址空间的高128字节位置(80H~FFH)
专用寄存器
21个SFR
地址不连续
空闲单元用户不可使用
程序计数器PC,物理独立,不占RAM单元
程序计数器PC
Program Counter——PC
16位的寄存器,寻址范围64KB
程序计数器PC
内容为下一条将要执行指令的地址
有自动加1功能,从而控制程序的执行顺序
程序计数器PC
用户无法对它进行读写。但可以通过转移、调用等指令改变其内容,以实现程序的转移
单片机复位时,PC=0000H
累加器ACC
寄存器B
程序状态字PSW
数据指针DPTR
堆栈指针SP
常用寄存器
sfr P1=0x90;
//专用寄存器P1的地址是0x90
P1=0x00;
sbit P1_0=P1^0;
//定义SFR中的可寻址位
P1_0=1;
sfr和sbit
在通常情况下,这些专用寄存器已经在头文件regx51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的专用寄存器。
#include <regx51.h>
sfr和sbit
$$