程序存储空间:存放程序及程序运行时所需的常数。
51的程序存储空间寻址地址长度有16位,可寻址64KB巨细的OTP ROM或FLASH空间,其间这16位的地址线,有8位的地址线可用于内部ROM的扩展,所以内部ROM最大的寻址空间为4KB。或许16位的地址空间悉数用于片外扩展,这取决于EA脚置1或置0,当EA脚置1是程序从片内ROM开端履行,当PC值超越片内ROM容量时会主动转向外部ROM空间,当EA脚置0时程序直接从外部存储器开端履行,例如前面说到的片内无ROM的8031单片机,在实践运用中就要把8031的引脚接为低电平。其间该程序地址空间有七个地址单元用于中止向量:如下:每个向量包括8个地址单元
七个具有特别意义的单元是:
0000H —— 体系复位,PC指向此处;
0003H —— 外部中止0进口
000BH —— T0溢出中止进口
0013H —— 外中止1进口
001BH —— T1溢出中止进口
0023H —— 串口中止进口
002BH —— T2溢出中止进口
数据存储空间:
数据存储器也称为随机存取数据存储器。数据存储器分为内部数据存储和外部数据存储。MCS-51内部RAM有128或256个字节的用户数据存储(不同的类型有别离),片外最多可扩展64KB的RAM,构成两个地址空间,拜访片内RAM用“MOV”指令,拜访片外RAM用“MOVX”指令。它们是用于存放履行的中心成果和进程数据的。MCS-51的数据存储器均可读写,部分单元还能够位寻址。
MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:
数据存储器空间(低128单元);
特别功用存放器SFR空间(高128单元), 而与SFR重合的DATA空间由于只能做成直接寻址(indirect),所以叫iDATA空间;
这两个空间是相连的,从用户视点而言,低128单元才是真实的数据存储器。下面咱们就来具体的与咱们解说一下:
低128单元:
片内数据存储器为8位地址,所以最大可寻址的规模为256个单元地址,对片外数据存储器选用直接寻址方法,R0、R1和DPTR都能够做为直接寻址存放器,R0、R1是8位的存放器,即R0、R1的寻址规模最大为256个单元,而DPTR是16位地址指针,寻址规模就可到达64KB。也便是说在寻址片外数据存储器时,寻址规模超越了256B,就不能用R0、R1做为直接寻址存放器,而必须用DPTR存放器做为直接寻址存放器。
< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />
从上图中咱们能够看到,8051单片机片内RAM共有256个单元(00H-FFH),这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特别存放器(SFR)单元。从图1中可清楚地看出它们的结构散布。
1、通用存放器区(00H-1FH)
在00H—1FH共32个单元中被均匀地分为四块,每块包括八个8位存放器,均以R0—R7来命名,咱们常称这些存放器为通用存放器。这四块中的存放器都称为R0—R7,那么在程序中怎样区别和运用它们呢?聪明的INTEL工程师们又组织了一个存放器——程序状态字存放器(PSW)来办理它们,CPU只需界说这个存放的PSW的D3和D4位(RS0和RS1),即可选中这四组通用存放器。对应的编码联系如下表所示。惹程序中并不需要用4组,那么其他的可用做一般的数据缓冲器,CPU在复位后,选中第0组作业存放器。
组< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> |
RS1 RS0 |
R0 |
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
0 1 2 3 |
0 0 0 1 1 0 1 1 |
00H 08H 10H 18H |
01H 09H 11H 19H |
02H 0AH 12H 1AH |
03H 0BH 13H 1BH |
04H 0CH 14H 1CH |
05H 0DH 15H 1DH |
06H 0EH 16H 1EH |
07H 0FH 17H 1FH |
2、位寻址区(20H-2FH)
片内RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如下表所示:
RAM位寻址区地址表 |
|||||||||
单元地址 |
MSB位地址LSB |
|
|||||||
2FH |
7FH |
7EH |
7DH |
7CH |
7BH |
7AH |
79H |
78H |
|
2EH |
77H |
76H |
75H |
74H |
73H |
72H |
71H |
70H |
|
2DH |
6FH |
6EH |
6DH |
6CH |
6BH |
6AH |
69H |
68H |
|
2CH |
67H |
66H |
65H |
64H |
63H |
62H |
61H |
60H |
|
2BH |
5FH |
5EH |
5DH |
5CH |
5BH |
5AH |
59H |
58H |
|
2AH |
57H |
56H |
55H |
54H |
53H |
52H |
51H |
50H |
|
29H |
4FH |
4EH |
4DH |
4CH |
4BH |
4AH |
49H |
48H |
|
28H |
47H |
46H |
45H |
44H |
43H |
42H |
41H |
40H |
|
27H |
3FH |
3EH |
3DH |
3CH |
3BH |
3AH |
39H |
38H |
|
26H |
37H |
36H |
35H |
34H |
33H |
32H |
31H |
30H |
|
25H |
2FH |
2EH |
2DH |
2CH |
2BH |
2AH |
29H |
28H |
|
24H |
27H |
26H |
25H |
24H |
23H |
22H |
21H |
20H |
|
23H |
1FH |
1EH |
1DH |
1CH |
1BH |
1AH |
19H |
18H |
|
22H |
17H |
16H |
15H |
14H |
13H |
12H |
11H |
10H |
|
21H |
0FH |
0EH |
0DH |
0CH |
0BH |
0AH |
09H |
08 H |
|
20H |
07H |
06H |
05H |
04H |
03H |
02H |
01H |
00H |
|
CPU能直接寻址这些位,履行例如置“1”、清“0”、求“反”、搬运,传送和逻辑等操作。咱们常称MCS-51具有布尔处理功用,布尔处理的存储空间指的便是这些为寻址区。
3、用户RAM区(30H-7FH)
在片内RAM低128单元中,通用存放器占去32个单元,位寻址区占去16个单元,剩余的80个单元便是供用户运用的一般RAM区了,地址单元为30H-7FH。对这部份区域的运用不作任何规则和约束,但应阐明的是,仓库一般拓荒在这个区域。
高128单元:(80H-FFH)
前面说到,在片内的RAM中,高128位是专用存放器区,因这节比较重要,所以咱们独自的组织一节课跟咱们介绍。下节课咱们就要点介绍51单片机片内RAM的高128位,即专用存放器区。