单片机地址空间,堆栈理解
data –可寻址片内ram 0x00-0x7f
bdata—可位寻址片内ram
idata—可寻址片内ram,允许访问全部内部ram 0x00-0xff
padata—分页寻址访问片外ram
xdata—可寻址片外ram 0x0000- 0xffff
code--程序存储区单片机存储器分ROM跟RAM之分,RAM存放中间结果,数据和经常变换的代码,ROM存放code。51单片机采用的是哈弗结构,即数据跟代码拥有单独的地址空间。存储器可以分为程序存储器(eerom,flash之类),内部数据存储器(ram),SFR,位地址空间和外部数据存储器。内部数据存储器在物理上分为内部SRAM和特殊功能寄存器,而内部分为低(0x00-0x7f)和(0x80-0xff),高128字节地址重复,需要不同的访问方式。SFR用直接寻址方式,SRAM需要间接。这里SFR是寄存器,硬件上是中央处理器的内部组成部分,访问速度很快。在低128B的SRAM,0x00-0x1f是4个通用工作寄存器,每组有R0-R7。使用哪一组,可以通过PSW中的RS1,RS0来配置。位寻址是在0x20-0x2f
程序内存可以分为几个区,栈区(stack),堆区(Heap),全局区(static),文字常亮区,程序代码区。程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。栈是从高到低分配,堆是从低到高分配。我们一般说的堆栈指的栈。堆栈又分硬堆栈和软堆栈,硬堆栈即SP,从片内RAM的顶部向下生长。软堆栈在硬堆栈跟全局变量区之间的空间,C51函数调用通过R0-R7和栈来实现。
为什么单片机启动时,不需要用bootloader将代码从ROM搬移到RAM,而ARM则需要。这里我们可以先看看单片机程序执行的过程,单片机执行分三个步骤,取执行---分析指令----执行指令。取指令的任务是:根据PC的值从程序存储器读出指令,送到指令寄存器。然后分析执行执行。这样单片机就从内部程序存储器去代码指令,从RAM存取相关数据。要知道RAM取数的速度是远高于ROM的,但是单片机因为本身运行频率不高,所以从ROM取指令慢并不影响。而ARM不同,cpu运行的频率高,远大于从ROM读写的速度,所以一般有操作系统,都需要将代码部分拷贝到RAM中再执行。
51单片机学习笔记(51单片机的地址空间)一
MCS-51单片机在物理结构上有四个存储空间
1,片内程序存储器(片内ROM) 类似电脑上的硬盘(只不过很小)
2,片外程序存储器(片外ROM)
3,片内数据存储器(片内RAM)
4,片外数据存储器(片外RAM)
在逻辑上(用户的角度上)MSC-51单片机有三个存储空间
1,片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC)
2,256B的片内数据存储器(片内RAM)地址空间 (MOV) :因为MSC-51单片机是8位的所以能够访问的最大地址空间为2^8次方 即256个字节
3,以及64K片外数据存储器(片外RAM)地址空间 (MOVX)
MSC-51单片机内部数据存储区划分 (以下内容部分来自网络,有自己的理解,可能有错,还望指出)
自己理解:因为MSC-51单片机是8位的,所以能够访问的空间地址编号只能有256个,即0~255,十六进制:0x00 ~0xFF。
地址空间划分:
1:0x00 ~ 0x1F (32个字节)
工作寄存器有4组,每组都是8个工作寄存器R0~R7,通过PSW程序状态字寄存器中的RS1,RS0两位选择使用哪一组,如果不选,默认选择第0组。
RS1 RS0 组合为 0 0时,选中第0组工作寄存器,RO~R7 地址为00H ~07H.
RS1 RS0 组合为 0 1时,选中第1组工作寄存器, RO~R7 地址为08H ~0FH.
RS1 RS0 组合为 1 0时,选中第2组工作寄存器, RO~R7 地址为10H ~17H.
RS1 RS0 组合为 1 1时,选中第3组工作寄存器, RO~R7 地址为18H ~1FH.
当使用R0-R7来表示操作数时,属于寄存器寻址方式
相关问答
什么是单片机地址 ?H表示该数是十六进制,B表示二进制;O表示八进制。比如写100和00000100一样,都是100,写0000H可能是为了在程序中强调这个是个16位的数,跟其他的数字做...H...
【举例说明 单片机 位 地址 的四种表示方式】作业帮[最佳回答]表示位地址是在汇编语言中才用的,而在keilc中是不用的.举例说明吧,如寄存器PSW中的8个位是可位寻址的,PSW的单元地址是D0H,其中的进位标志位Cy,可表...
什么是 通讯 地址单片机 ?在一块线路板上的单片机都是连接在共用主线上的,为了在数据传输的时候明确发送和接收方,人为的为芯片标定一个号码,这是一块板上的地址概念,就单一一片单片...
单片机地址什么 0000H之类的H 是什么 意思?H是十六进制的标识的意思,地址一般采用十六进制的表达方式H是十六进制的标识的意思,地址一般采用十六进制的表达方式
触摸屏控制 单片机 时的 地址 怎么确定?触摸屏控制单片机时,需要确定相应的通信协议和地址。一般而言,触摸屏与单片机的通信地址由协议决定。比如,利用Modbus通信协议进行通信时,触摸屏与单片机的地...
单片机地址 后的h 是什么 意思?H代表着HEX,hexdecimal,也就是16进制的意思也就是说30是16进制的30,也就是3*16+0,及十进制的48了。但在单片机或者微机原理中,地址一般都是以十六进...
8051 单片机 的位 地址 空间共分几个区域?8051单片机的位地址空间分为两个区域,第一个是20H~2FH,共16个字节,可位寻址128bit;第二个空间分布在sfr特殊功能寄存器区,凡是地址能被8整除的特殊功能寄存...
单片机 原理及利用的一道题内部RAM中,位 地址 为30H,90H的位,该...[最佳回答]51单片机,30H所在的字节地址26H,是26H的起始第一位.90H所在地位地址是32H,是32H的起始第一位.哈哈哈.记得好评啊.51单片机,30H所在的字节地址26H,...
51 单片机 逻辑 地址 空间区别?MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051...
位 地址 7CH与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置?位地址7CH与字节地址7CH在RAM中的位置不同,寻址方式也不同。位地址7CH在内部RAM区2FH中,可以位寻址;字节地址7CH在用户区中,只能按字节寻址。位地址7CH与字节...