存儲器是計算機(jī)的重要硬件之一,單片機(jī)存儲器結(jié)構(gòu)有兩種類型:一種是程序存儲器和數(shù)據(jù)存儲器統(tǒng)一編址,屬于普林斯頓結(jié)構(gòu),另一種是程序存儲器和數(shù)據(jù)存儲器分開編址的哈佛結(jié)構(gòu)。 mcs-51 采用的是哈佛結(jié)構(gòu)。
一、存儲器具有的特點(diǎn)
程序存儲器和數(shù)據(jù)存儲器截然分開,各有自己的尋址系統(tǒng),控制信號和特定的功能。程序存儲器只存放程序和始終要保留的常數(shù),數(shù)據(jù)存儲器通常用來存放程序運(yùn)行中所需要的大量數(shù)據(jù)。
單片機(jī)中與存儲器有關(guān)的名稱有:程序存儲器和數(shù)據(jù)存儲器、內(nèi)部存儲器和外部存儲器、字節(jié)地址和位地址。存儲器有一定的容量,常把一個 8 位二進(jìn)制數(shù)作基本單位,叫作字節(jié)。存儲器有很多字節(jié)單元,也用二進(jìn)制數(shù)來標(biāo)識,叫地址。這些存儲器空間的地址多數(shù)從零開始編址。 8 位地址 00h ~ ffh ,十六位地址 0000h ~ ffffh 。由于每一位十六進(jìn)制數(shù)可直接換成四位二進(jìn)制數(shù)(如 0h—0000b、 9h—1001b、 fh—1111b ,其中 h 代表十六進(jìn)制數(shù)標(biāo)識符, b 代表二進(jìn)制數(shù)標(biāo)識符),以后我們也把兩位十六進(jìn)制數(shù)說成是 8 位二進(jìn)制數(shù)
工作寄存器以 ram 形式組成, i/o 接口也采用存儲器方式工作。工作寄存器、 i/o 口鎖存器和數(shù)據(jù)存儲器 ram 在單片機(jī)中統(tǒng)一編址。
具有一個功能很強(qiáng)的布爾處理器,可尋址位空間有 256 位。
二、mcs-51 具有的存儲器編址空間
mcs-51 單片機(jī)寄儲器結(jié)構(gòu)如圖所示。有六個編址空間,有四個物理存儲器空間:
① 即由 pc 作地址指針的片內(nèi) 4k (0000h-0fffh)程序存儲器。
② 片外 4k+60k(0000h-ffffh) 程序存儲器。
③ 由數(shù)據(jù)指針作地址的片外 64k 數(shù)據(jù)存儲器。
④ 片內(nèi) 8 位地址的 128 字節(jié) ram ( 00h-7fh )和特殊功能寄存器 (80h-ffh) 。
程序存儲器,片內(nèi) 4k 程序存儲器空間,其地址為 0000h ~ 0fffh ,外部 eprom 也從 0000h 開始編址。在地址 0000h ~ 0fffh 區(qū)間,地址有重疊,由 ea 引腳信號來控制內(nèi)、外程序存儲器的選擇。
ea =0 時,不管 pc 值的大小, cpu 總是訪問外部程序存儲器。對于 8031 芯片,其內(nèi)部沒有程序存儲器,必然外接 eprom ,所以 ea 必須接地,即 ea =0 時。外部程序存儲器從 0000h 開始編址,尋址范圍 64k 。當(dāng) ea =1 時,先執(zhí)行內(nèi)部 4k 程序,滿 4k 后接著執(zhí)行外部程序。
程序存儲器以 16 位的程序計數(shù)器 pc 作為地址指針可尋址 64k 字節(jié)空間范圍, psen 作為程序存儲器的讀選通信號。
程序存儲器也存放程序所需要的常數(shù)。單片機(jī)以指令形式的不同來區(qū)分是訪問程序存儲器,還是訪問數(shù)據(jù)存儲器,凡是從程序存儲器的常數(shù)表中取數(shù)據(jù)時,都要用查表指令 movc 形式。