91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

微軟公司宣布不再支持你正在使用的 IE瀏覽器,這會嚴重影響瀏覽網頁,請使用微軟最新的Edge瀏覽器
廠商專區
產品/技術
應用分類

電源小知識 單片機中空間和堆棧的意義

2016-05-16 09:47 來源:電源網綜合 編輯:鈴鐺

關于單片機的知識,體積龐大且結構復雜。初學者很容易陷入困境,最終失去對單片機的興趣。因此在學習單片機時一定要對基礎知識進行特別的鞏固。在本文中,小編將為大家介紹單片機地址空間以及堆棧的相關知識,下面大家就隨小編來一起看一看吧。

Data:可尋址片內ram0x00-0x7f

Bdata:可位尋址片內ram

Idata:可尋址片內ram,允許訪問全部內部ram0x00-0xff

Padata:分頁尋址訪問片外ram

Xdata:可尋址片外ram0x0000-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中再執行。

本文針對單片機的地址和堆棧分別進行了介紹。給出了一些必須進行理解的名詞定義,并在文章最后給出了一種單片機啟動時為何不需要將代碼從ROM搬移到RAM的解釋。希望大家在閱讀過本文之后能夠有所收獲。

標簽: 單片機

聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。

微信關注
技術專題 更多>>
技術專題之EMC
技術專題之PCB

頭條推薦

電子行業原創技術內容推薦
客服熱線
服務時間:周一至周五9:00-18:00
微信關注
獲取一手干貨分享
免費技術研討會
editor@netbroad.com
400-003-2006
主站蜘蛛池模板: 儋州市| 子洲县| 如皋市| 黔南| 西安市| 定远县| 泸西县| 饶平县| 梨树县| 永靖县| 新宁县| 郴州市| 溆浦县| 隆安县| 衢州市| 合肥市| 宁津县| 白山市| 新化县| 英吉沙县| 顺义区| 衡阳市| 苗栗市| 东源县| 聊城市| 通化市| 北京市| 齐河县| 定远县| 沭阳县| 阿拉善左旗| 蛟河市| 额济纳旗| 秦皇岛市| 上杭县| 兴山县| 弥勒县| 华蓥市| 河北区| 喜德县| 新源县|