新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機存儲器結構介紹(1)

        51單片機存儲器結構介紹(1)

        作者: 時間:2016-11-22 來源:網絡 收藏
        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溢出中斷入口

        內部數據存儲器RAM
        物理上分為兩大區:00H ~ 7FH即128B內RAM 和 SFR區。
        作用:作數據緩沖器用。
        下圖是8051單片機存儲器的空間結構圖



        程序存儲器
        一個微處理器能夠聰明地執行某種任務,除了它們強大的硬件外,還需要它們運行的軟件,其實微處理器并不聰明,它們只是完全按照人們預先編寫的程序而執行之。那么設計人員編寫的程序就存放在微處理器的程序存儲器中,俗稱只讀程序存儲器(ROM)。程序相當于給微處理器處理問題的一系列命令。其實程序和數據一樣,都是由機器碼組成的代碼串。只是程序代碼則存放于程序存儲器中。
        MCS-51具有64kB程序存儲器尋址空間,它是用于存放用戶程序、數據和表格等信息。對于內部無ROM的8031單片機,它的程序存儲器必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程序存儲器讀取程序。對于內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程序存儲中讀取程序,當PC值超過內部ROM的容量時,才會轉向外部的程序存儲器讀取程序。
        當#EA=1時,程序從片內ROM開始執行,當PC值超過片內ROM容量時會自動轉向外部ROM空間。
        當#EA=0時,程序從外部存儲器開始執行,例如前面提到的片內無ROM的8031單片機,在實際應用中就要把8031的引腳接為低電平。
        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個字節單元,用8個字節來存放一個中斷服務程序顯然是不可能的。因此以上地址單元不能用于存放程序的其他內容,只能存放中斷服務程序。但是通常情況下,我們是在中斷響應的地址區安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間去執行,這樣中斷響應后,CPU讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程序。
        下圖是ROM的地址分配圖:


        從上圖中大家可以看到,0000H-0002H,只有三個存儲單元,3個存儲單元在我們的程序存放時是存放不了實際意義的程序的,通常我們在實際編寫程序時是在這里安排一條ORG指令,通過ORG指令跳轉到從0033H開始的用戶ROM區域,再來安排我們的程序語言。從0033開始的用戶ROM區域用戶可以通過ORG指令任意安排,但在應用中應注意,不要超過了實際的存儲空間,不然程序就會找不到。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 广昌县| 云阳县| 肇东市| 桐城市| 新安县| 南安市| 迭部县| 廊坊市| 徐汇区| 遂昌县| 孟州市| 犍为县| 江永县| 平舆县| 寿光市| 虞城县| 邓州市| 黄山市| 镇原县| 谷城县| 吴桥县| 神木县| 新巴尔虎右旗| 洪雅县| 上犹县| 望都县| 老河口市| 香港 | 广南县| 林州市| 娱乐| 郴州市| 大理市| 本溪市| 铅山县| 台前县| 美姑县| 越西县| 都匀市| 田阳县| 桂东县|