久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機C語言學習筆記3: 存儲器結構

51單片機C語言學習筆記3: 存儲器結構

作者: 時間:2016-11-23 來源:網絡 收藏
MCS-51單片機在物理結構上有四個存儲空間:

1、片內程序存儲器
2、片外程序存儲器
3、片內數據存儲器
4、片外數據存儲器



但在邏輯上,即從用戶的角度上,8051單片機有三個存儲空間:

1、片內外統一編址的64K的程序存儲器地址空間(MOVC)
2、256B的片內數據存儲器的地址空間(MOV)
3、以及64K片外數據存儲器的地址空間(MOVX)
在訪問三個不同的邏輯空間時,應采用不同形式的指令(具體我們在后面的指令系統學習時將會講解),以產生不同的存儲器空間的選通信號。



程序內存ROM

尋址范圍:0000H ~ FFFFH容量64KB
EA = 1,尋址內部ROM;EA = 0,尋址外部ROM
地址長度:16位
作用:存放程序及程序運行時所需的常數。
七個具有特殊含義的單元是:
0000H ——系統復位,PC指向此處;
0003H ——外部中斷0入口
000BH —— T0溢出中斷入口
0013H ——外中斷1入口
001BH —— T1溢出中斷入口
0023H ——串口中斷入口
002BH —— T2溢出中斷入口











注意:

①但要注意的是8051內部數據存儲器是256byte(字節)。訪問低128B可以直接尋址也可以間接尋址,訪問8052內部數據存儲器高128B時只能間接尋址(MOV @R0、@R1、DPTR),訪問特殊功能寄存器區SFR時只能直接尋址(MOV A,80H)。











②外部RAM是通過單片機外部總線連接的,有可能在片內。如STC89C58RD+有1280B(字節)位于片內的外部SRAM



再可以通過這個圖了解51單片機的存儲器結構









變量定義及其存儲模式

C語言中變量要“先聲明后使用”。

變量定義格式:

[存儲種類]數據類型[存儲器類型]變量名表;

存儲種類:自動(auto)、外部(extern)、靜態(static)、寄存器(register)

存儲器類型:

data可直接尋址的片內數據存儲器RAM(128字節)。1個或2個指令周期,訪問速度較快。

bdata可位尋址的片內數據存儲器RAM(16字節)。

idata間接訪問的片內數據存儲器RAM(256字節)。

pdata分頁尋址的片外存儲器RAM(256字節)——不常用。

xdata片外數據存儲器RAM(64k字節)至少3個指令周期。

code程序存儲器ROM(64k字節)









注意:訪問片內數據存儲器(data,bdata,idata)比訪問片外數據存儲器(xdata,pdata)相對要快一些,因此可將經常使用的變量至于片內數據儲存器,而將規模較大的,或不常使用的數據至于片外數據儲存器中。





如果在變量定義時略去存儲類型標識符,編譯器會自動選擇默認的存儲類型。編譯時使用的存儲器模式small、compact或large來規定默認存儲器類型。



SMALL:參數及局部變量放入片內數據存儲器(data);

COMPACT:參數及局部變量放入分頁片外數據存儲器(pdata);

LARGE:參數及局部變量放入片外數據存儲器(xdata);









Keil中Option for Target ‘Target1’選項



51單片機外部程序存儲器(ROM)和外部數據存儲器(RAM)的總線擴展電路圖









參考資料:

1)8051單片機的存儲器結構

group.ednchina.com/377/3646.aspx

2)Keil C51 Compiler Basics - The 8051 Architecture

http://www.esacademy.com/automation/docs/c51primer/c02.htm

3)單片機C語言日記九——登山的人ednchina blog

http://blog.ednchina.com/klyzh2003/190102/message.aspx

4)在51系列中data,idata,xdata,pdata的區別

http://blog.ednchina.com/liyanesd/5800/message.aspx


評論


技術專區

關閉