7 存储器
1、数据储存器——RAM
内部 RAM 【以STC8A8K为例:其中低128字节直接访问为CODE、高128字节间接访问为ICODE】
内部扩展RAM 【以STC8A8K为例:包括8192字节内部XCODE】
外部扩展RAM【外部XCODE最大可以扩展为64KB】
2、程序储存器——ROM 3、EEPROM
RAM用于存放程序执行的中间结果和过程数据(掉电后数据消失)变量定义时 如果不加 code stc8a8k 默认存放RAM。
内部 RAM
共 256 字节,可分为 2 个部分:
低 128 字节 RAM 【0x00H-0x7FH】,其中0x00H-0x1FH共32字节为4个寄存器组,通过PSW RS0 RS1进行选择。 20H-2FH共16个字节可以直接进行位寻址。【不用与或操作】
高 128 字节 RAM【0x80H-0xFFH】。
备注:
rs0(1bit) rs1(1bit)各是PSW(8bit)中的一位,PSW是51单片机特殊功能寄存器 【20220619: sfr PSW = 0xd0; //程序状态字寄存器(0xd0=208)】。
(1)Cy(PSW.7)PSW.7是Cy即C,来源于最近一次算术指令或逻辑指令执行时软硬件的改。
(2)Ac(PSW.6) 辅助进位标志位,用于BCD码的十进制调整运算。当低四位向高四位借进位时Ac被置1,否则清0。此位也可和DA指令结合起来用。
(3)F0(PSW.5)用户使用的状态标志位。这个你可以任意使用。
(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。
(5)OV(PSW.2)溢出标志位 在执行算术指令时,指示运算是否产生溢出。
(6)PSW.1位: 保留位,未用。
(7)P(PSW.0)奇偶标志位。
比如 RS1=1等价于PSW |=0x10; RS0=0 等价于PSW &=0xf7;
内部扩展RAM
STC8集成了内部的扩展RAM,单片机内部扩展 RAM 是否可以访问,受辅助寄存器 AUXR 中的 EXTRAM 位控制。
STC8G 系列单片机的程序存储器和数据存储器是各自独立编址的。由于没有提供访问外部程序存储
器的总线,单片机的所有程序存储器都是片上 Flash 存储器,不能访问外部程序存储器。
STC8G 系列单片机内部集成了大容量的数据存储器。STC8G 系列单片机内部的数据存储器在物理
和逻辑上都分为两个地址空间:内部 RAM(256 字节)和内部扩展 RAM。其中内部 RAM 的高 128 字节的
数据存储器与特殊功能寄存器(SFRs)地址重叠,实际使用时通过不同的寻址方式加以区分。
7.1 程序存储器
程序存储器用于存放用户程序、数据以及表格等信息。
单片机复位后,程序计数器(PC)的内容为 0000H,从 0000H 单元开始执行程序。另外中断服务程序的入口
地址(又称中断向量)也位于程序存储器单元。在程序存储器中,每个中断都有一个固定的入口地址,当中断
发生并得到响应后,单片机就会自动跳转到相应的中断入口地址去执行程序。外部中断 0(INT0)的中断服务
程序的入口地址是 0003H,定时器/计数器 0(TIMER0)中断服务程序的入口地址是 000BH,外部中断 1(INT1)
的中断服务程序的入口地址是 0013H,定时器/计数器 1(TIMER1)的中断服务程序的入口地址是 001BH 等。
更多的中断服务程序的入口地址(中断向量)请参考中断介绍章节。