8051单片机存储器地址分配

发布者:JoyfulHearted最新更新时间:2015-12-30 来源: eefocus关键字:单片机  存储器  地址分配 手机看文章 扫描二维码
随时随地手机看文章

一、程序存储器空间

MCS-51单片机具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。

1、对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的使能端端必须接地。强制CPU从外部程序存储器读取程序。

2、对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。

    8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:

    其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。

    另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:

     0003H—000AH  外部中断0中断地址区。

     000BH—0012H  定时/计数器0中断地址区。

     0013H—001AH  外部中断1中断地址区。

     001BH—0022H  定时/计数器1中断地址区。

     0023H—002AH  串行中断地址区。

    可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。

二、数据存储器
    数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。

MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。 
   1、 8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。

    在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。
  
     内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。 

表1  RAM位寻址区地址表 
单元地址 MSB        位地址        LSB 
2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 
2EH 77H 76H 75H 74H 73H 72H 71H 70H 
2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H 
2CH 67H 66H 65H 64H 63H 62H 61H 60H 
2BH 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H 
2AH 57H 56H 55H 54H 53H 52H 51H 50H 
29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 
28H 47H 46H 45H 44H 43H 42H 41H 40H 
27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 
26H 37H 36H 35H 34H 33H 32H 31H 30H 
25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 
24H 27H 26H 25H 24H 23H 22H 21H 20H 
23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 
22H 17H 16H 15H 14H 13H 12H 11H 10H 
21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 
20H 07H 06H 05H 04H 03H 02H 01H 00H 

--------------------------------------------------------------------------------
      特殊功能寄存器
    特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。

    MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。
 
    程序计数器PC(program Counter)
    程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。

    累加器ACC(Accumulator)
    累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。

表2   特殊功能寄存器 
标识符号 地址 寄存器名称 
ACC 0E0H 累加器 
B 0F0H B寄存器 
PSW 0D0H 程序状态字 
SP 81H 堆栈指针 
DPTR 82H、83H 数据指针(16位)含DPL和DPH 
IE 0A8H 中断允许控制寄存器 
IP 0B8H 中断优先控制寄存器 
P0 80H I/O口0寄存器 
P1 90H I/O口1寄存器 
P2 0A0H I/O口2寄存器 
P3 0B0H I/O口3寄存器 
PCON 87H 电源控制及波特率选择寄存器 
SCON 98H 串行口控制寄存器 
SBUF 99H 串行数据缓冲寄存器 
TCON 88H 定时控制寄存器 
TMOD 89H 定时器方式选择寄存器 
TL0 8AH 定时器0低8位 
TH0 8CH 定时器0高8位 
TL1 8BH 定时器1低8位 
TH1 8DH 定时器1高8位

关键字:单片机  存储器  地址分配 引用地址:8051单片机存储器地址分配

上一篇:89C52串口通信
下一篇:51单片机专业名词解释

推荐阅读最新更新时间:2024-03-16 14:42

基于单片机+pt100热敏电阻的体温计
采用热敏电阻pt100设计温度传感电路,温度传感电路通过放大电路进行放大后加载到A/D转换模块(ADC0804),以AT89C51单片机为主控制端,外接晶振电路满足各模块时序,最终通过7段数码管进行温度显示 单片机源程序如下: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define ad0_7 P1 //AD数据口 sbit cs=P2^4; //片选信号,低电平有效,控制芯片的启动和结果读取 sbit rd=P2^7; //读数据控制
[单片机]
基于<font color='red'>单片机</font>+pt100热敏电阻的体温计
快速学Arm(31)--存储器寻址(4)
为了与将来的器件兼容,整个Boot ROM都被映射到片内存储器空间的顶端.在这种方式下,使用较大或较小的片内Flash块都不会影响到Boot ROM的地址.而Boot ROM的最起始的字节就是异常中断向量表.这样就可以理解其实向量表的重映射是由于Boot ROM的重映射造成的,他们是一体的. 如果代码试图访问一个保留区域地址或者未分配区域地址,ARM将产生预取指中止或者数据中止异常.我们从前面的图中可以观察到,其实ARM的地址分配并不是连续的,每种存储器之间有些地址是未被分配的,如果我们的代码中试图访问这些地址,就会产生这样的异常.
[单片机]
快速学Arm(31)--<font color='red'>存储器</font>寻址(4)
16位MCU ( 微控制器 ) 市场受到挑战?
新品发布引发的思考 日前,ST发布了其新的32位系列Cortex-M3内核微控制器——STM 32。通过以16位产品的价格得到比16位产品大幅提升的性能,来争取更多的16位用户。 “直到现在,16位和32位的设计工程师还要面对很多困难的选择,例如,他们必须在性能、成本、功耗等因素之间做出折衷和取舍,决定使用业界标准还是使用某一公司独有的平台,”ST微控制器产品部总经理Jim Nicholas表示,“通过消除这些需要折衷的因素,STM32走在了融合16位和32位微控制器市场的前列。” 那么,使得我们不得不思考,如果新的MCU可以提供较低的价格、功耗,复杂度以及较高的集成度,那么16位MCU是否因为需要
[焦点新闻]
AVR单片机在LED遥控照明中的应用
摘要:基于AVR单片机设计了一种LED遥控照明系统,给出了红外接收模块和LED驱动模块的设计方法,以及软件程序流程。经测试,该方案可行,具有一定的应用价值。 关键词:PWM;LED照明;AVR 引言 LED照明已经进入了家庭用户,与传统的照明设备(如白炽灯、荧光灯)相比,具有光源单色纯度高、色彩多样、效率高、光强度可调等优点。针对传统照明亮度不易调节、开关位置固定的问题,本文基于AVR单片机设计了一种LED遥控照明系统,提出了LED照明灯的驱动与亮度调节的方法。 1 LED照明灯控制系统原理 系统原理图如图1所示。当红外接收器接收到红外遥控信号时,通过外部中断将AVR单片机从休眠模式中唤醒;AVR单片机开始解析红外信号
[单片机]
AVR<font color='red'>单片机</font>在LED遥控照明中的应用
【51单片机】学习总结
1. Ctrl+S为保存当前文件,如图 打开了两个文件,可以看到有个文件是带星号且有个红叉的,有个红叉说明它为当前打开的文件,也就是正在编辑的文件。当按下Ctrl+S时只保存了当前文件。另一个文件没有保存,当你的电脑意外断电或死机时,如果你在那之前按了Ctrl+S那么可以挽回点损失,可是另一个文件的信息可能就丢失了。所以推荐按F7(对所以文件进行编译,并且保存),这样就可以在编译的同时将所以文件保存一次。所以在真正做工程的时候就要学会定期按F7,不是说一定要程序编写完整后才按F7。 2. 默认情况下头文件和源文件应该放在同一个文件目录下,如果将头文件放在一个独立的文件夹中如名为include的文件夹,此时就读取不出。
[单片机]
存储器即将实现国产化,三星独大的局面可望被中国打破
  在春节长假期,国人欢庆佳节的时候, 长江存储 的工厂依然在加紧建设,以确保今年三季度投产NAND flash,随着 长江存储 投产,中国可望打破当前三星在NAND flash行业独大的局面。下面就随手机便携小编一起来了解一下相关内容吧。   存储器即将实现国产化,三星独大的局面可望被中国打破   据介绍 长江存储 正在建设的NAND flash 存储器 工厂包括了三座全球洁净面积最大NAND flash生产厂房,投资额高达240亿美元,春节期间正在进行洁净室装修和空调、消防等系统安装,计划在4月份搬入机台设备,三季度开始正式投产。   当前全球NAND flash市场五大巨头分别是三星、东芝、西部数据、美光、SK海力士,
[手机便携]
51单片机的软件复位
请先看最下面的程序 这是一款针对Keil软件的,被称作 纯软件 复位的程序。所谓 纯软件 是指它没有直接操作硬件以及寄存器。 事实上如果不懂硬件和汇编也不可能有这段C程序,不管怎么样,我们还是来看一看它的真面目: 我们知道51 单片机 可以把数据放在程序存储器里面,也就是程序和数据没有本质区别,都是一些特定的数据。如果我们将一段程序,以数组数据的形式存储在程序存储器里面,那么是不是也可以执行呢?答案是肯定的。 - 言归正传,先来看看这个数组数据 0xe4,0xc0,0xe0,0xc0,0xe0,0x22,中Keil的汇编窗口看出,它其实是四条汇编语句: CLR A ;编
[单片机]
基于单片机的智能微型五维力/力矩传感器的研究
    摘要: 以研制的机器人多指灵巧手微型五维指尖力/力矩传感器为基础,基于单片机AT89C52设计了高性能的数据采集系统和数据处理系统,实现了与主计算机的RS422串行通讯,从而构成了一套完整的智能化的五维力/力矩测量系统。     关键词: 传感器  单片机  数据采集  串行通讯     多维力传感器的发展已经有几十年的历史。以机器人的腕力传感器为主要应用背景,国内外的很多公司制造了多种规格的多维力传感器 。为了满足医疗仪器、航空航天等领域对于微型多维力传感器的需求,以研制的机器人多指灵巧手微型五维指尖力/力矩传感器为基础,研制了一种基于单片机AT89C52的智能微型五维力传感器测量系统。   
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved