单片机的存储器配置(未完成,待补充)
89C51/S51单片机存储器分类
哈佛结构
物理结构上可以分为程序存储空间和数据存储空间,共4个存储空间。片内程序存储器、片外程序存储器空间、片内数据存储器、片外数据存储器空间
程序存储器和数据存储器分开的结构形式为哈佛结构,与哈佛结构相对的是普林斯顿结构。
存储器地址空间分类及指令
对于用户角度来看,89C51/S51存储器地址空间可以分为三类,但是3个存储空间地址是重叠的,89C51/S51的指令系统设计了不同的数据传输指令符号:
- 片内、片尾统一编码地址0000H ~ FFFFH的64KB程序存储器地址空间。MOVC指令
- 0000H ~ FFFFH的64KB片外数据存储地址空间。MOVX指令
- 256字节数据存储器地址空间(采用8位地址)。MOV指令
程序存储器的地址空间
程序存储器的分类
AT89S51/52以及STC89C51单片机采用4KB的Flash ROM的程序存储器,具有刷写方便,刷写速度快的,使用方便的优点。
此外还有以下程序存储器:
- 掩膜ROM程序存储器,用于成熟的和大批量生产的产品
- OTPROM,可以刷写程序,但是写入后不能擦除
- EPROM,可以刷写程序,刷写时需要用紫外线进行擦除
- E2 PROM,可以刷写程序但是速度稍慢
编址及寻址方式
编址
AT89C51单片机片内有4KB的Flash ROM,其地址为0000H~0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。
片外最多可扩至64KB ROM/EPROM,地址为1000H~FFFFH
片内片外同一编址
寻址方式(ROM读取方式)
-
EA=1 时
89C51的PC在0000H~0FFFH范围内执行片内ROM中的程序,当指令地址超过0FFFH后自动转向片外ROM中取指令 -
EA=0 时
89C51片内ROM不起作用,CPU只能从ROM/EPROM中取指令。可以从0000H开始寻址。 -
89C51从片内ROM和片外ROM取指的速度相同
-
ROM保留空间
0000H~0002H三个单元
用作89C51上电复位后引导程序的存放单元。因为复位后PC的内容为0000H,CPU总是从0000H开始执行程序。将转移指令存放到这三个单元,程序就被引导到指定的程序存储器空间去执行。0003H~002AH单元
地址 | 名称 |
---|---|
0003H~000AH | 外部中断0 |
000BH~0012H | 定时器0溢出中断 |
0013H~001AH | 外部中断1 |
001BH~0022H | 定时器1溢出中断 |
0023H~002AH | 串行口中断 |
数据存储器地址空间
数据存储器RAM(读写存储器)用于存放运算的中间结果、数据包暂存和缓冲、标志位等
片外RAM
片外64KB(0000H~FFFFH)RAM空间,采用MOVX指令进行寻址
片内RAM
片内地址空间
片内RAM最大可寻址256个单元,采用MOV寻址命令,可分为两类:
- 低128字节(00H~7FH)RAM
- 高128字节(80H~FFH)RAM
低128字节RAM()
-
工作寄存区(00H~1FH)
00H~1FH地址安排为4组工作寄存器区,每组8个工作寄存器(R0 ~ R7),共占32个单元
通过程序寄存器PSW中RSI、RS0两位设定选择CPU的当前工作寄存器组。复位时第0组为当前的工作寄存器
不需要第四组时其余可作为一般RAM单元
工作寄存器地址表
组 | RS1 RS0 | R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 |
---|---|---|---|---|---|---|---|---|---|
0 | 0 0 | 00H | 01H | 02H | 03H | 04H | 05H | 06H | 07H |
1 | 0 1 | 08H | 09H | 0AH | 0BH | 0CH | 0DH | 0EH | 0FH |
2 | 1 0 | 10H | 11H | 12H | 13H | 14H | 15H | 16H | 17H |
3 | 1 1 | 18H | 19H | 1AH | 1BH | 1CH | 1DH | 1EH | 1FH |
-
位寻址区(20H~2FH)
位寻址区有16个单元,每个单元8位,共128位00H~7FH
可通过位寻址方式访问其各位
这些可寻址位通过指令对某一位操作,置1、清0、判断 -
用户RAM区(30H~7FH)
用于堆栈和数据缓冲。即普通寄存器区