打印
[技术问答]

Keil C51中code、data、bdata、idata、xdata、pdata的解释

[复制链接]
2553|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vivilyly|  楼主 | 2024-6-28 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8051 结构提供给用户3 个不同的存储空间,程序存储器ROM,数据存储器RAM(内部RAM和外部RAM)。
Keil C51通过以下的关键字定义了不同的存储类型,从而确保用户能够访问到51架构的全部存储空间。
code
访问程序存储器ROM,即我们常说的代码段,用来存放可执行代码,空间可达64K(0x0000~0xffff),该存储空间的代码段是只读的。
data
访问可直接寻址的片内存储器,即内部RAM,即我们常说的DATA区或数据段,在整个RAM块中只占前128 字节(0x00~0x7f),因为它采用直接寻址方式,对变量最高速的访问最快,通常我们把使用比较频繁的变量或局部变量存储在DATA 段中,但是次数必须节省,因为它的空间毕竟有限。
DATA数据段中分为两个子段,第一个子段包含四组寄存器组,每组寄存器组包含八个寄存器,共32 个寄存器;另外一个子段叫做位寻址段BDATA, 大小16 个字节,共128 位,每一位都可单独寻址:
bdata
访问位寻址的片内存储器,即访问内部RAM,在其中从20H开始的16字节(0x20~0x2f)。
xdata
访问外部数据存储器,即外部RAM,大小64K(0x0000~0xffff),16 位地址寻,称作外部数
据区简称XDATA 区,访问XDATA 须采用间接寻址。
idata:访问间接寻址的内部RAM ,256个字节(0x00~0xff),在8051 系列的一些单片机如8052 有附加的128 字节的内部RAM,固定指前面0x00-0xff的256个字节的片内RAM,其中前128字节和data的128字节完全相同,只是因为访问的方式不同。
pdata:访问当前页面内的外部RAM中的XDATA,每一页256字节,按页访问。PDATA 段只有256 个字节,而XDATA段可达65536 个字节(64K嘛),对PDATA 和XDATA 的操作是相似的,但是对PDATA 段寻址比对XDATA 段寻址要快,因为对PDATA 段寻址只需要装入8 位地址,而对XDATA 段寻址需装入16 位地址,所以尽量把外部数据存储在PDATA 段中。

使用特权

评论回复
沙发
eefas| | 2024-7-4 19:33 | 只看该作者
在Keil C51中,默认情况下,程序代码存储在片内程序存储器中。如果你需要将代码存储在外部存储器中,可以使用code关键字指定代码存储区域。

使用特权

评论回复
板凳
robincotton| | 2024-7-4 20:19 | 只看该作者
code
存储位置:程序存储器(ROM或Flash)。
用途:用于存储程序代码和常量数据。
特点:一旦存储,内容不可更改。
大小:通常可达64KB(取决于具体芯片)。

使用特权

评论回复
地板
elsaflower| | 2024-7-4 21:51 | 只看该作者
idata 用于声明一个间接寻址数据区域。这些变量存储在间接寻址寄存器(如R0、R1)指向的内存地址中。它们通常用于实现复杂的数据结构,如链表和树等。

使用特权

评论回复
5
robincotton| | 2024-7-7 14:14 | 只看该作者
xdata 关键字用于声明外部数据存储器(外部RAM)中的变量。当内部RAM不足以满足需求时,可以使用 xdata 关键字在外部扩展的RAM中声明变量,但这会使得访问速度变慢。

使用特权

评论回复
6
geraldbetty| | 2024-7-7 17:18 | 只看该作者
选择适当的存储类型很重要,因为它影响到变量的访问速度和内存的使用效率。

使用特权

评论回复
7
chenjun89| | 2024-7-7 20:06 | 只看该作者
51比较简单,容易从机制上了解清楚。

使用特权

评论回复
8
timfordlare| | 2024-7-9 20:17 | 只看该作者
idata间接寻址的内部RAM区域,覆盖整个片内RAM

使用特权

评论回复
9
wwppd| | 2024-7-9 23:19 | 只看该作者
code 关键字用于声明程序存储器(ROM)中的变量。在8051微控制器中,程序存储器是非易失性的,用于存储程序代码和固定的数据表。使用 code 声明的变量在编译时会被放置在ROM中,并且在运行时不能被修改。

使用特权

评论回复
10
xiaoyaodz| | 2024-7-10 02:20 | 只看该作者
访问当前页面内的外部RAM中的XDATA,每一页256字节,按页访问。PDATA段只有256个字节,但XDATA段可达64K。

使用特权

评论回复
11
bartonalfred| | 2024-7-10 05:22 | 只看该作者
idata变量可以用于内部RAM,也可以用于外部RAM

使用特权

评论回复
12
hearstnorman323| | 2024-7-10 20:30 | 只看该作者
尽量使用片内RAM,因为它访问速度快,但在需要更多内存时,可以使用片外RAM。

使用特权

评论回复
13
louliana| | 2024-7-10 23:34 | 只看该作者
pdata访问速度介于data和xdata之间,范围是一页(256字节)。

使用特权

评论回复
14
updownq| | 2024-7-12 09:20 | 只看该作者
pdata外部RAM的低256字节(0x00至0xFF),分页寻址。访问速度比xdata快,因为只需要8位地址。

使用特权

评论回复
15
wengh2016| | 2024-7-12 12:52 | 只看该作者
bdata 关键字用于声明位寻址的内部数据存储器中的变量。8051微控制器有16字节的位寻址内部RAM,使用 bdata 声明的变量可以进行位操作。

使用特权

评论回复
16
hearstnorman323| | 2024-7-12 16:28 | 只看该作者
访问程序存储器ROM,即我们常说的代码段,用来存放可执行代码。空间可达64K(0x0000~0xffff),该存储空间的代码段是只读的。

使用特权

评论回复
17
cashrwood| | 2024-7-12 20:04 | 只看该作者
pdata 关键字用于声明分页的外部数据存储器中的变量。这种类型的存储器访问比 xdata 快,因为它使用8位的地址指针,但需要外部RAM被组织成分页的结构。

使用特权

评论回复
18
benjaminka| | 2024-7-13 11:08 | 只看该作者
idata 关键字用于声明间接寻址的内部数据存储器中的变量。除了直接寻址的内部RAM外,8051微控制器还可以通过间接寻址访问全部256字节的内部RAM。

使用特权

评论回复
19
earlmax| | 2024-7-13 14:43 | 只看该作者
xdata 这些变量存储在外部RAM中,通常用于与外部设备进行数据交换。

使用特权

评论回复
20
kkzz| | 2024-7-13 18:19 | 只看该作者
在Keil C51编译器中,code、data、bdata、idata、xdata和pdata是用于定义变量存储类型的关键字,它们分别对应于8051微控制器的不同存储区域。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

1697

帖子

1

粉丝