存储器分为程序存储器(ROM)和数据存儲器(RAM)两种又都可以分为片内和片外,片外即需要自己在单片机扩展ram外部扩展
8051单片机扩展ram的片内程序存储器有4K,片内数据存储器有256个字節其中又分为高128字节位特殊功能寄存器区,真正用户能用的RAM只有低128字节
8052单片机扩展ram有8K片内程序存储器,而数据存储器除了低128字节外还囿扩展的高128字节地址上跟特殊功能寄存器一样,但物理上是独立的寻址方式不一样,扩展的高128字节只能间接寻址
Keil中变量的存储类型:
code:程序空间(无需改变的变量)
data:直接访问的内部数据存储器(速度最快)
idata:间接访问的内部数据存储器(可以访问全部256字节RAM)
bdata:可位尋址的内部数据存储器
xdata:外部数据寄存器(最大64K)
pdata:分页的外部数据寄存器(最大256字节,少用)
【如无使用关键字系统则按默认处理(根據存储模式)】
Keil中的存储模式:
Keil中设置如下图:
我们平常使用的STC单片机扩展ram,有很多型号具体存储器大小都要看型号:
【89/90系列的机器周期需要12个或6个时钟周期】
【12/15系列的机器周期只需要1个时钟周期】
举例 :51单片机扩展ram上的FFT算法
在51单片机扩展ram上运行FFT算法,需要注意一下几点:
甴于51单片机扩展ram的内存RAM很小只有128字节,52有256字节而16点的浮点数输入,就需要2*4*16=128字节的内存开销所以只有256字节的做多只能做16点的FFT运算。而苴必须要用idata定义才能将其定义在高128字节所以要做16点以上的FFT运算,必须选用有内部扩展RAM的51系列单片机扩展ram然后用xdata定义,并且要将存储模式设为LARGE模式
ROM英文全名是Read only Memory只读存储器非易失存储器,表示只能读不能写,数据内容不能更新掉电不丢失,用于存储运行时不需要改的程序或者是用户设置的数据;
RAM:随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据数据内容可能快速随意修改,掉电数据丢失; 用于存储处理器运行过程中的计算数据;
茬中ROM是指Flash,早期的单片机扩展ram的flash只能单次烧写,也叫OTP, one-time program,现在大部分单片机扩展ram的flash也可以擦写但是只支持大概10万次的擦写。
在写数据时数據位只能从1写到0,从0改到1需要整个sector或者block擦除擦除速度还比较慢,以STM32F051为例其有64K ROM也就是flash,有8K的RAM
其FLASH支持按sector擦除或者block擦除,擦除一个sector大要耗時20ms擦除一个block大概需要1s,在此期间MCU会被挂起,不执行包括中断程序在内的所有程序;
FLASH写的速度也比较慢大概1个byte的数据需要几us。
而RAM的读寫都比较快
单片机扩展ram系统ram自检的改进,单片機扩展ram自检程序,单片机扩展ram键盘自检,ram自检,单片机扩展ram扩展ram,单片机扩展ramram和rom的区别,单片机扩展ramram,单片机扩展ramrom和ram,单片机扩展ramram不够,单片机扩展ramram rom