51单片机程序和变量存储位置

Posted ycpkbql

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机程序和变量存储位置相关的知识,希望对你有一定的参考价值。

一、概念理清

使用环境: keil2,生成的代码大小如下,data保存于内部RAM中,xdata保存于外部扩展SRAM中,code保存于FLASH中。

技术图片

51单片机涉及的存储介质:

RAM: 内部RAM,每种51单片机都应该有,共256字节。大小固定

SRAM:内存,掉电消失,外部扩展RAM,比内部RAM稍慢,作用一样,用于定义变量。大小要查单片机具体手册。最大0xFFFF

FLASH:(保存程序代码,只能按扇区更改)。大小要查单片机具体手册。

EEPROM:(保存掉电保存的数据,flash中也可以保存掉电保存的数据,但EEPROM可以按字节寻址,比FLASH稍微灵活一点)。大小要查单片机具体手册。.

 

二、C51存储修饰关键字:data、 idata 、pdata 、xdata、 code

        char i :  使用的RAM前128字节。无修饰,等同与data char i,对应keil2编译后的data

idata char i : 使用的RAM前256字节。即包含了data,对应keil2编译后的data

pdata char i :使用SRAM的前256字节,对应keil2编译后的 xdata

xdata char i:使用SRAM的所有字节。即包含了pdata,对应keil2编译后的 xdata

code char i: 使用FLASH中的空间,不可更改,相当于存储常量。,对应keil2编译后的flash

 

三、EEPROM不是用于变量定义,用来保存掉电数据。作用和FLASH一样。

以上是关于51单片机程序和变量存储位置的主要内容,如果未能解决你的问题,请参考以下文章

为啥MCS-51单片机的程序存储器和数据存储器共处同一地址空间而不会发生总线冲突

51单片机访问片内数据存储器某单元的内容用c语言怎么写???

单片机成长之路(51基础篇) - 017 C51中data,idata,xdata,pdata的区别(转)

单片机的程序存储器和数据存储器共处同一地址空间为啥不会发生总线冲突?

MCS-51单片机扩展系统中,片外程序存储器和片外数据存储器共处同一个地址空间,为啥不会发生总线冲突?

单片机的程序存储器和数据存储器共处同一地址空间为啥不会发生总线冲突?