keil中data,xdata,code指的是什么,存放在哪里,大小是否符合单片机参数规格

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

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

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

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

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

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

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

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

注:

1KB=1024B=1024*8b

1kB=1000B=8000b  

1Kb=1kb=1000b

  • 27
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值