对于很多51单片机的初学者,甚至很多从C语言开始学单片机的老手,不一定完全知道所谓的DATA、BDATA、IDATA、XDATA、CODE、BANK0~BANK31的具体含义和区别。
1.1 普通8051单片机存储空间的分配
|
空间名称 |
地址范围 |
说明 |
|
DATA |
D:00H~7FH |
片内RAM直接寻址区 |
|
BDATA |
D:20H~2FH |
片内RAM位寻址区 |
|
IDATA |
I:00H~FFH |
片内RAM间接寻址区 |
|
XDATA |
X:0000H~FFFFH |
64K片外RAM数据区 |
|
CODE |
C:0000H~FFFFH |
64K片内外ROM代码区 |
|
BANK0~BANK31 |
B0:0000H~FFFFH
:
:
B31:0000H~FFFFH |
分组代码区,最大可扩展32X64KB ROM |
1.2 新型80C51单片机扩展空间分配
|
空间名称 |
地址范围 |
说明 |
|
DATA |
D:00H~7FH |
片内RAM直接寻址区 |
|
BDATA |
D:20H~2FH |
片内RAM位寻址区 |
|
IDATA |
I:00H~FFH |
片内RAM间接寻址区 |
|
XDATA |
X:0000H~FFFFH |
64KB常规片外RAM数据区 |
|
HDATA |
X:0000H~FFFFFFH |
16MB扩展片外RAM数据区 |
|
CODE |
C:0000H~FFFFH |
64K常规片内外ROM代码区 |
|
HCONST(ECODE) |
C:0000H~FFFFFFH |
16MB扩展片外ROM常数区(对Dallas390可用作代码区) |
|
BANK0~BANK31 |
B0:0000H~FFFFH
:
:
B31:0000H~FFFFH |
分组代码区,最大可扩展32X64KB ROM |