STC15 系列单片机的存储器分为两种,程序存储器和数据存储器。其实单片机的程序存储器就是 Flash,类似于我们电脑上的硬盘;单片机的数据存储器就是 SRAM,类似于我们电脑上的内存条。我们常说的单片机烧录或者下载,就是把产生的固件放在单片机的程序存储器 Flash 中,就像我们在电脑上装软件,软件是装在硬盘上。
一、程序存储器 Flash
单片机的程序存储器就是用来存储程序的,STC15W4K 系列单片机根据不同的型号,集成了不同大小的 Flash。
单片机复位后,程序计数器 PC 里面存的内容就是 0000H,表示单片机从程序存储器的 0000H 地址处开始执行程序。
单片机的中断向量也在程序存储器中,中断向量也就是中断服务程序的入口地址,也就是中断程序开始执行的地址,关于中断工作原理,后面单独讨论。
单片机的程序存储器 Flash,可以反复擦写 10 万次以上,我们下载程序到单片机,其实就是重新擦写单片机的程序存储器 Flash。
二、数据存储器 SRAM
单片机的数据存储器 SRAM,就是一种 RAM,其中 S 是 static 的缩写,表示静态存储器,相对的就是动态存储器 DRAM,这些以后再讨论。
单片机的 SRAM 用于存放程序执行的中间结果和过程数据。STC15W 系列单片机数据存储器的容量因型号而异。
STC15W4K 系列单片机的内部 SRAM 和内部扩展 RAM,在物理和逻辑上都分别属于不同的地址空间,也就是说内部 SRAM 和内部扩展 RAM 是两个相互独立的东西。
40 引脚以上的 STC15 系列单片机还可以再单片机外扩展 64kB 的外部数据存储器。
2.1 内部 RAM
STC15W4K 系列单片机内部 RAM 一共 256 字节,这 256 个字节还分 3 个部分:
低 128 字节、高 128 字节、特殊功能寄存器区
**低 128 字节:**与传统的 8051 单片机兼容,因为 8051 单片机的 RAM 只有 128 个字节,低 128 字节的数据存储区,既可以直接寻址,也可以间接寻址。低字节 RAM 区也叫通用 RAM 区,它还可以继续分为工作组区(地址从 00H--1FH,共 32 个字节大小)、可位寻址区(20H--2FH,共 16 个字节大小,既可以按字节为单位读写,也可以按照位为单位读写)、用户 RAM 区、堆栈区。
**高 128 字节:**51 单片机的内核是 Intel 公司,Intel 在 8052 中扩展了高 128 字节的 RAM,高 128 字节存储区只能间接寻址。
**特殊功能寄存器区:**只能直接寻址,看起来与高 128 字节存储器的地址都是 80H--FFH,但是它们是不同的东西,通过寻址方式来区分。
2.2 内部扩展 RAM
STC15W4K 系列单片机除了内部集成的 256 字节的内部 RAM,还集成了 3840 字节的扩展 RAM,扩展的 3840 字节 RAM 地址范围是 0000H--0EFFH,可以看出他的地址也是从 0000H 开始的,而不是延续内部 SRAM,说明它是一个独立的东西。
访问 STC15W 单片机内部扩展 RAM 的方法与访问 8051 单片机外部扩展 RAM 方法是相同的。
内部扩展 RAM 是否可以访问受辅助寄存器 AUXR 中的 EXTRAM 位控制:
EXTRAM 位为 0 时,内部扩展的 RAM 可以读写;
EXTRAM 位为 1 时,内部扩展的 RAM 禁止读写;
三、特殊功能寄存器 SFR
特殊功能寄存器,Special Function Register 的缩写 SFR,是一种控制寄存器和状态寄存器,是用来对单片机内各个功能模块进行管理、控制和监视的。
特殊功能寄存器实际上就是一个特殊功能的 RAM 区。
STC15 单片机的特殊功能寄存器与高 128 字节 RAM 共用相同的地址范围,都是 80H--FFH,但是 SFR 必须使用直接寻址指令访问。
STC15W 系列单片机的特殊功能寄存器名称及地址分布如下:
部分寄存器支持位寻址,部分不支持。
四、几种常用的寄存器
4.1 程序计数器 PC
程序计数器 PC(Program Counter 的首字母缩写),PC 是一个独立的寄存器,不属于特殊功能寄存器。PC 有 16 位,用来控制指令的执行顺序。单片机复位后,PC = 0000H,强制单片机从程序存储器的 0 地址处开始执行程序。
4.2 累加器 ACC
累加器 ACC,是单片机内部最常用的寄存器,是一个 SFR,也可以写作 A,常用于存放参加算术或逻辑运算的操作数和运算结果。
4.3 B 寄存器
B 寄存器在乘法和除法运算中,与累加器 ACC 配合使用。
4.4 程序状态字寄存器 PSW
4.5 堆栈指针 SP
堆栈指针是一个 8 位专用寄存器,是一个 SFR,它用来指示栈顶的位置,系统复位后,SP 初始化为 07H。
4.6 数据指针 DPTR
数据指针是一个 16 位专用寄存器,有 DPL 和 DPH 组成。DPTR 是传统 8051 单片机中唯一可以直接进行 16 位操作的寄存器,也可以对 DPL 和 DPH 单独进行字节操作。


