xdata(keil中data,xdata,code指的是什么,存放在哪里,大小是否符合单片机参数规格「终于解决」)

发布时间:2025-12-10 20:07:11 浏览次数:2

keil中data,xdata,code指的是什么,存放在哪里,大小是否符合单片机参数规格「终于解决」-xdata和pdata的区别

keil中data,xdata,code指的是什么,存放在哪里,大小是否符合单片机参数规格「终于解决」大多数单片机学习者入门时,在编译过程中会遇到这样一个问题:“编写的程序大小超出了单片机规定的范围”,如何解决呢?以Keil为例,首先我们在编译结束后,会得到如下提示(单位为字节Byte): 其中,data,xdata,code指的是什么呢? data 可寻址片内ram xdata 可寻址片外ram(64k地址范围FFFFH) code…

大多数单片机学习者入门时,在编译过程中会遇到这样一个问题:“编写的程序大小超出了单片机规定的范围”,如何解决呢?

以Keil为例,首先我们在编译结束后,会得到如下提示(单位为字节Byte):

其中,data,xdata,code指的是什么呢?

data 可寻址片内ram
xdata 可寻址片外ram (64k 地址范围FFFFH)
code 程序存储区rom (64k 地址范围),对应MOVC @DPTR

这些数据存放在单片机的哪里呢?

1.了解单片机的Flash、RAM、ROM大小及功能打开单片机芯片手册:(以STC12C5A系列为例)根据具体型号找到对应的Flash、RAM、ROM大小功能如下:

ROM

存储固化程序【存放指令代码和固定数值,程序运行后不可改动】
RAM 程序运行中数据的随机存取【掉电丢失数据】
FLASH 存储编写的程序和永久保存的数据

2.对应单片机和keil编译后的大小,看是否满足要求STC单片机的SRAM,一般包括内部RAM和片上RAM,其中内部RAM最大为256字节,其余SRAM为片上RAM,片上RAM相当于外部数据存储器。 故:片外ram=SRAM1280B – 片内RAM256B = 1024B根据芯片手册,用户程序区的程序Flash可作为ROM用。 故:EEROM+Flash=总rom大小以我们最开始Keil中显示的数据为例,data=103.2B保存在片内ram,小于128字节(片内RAM最大256字节,其中128字节是做寄存器用,用户不可使用),符合要求!xdata=123B保存在片外ram,小于1024B,符合要求!code=12461B保存在rom,小于(EEROM+Flash)大小,符合要求!

注:

1KB=1024B=1024*8b

1kB=1000B=8000b  

1Kb=1kb=1000b

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477