8051架构的单片机存储器主要包括:内部RAM、扩展RAM、特殊功能寄存器和程序存储器Flash。
存储结构示意图
1. 程序存储器Flash
- 8051架构支持最大64K字节的Flash空间;
- 程序代码是存储在Flash空间的,8051只能执行存储在Flash中的代码;
- 常数变量也可以存储在Flash空间;
- 访问Flash空间的方式是使用MOVC指令间接寻址,不能直接寻址;
2. 内部RAM
- 内部RAM数据可以读写操作,最大支持256字节的存储空间;
- 低128字节可以直接寻址,也可以间接寻址;
- 高128字节只能间接寻址;当直接寻址访问时,会自动映射到SFR空间;
- 低128字节的20H~2FH空间,可以通过位寻址;
- 读取内部RAM数据是非常快的,是因为可以通过8位地址直接访问;
- C51编译器提供3种不同的内存类型来访问内部RAM:data, idata和bdata;
- 使用data类型访问内部RAM时,指向低128字节空间;读写数据时,是使用直接寻址的方式;
- 使用idata类型访问内部RAM时,指向所有256字节空间;读写数据时,使用间接寻址;
- 使用bdata类型访问内部RAM时,指向20H~2FH空间;可以按位进行读写操作;
3. 扩展RAM
扩展RAM区域可以进行读写操作。访问扩展RAM区域时,通过一个数据指针寄存器进行间接访问,因此读写速度要比内部RAM区域慢。
扩展RAM区域最大支持64K字节存储空间,但是这些地址不一定全部用于内存空间。一些8051单片机会把外设地址映射到扩展RAM区域,MCU可以通过访问扩展RAM来控制外设,这种技术叫内存映射I/O。
C51编译器提供2中不同的内存类型来访问扩展RAM:xdata和pdata:
- 使用xdata类型访问扩展RAM时,可以访问所有64K字节的空间;
- 使用pdata类型访问扩展RAM时,只能方位一个页(256字节)的空间;
4. 特殊功能寄存器SFR
- 8051架构提供128字节的内存空间给特殊功能寄存器(SFR);
- SFR可以值位、字节或字大小的寄存器,用来控制定时器、计数器、串行I/O、端口I\O和其他外设。
- 访问SFR空间时,使用MOV指令直接寻址,不能间接寻址;
关于作者
微信公众号:萤火虫的电子笔记
分享电子产品开发软、硬件方面知识,51单片机、STM32、ARM、AltiumDesigner PCB设计、开发平台、软件工具等知识分享。
欢迎转发,请注明出处及作者。关注微信公众号,获取最新文章动态。