<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機地址空間,堆棧理解

單片機地址空間,堆棧理解

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
data –可尋址片內ram 0x00-0x7f


本文引用地址:http://dyxdggzs.com/article/201611/319875.htm

bdata—可位尋址片內ram


idata—可尋址片內ram,允許訪(fǎng)問(wèn)全部?jì)炔縭am 0x00-0xff

padata—分頁(yè)尋址訪(fǎng)問(wèn)片外ram

xdata—可尋址片外ram 0x0000- 0xffff

code--程序存儲區單片機存儲器分ROM跟RAM之分,RAM存放中間結果,數據和經(jīng)常變換的代碼,ROM存放code。51單片機采用的是哈弗結構,即數據跟代碼擁有單獨的地址空間。存儲器可以分為程序存儲器(eerom,flash之類(lèi)),內部數據存儲器(ram),SFR,位地址空間和外部數據存儲器。內部數據存儲器在物理上分為內部SRAM和特殊功能寄存器,而內部分為低(0x00-0x7f)和(0x80-0xff),高128字節地址重復,需要不同的訪(fǎng)問(wèn)方式。SFR用直接尋址方式,SRAM需要間接。這里SFR是寄存器,硬件上是中央處理器的內部組成部分,訪(fǎng)問(wèn)速度很快。在低128B的SRAM,0x00-0x1f是4個(gè)通用工作寄存器,每組有R0-R7。使用哪一組,可以通過(guò)PSW中的RS1,RS0來(lái)配置。位尋址是在0x20-0x2f


程序內存可以分為幾個(gè)區,棧區(stack),堆區(Heap),全局區(static),文字常亮區,程序代碼區。程序編譯之后,全局變量,靜態(tài)變量已經(jīng)分配好內存空間,在函數運行時(shí),程序需要為局部變量分配??臻g,當中斷來(lái)時(shí),也需要將函數指針入棧,保護現場(chǎng),以便于中斷處理完之后再回到之前執行的函數。棧是從高到低分配,堆是從低到高分配。我們一般說(shuō)的堆棧指的棧。堆棧又分硬堆棧和軟堆棧,硬堆棧即SP,從片內RAM的頂部向下生長(cháng)。軟堆棧在硬堆棧跟全局變量區之間的空間,C51函數調用通過(guò)R0-R7和棧來(lái)實(shí)現。

為什么單片機啟動(dòng)時(shí),不需要用bootloader將代碼從ROM搬移到RAM,而ARM則需要。這里我們可以先看看單片機程序執行的過(guò)程,單片機執行分三個(gè)步驟,取執行---分析指令----執行指令。取指令的任務(wù)是:根據PC的值從程序存儲器讀出指令,送到指令寄存器。然后分析執行執行。這樣單片機就從內部程序存儲器去代碼指令,從RAM存取相關(guān)數據。要知道RAM取數的速度是遠高于ROM的,但是單片機因為本身運行頻率不高,所以從ROM取指令慢并不影響。而ARM不同,cpu運行的頻率高,遠大于從ROM讀寫(xiě)的速度,所以一般有操作系統,都需要將代碼部分拷貝到RAM中再執行。



關(guān)鍵詞: 單片機地址空間堆

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>