RAM用于存放程序执行的中间结果和过程数据(掉电后数据消失)
变量定义时 如果不加 code stc8a8k 默认存放RAM
共 256 字节,可分为 2 个部分:低 128 字节 RAM 和高 128 字节 RAM。
STC8集成了内部的扩展RAM,单片机内部扩展 RAM 是否可以访问,受辅助寄存器 AUXR 中的 EXTRAM 位控制。
STC8 系列封装管脚数为 40 及其以上的单片机具有扩展 64KB 外部数据存储器的能力 即除了8k的内部扩展RAM 还支持最大一共64k的RAM (如上图) :
如何扩展SRAM 和 使用场景 参考阅读 卓晴——扩展32KRAM的STC8H8K信号采集版
程序储存器用于 存放用户程序、数据、以及表格等信息。也是程序代码存放的地方。下载后掉电不擦除。
STC8A8K64S4A12 集成了64k的 Flash 程序储存器。 这个Flash 是指 ROM是falsh类型的ROM ,相比 普通ROM 读写快。
储存数据类型:存储用户程序 和一些只读 固定数据 ,C文件及h文件 中的所有代码、全局变量、局部变量、‘const’ 限定符定义的常量数据 。
因为st8a8k有很大的ROM 除了用户程序还有可以存放一些容量比较大的数组 以便使用 (如 图片数组 文字库 等)
基于stc8芯片 数组定义和声明 前如果只加 const 或者不加 编译时keil会报错提示
提示 图像数组已经超过 8k 这说明 keil 默认把 变量放到sRAM了 所以 内存不够用 。
这时需要 在 const 前 加 code 才会指定数组存放到64k的flash (const可加可不加 ,取决数组是否只读)
EEPROM (Electrically Erasable Programmable Read-Only Memory),有书本译作“电可擦可编程只读存储器”。 STC8 系列单片机内部集成了大容量的 EEPROM (利用 ISP/IAP 技术可将内部 Data Flash 当EEPROM ),可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。
EEPROM 的使用 :内部的 EEPROM 有 3 操作方式:读、 写和擦除,其中擦除操作是以扇区为单位进行操作,每扇区为 512 字节,即每执行一次擦除命令就会擦 除一个扇区,以 使用EEPROM 将 同一次 修改的数据 放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。 而读数据和写数据都是以字节为单位进行操作的,即每执行一次读或者写命令时只能读出或者写入一个字节。
移步阅读:EEPROM和flash的区别
EEPROM 的访问方式有两种:IAP 方式和 MOVC 方式。IAP 方式可对 EEPROM 执行读、写、擦除操作,但 MOVC 只能对 EEPROM 进行读操作,而不能进行写和擦除操作。
STC8芯片的EEPROM大小:不同型号内部EEPROM的大小不同
以STC8A8K16S4A12为例,程序空间(ROM)为16K,EEPROM空间 为48K 一共是64k的Flash空间。
不同型号的芯片 EEPROM空间和ROM空间的大小和访问地址存在差异,一般型号芯片的EEPROM空间大小固定,而特殊型号的芯片EEPROM的大小可以用户自己设置。
特殊型号的Flash 用户可在 单片机内部Flash空间 自定义规划 程序空间 和 EEPROM的 大小
可在烧录软件 设置EEPROM大小