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大小keil中data,xdata,code指的是什么,存放在哪里,大小是否符合单片机参数规格_第1张图片
  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)大小,符合要求!

你可能感兴趣的:(单片机)