[标准8051]8051核的基本知识_存储…
2015-07-11 00:17
281 查看
问题描述:之前使用过STC89C51一类型的单片机,这个就是基于标准的8051核的。和计算机或当前的一些高级应用的ARM架构的芯片许多地方还是不一样的,毕竟面向的是低端应用的场合。虽然目前51受到ARM
Cortex-M0的强力打压,但仍有比较大的市场,因为价格,也因为之前多年的流行的一些积累。8051速度相对较慢,代码空间最大支持64K(也有超过64K的,得需要特别的编译器的支持,器件和应用程序的编写也都要支持才行)。以前零碎对8051的核有些了解,下面参考自http://www.8052.com的内容进行了标准8051存储器基本知识的一些梳理。
8051存储器有三类,片内存储器、片外Code存储器、片外RAM。
片内存储器可以是任何类型(Code, RAM 或其它);片外Code存储器通常为外部EPROM;片外RAM通常是标准SRAM或Flash
RAM。
Code存储器:
用来存放8051要运行的程序的地方。限制为64K,有多种类型与大小:可以是片内的,也可以是外部ROM或EPROM。另外Flash
RAM也可以存储程序(流行的方法)。除非有特别的编译器支持,8051最大只能支持64k代码空间。
外部RAM:
速度较内部存储器要低。虽然牺牲了灵活性与速度,但得到了量。内部RAM限制在128字节或256字节,但外部RAM可扩展至64K。
片内存储器:
实际有两种类型:内部RAM和特殊功能寄存器—SFR:
(1)前面128字节是内部RAM,芯片复位后都会清空的。00h-07h的前8个字节为“寄存器组0”,通过操作SFR,程序可以选择使用寄存器组1,2,3。
(2)位存储地址为20h-2Fh。
(3)30h-7Fh的内部RAM可用作频繁访高速的用户变量。这个区域也被用于操作系统堆栈的存储区域。这样其实8051的堆栈空间是很受限制的,因为还要放一些用户变量。
(4)寄存器组(Register Banks):
每组由R0, R1, R2, R3, R4, R5, R6,
R7组成,这些寄存器用于操作变量和转移数据。8051初启动时,默认使用寄存器组0,可以通过程序改变使用的寄存器组。寄存器组非常灵活,对于中断的处理非常有用,当程序中确保其他寄存器不使用时,可将其用作用户内部RAM。
(5)位存储:128位可位寻址空间。如使用SETB和CLR可以访问。位存储只是内部RAM的一个子集,任何内部RAM的操作也适用于位存储空间的。
(6)特殊功能寄存器:用于特殊功能的操作,IO口,串口,定时器等。
Cortex-M0的强力打压,但仍有比较大的市场,因为价格,也因为之前多年的流行的一些积累。8051速度相对较慢,代码空间最大支持64K(也有超过64K的,得需要特别的编译器的支持,器件和应用程序的编写也都要支持才行)。以前零碎对8051的核有些了解,下面参考自http://www.8052.com的内容进行了标准8051存储器基本知识的一些梳理。
8051存储器有三类,片内存储器、片外Code存储器、片外RAM。
片内存储器可以是任何类型(Code, RAM 或其它);片外Code存储器通常为外部EPROM;片外RAM通常是标准SRAM或Flash
RAM。
Code存储器:
用来存放8051要运行的程序的地方。限制为64K,有多种类型与大小:可以是片内的,也可以是外部ROM或EPROM。另外Flash
RAM也可以存储程序(流行的方法)。除非有特别的编译器支持,8051最大只能支持64k代码空间。
外部RAM:
速度较内部存储器要低。虽然牺牲了灵活性与速度,但得到了量。内部RAM限制在128字节或256字节,但外部RAM可扩展至64K。
片内存储器:
实际有两种类型:内部RAM和特殊功能寄存器—SFR:
(1)前面128字节是内部RAM,芯片复位后都会清空的。00h-07h的前8个字节为“寄存器组0”,通过操作SFR,程序可以选择使用寄存器组1,2,3。
(2)位存储地址为20h-2Fh。
(3)30h-7Fh的内部RAM可用作频繁访高速的用户变量。这个区域也被用于操作系统堆栈的存储区域。这样其实8051的堆栈空间是很受限制的,因为还要放一些用户变量。
(4)寄存器组(Register Banks):
每组由R0, R1, R2, R3, R4, R5, R6,
R7组成,这些寄存器用于操作变量和转移数据。8051初启动时,默认使用寄存器组0,可以通过程序改变使用的寄存器组。寄存器组非常灵活,对于中断的处理非常有用,当程序中确保其他寄存器不使用时,可将其用作用户内部RAM。
(5)位存储:128位可位寻址空间。如使用SETB和CLR可以访问。位存储只是内部RAM的一个子集,任何内部RAM的操作也适用于位存储空间的。
(6)特殊功能寄存器:用于特殊功能的操作,IO口,串口,定时器等。
相关文章推荐
- [Debug--JLink]ARM调试器J-Link使用的一点问题的记录
- [DAQmx]应用程序设计中选择连接物理通道时的一个奇怪问题
- [STDIO.h]51内核的单片机编程中STD…
- [DAQmx]DAQmx中的控制的学习
- python抓价记(3)
- continue用法
- mongodb redis memcached的对比
- leetcode--Binary Tree Maximum Path Sum
- 【代码片段】一列布局
- [DAQmx]定时与触发的学习
- [DAQmx]任务及通道学习笔记
- [Package]PCB设计中元器件图与封装设计的一些事项_不断更新
- [Embeded--SW_分层]嵌入式C代码分层
- [排行榜]IT牛人排行榜
- [C8051F320]完全在Keil下进行C8051…
- [C8051F320]Silicon Laboratories …
- [Conponent]PCB设计中一些元器件的选择与使用事项_不断更新
- [Optimize]让C更高效的10种方法
- [ISE]PlanAhead中添加嵌入式资源不自动跳转至XPS的小问题
- [Android--Tool]开发环境(ADT)安装与配置