简要总结:在单片机中RAM是存变量以及变量的运算的地方,flash是存程序的地方。
存储器分类
关于存储器的类型,在网上多种多样,同一存储器名字也有多种叫法,使初学者苦不堪言,同时为了方便读者理解,以下是具体分类。
概念
(1)RAM
掉电数据丢失,但运行快,正是因为运行快,所以程序中变化的数据都会在RAM中变化,变量也存储在里面。
(2)flash
运行慢,但掉电数据不丢失,正是因为掉电不丢失,所以写好的程序会存在flash里面。
举例
举一个例子说明
51单片机点亮的程序, while(1);的作用:只执行一次led1=0;,然后一直执行空语句。(不是重点)
可以看到红色框框内有data xdata code,data与xdata表示的都是变量的大小,data存储是内部RAM,xdata存储在外部RAM,code就是程序大小。
当前为
也就是变量的大小为9个字节,程序有19个字节。
(只改变code的大小)
当去掉while(1);这段代码,再进行编译。
可以看到
data没有变,而code从19变成了18,也就是程序大小变小了。
(只改变data的大小)
在上图的代码基础上加一行代码。char a;
可以看到data=10.0,从9变成了10,同时我们知道char型变量占一个字节,理论上data的大小也该加一,事实上也是如此。
详细见https://www.bilibili.com/video/BV1eJ41187Tn/?spm_id_from=333.788