單片機的存儲器、寄存器
單片機的存儲器有程序存儲器ROM與數據存儲器RAM兩種。 這兩種存儲器在使用上是嚴格區(qū)分的,不得混用。 程序存儲器存放程序指令,以及常數,表格等;而數據存儲器則存放緩沖數據。
MCS-51單片機存儲器的結構共有3部分:一是程序存儲器二是內部數據存儲器 三是外部數據存儲器MCS-51單片機的存儲器可分為5類:程序存儲器、內部數據存儲器、特殊功能寄存器、位地址空間、外部數據存儲器
程序存儲器
程序是控制計算機動作的一系列命令,單片機只認識由“0”和“1”代碼構成的機器指令。如前述用助記符編寫的命令MOV A,#20H,換成機器認識的代碼74H、20H:(寫成二進制就是01110100B和00100000B)。在單片機處理問題之前必須事先將編好的程序、表格、常數匯編成機器代碼后存入單片機的存儲器中,該存儲器稱為程序存儲器。程序存儲器可以放在片內或片外,亦可片內片外同時設置。由于PC程序計數器為16位,使得程序存儲器可用16位二進制地址,因此,內外存儲器的地址最大可從0000H到FFFFH。8051內部有4k字節(jié)的ROM,就占用了由0000H~0FFFH的最低4k個字節(jié),這時片外擴充的程序存儲器地址編號應由1000H開始,如果將8051當做8031使用,不想利用片內4kROM,全用片外存儲器,則地址編號仍可由0000H開始。不過,這時應使8051的第{31}腳(即EA腳)保持低電平。當EA為高電平時,用戶在0000H至0FFFH范圍內使用內部ROM,大于0FFFH后,單片機CPU自動訪問外部程序存儲器。
數據存儲器
單片機的數據存儲器由讀寫存儲器RAM組成。其最大容量可擴展到64k,用于存儲實時輸入的數據。8051內部有256個單元的內部數據存儲器,其中00H~7FH為內部隨機存儲器RAM,80H~FFH為專用寄存器區(qū)。實際使用時應首先充分利用內部存儲器,從使用角度講,搞清內部數據存儲器的結構和地址分配是十分重要的。因為將來在學習指令系統(tǒng)和程序設計時會經常用到它們。8051內部數據存儲器地址由00H至FFH共有256個字節(jié)的地址空間,該空間被分為兩部分,其中內部數據RAM的地址為00H~7FH(即0~127)。而用做特殊功能寄存器的地址為80H~FFH。在此256個字節(jié)中,還開辟有一個所謂“位地址”區(qū),該區(qū)域內不但可按字節(jié)尋址,還可按“位(bit)”尋址。對于那些需要進行位操作的數據,可以存放到這個區(qū)域。從00H到1FH安排了四組工作寄存器,每組占用8個RAM字節(jié),記為R0~R7。究竟選用那一組寄存器,由前述標志寄存器中的RS1和RS0來選用。在這兩位上放入不同的二進制數,即可選用不同的寄存器組。
特殊功能寄存器
特殊功能寄存器(SFR)的地址范圍為80H~FFH。在MCS-51中,除程序計數器PC和四個工作寄存器區(qū)外,其余21個特殊功能寄存器都在這SFR塊中。其中5個是雙字節(jié)寄存器,它們共占用了26個字節(jié)。各特殊功能寄存器的符號和地址見附表2。其中帶*號的可位尋址。特殊功能寄存器反映了8051的狀態(tài),實際上是8051的狀態(tài)字及控制字寄存器。用于CPU PSW便是典型一例。這些特殊功能寄存器大體上分為兩類,一類與芯片的引腳有關,另一類作片內功能的控制用。與芯片引腳有關的特殊功能寄存器是P0~P3,它們實際上是4個八位鎖存器(每個I/O口一個),每個鎖存器附加有相應的輸出驅動器和輸入緩沖器就構成了一個并行口。MCS-51共有P0~P3四個這樣的并行口,可提供32根I/O線,每根線都是雙向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、標志寄存器PSW、數據指針DPTR等的功能前已提及,而另一些寄存器的功能在后面有關部分再作進一步介紹。
地址空間
要保證多個應用程序同時處于內存中并且不互相影響,則需要解決兩個問題:保護和重定位。我們來看一個原始的對前者的解決辦法,它曾被用在IBM 360上:給內存塊標記上一個保護鍵,并且比較執(zhí)行進程的鍵和其訪問的每個內存字的保護鍵。然而,這種方法本身并沒有解決后一個問題,雖然這個問題可以通過在程序被裝載時重定位程序來解決,但這是一個緩慢且復雜的解決方法。
一個更好的辦法是創(chuàng)造一個新的內存抽象:地址空間。就像進程的概念創(chuàng)造了一類抽象的CPU以運行程序一樣,地址空間為程序創(chuàng)造了一種抽象的內存。地址空間是一個進程可用于尋址內存的一套地址集合。每個進程都有一個自己的地址空間,并且這個地址空間獨立于其他進程的地址空間(除了在一些特殊情況下進程需要共享它們的地址空間外)。
地址空間的概念非常通用,并且在很多場合中出現(xiàn)。比如電話號碼,在美國和很多其他國家,一個本地電話號碼通常是一個7位的數字。因此,電話號碼的地址空間是從0 000 000到9 999 999,雖然一些號碼并沒有被使用,比如以000開頭的號碼。隨著手機、調制解調器和傳真機數量的增長,這個空間變得越來越不夠用了,從而導致需要使用更多位數的號碼。Pentium的I/O端口的地址空間從0到16 383。IPv4的地址是32位的數字,因此它們的地址空間從0到232-1(也有一些保留數字)。
地址空間可以不是數字的。一套“.com”的互聯(lián)網域名也是地址空間。這個地址空間是由所有包含2~63個字符并且后面跟著“.com”的字符串組成的,組成這些字符串的字符可以是字母、數字和連字符。到現(xiàn)在你應該已經明白地址空間的概念了。它是很簡單的。
外部存儲器
軟盤、硬盤、光盤、U盤都是外部存儲器。 從馮.諾依曼的存儲程序工作原理及計算機的組成來說,計算機分為運算器、控制器、存儲器和輸入/輸出設備,這里的存儲器就是指內存,而硬盤屬于輸入/輸出設備。 CPU運算所需要的程序代碼和數據來自于內存,內存中的東西則來自于硬盤。所以硬盤并不直接與CPU打交道。 硬盤相對于內存來說就是外部存儲器。 存儲器是用來存儲器數據的,內存有告訴緩存和內存,計算機內部存儲,外存就是類似U盤的外部存儲,內存儲器 速度快 價格貴,容量小,斷電 后內存內數據會丟失。 外存儲器 單位價格低,容量大, 速度慢, 斷電后數據不會丟失。
評論