程式存儲器
概念程式存儲器是用於存放程式代碼的,是控制計算機動作的一系列命令,單片機只認識由“0”和“1”代碼構成的機器指令。如前述用助記符編寫的命令MOVA,#20H,換成機器認識的代碼74H、20H:(寫成二進制就是01110100B和00100000B)。在單片機處理問題之前必須事先將編好的程式、表格、常數彙編成機器代碼後存入單片機的存儲器中,該存儲器稱為程式存儲器。介紹
程式存儲器可以放在片內或片外,亦可片內片外同時設定。由於PC程式計數器為16位,使得程式存儲器可用16位二進制地址,因此,內外存儲器的地址最大可從0000H到FFFFH。8051內部有4k位元組的ROM,就占用了由0000H~0FFFH的最低4k個位元組,這時片外擴充的程式存儲器地址編號應由1000H開始,如果將8051當做8031使用,不想利用片內4kROM,全用片外存儲器,則地址編號仍可由0000H開始。不過,這時應使8051的第{31}腳(即EA腳)保持低電平。當EA為高電平時,用戶在0000H至0FFFH範圍內使用內部ROM,大於0FFFH後,單片機CPU自動訪問外部程式存儲器。
數據存儲器
組成單片機的數據存儲器由讀寫存儲器RAM組成。介紹
其最大容量可擴展到64k,用於存儲實時輸入的數據。8051內部有256個單元的內部數據存儲器,其中00H~7FH為內部隨機存儲器RAM,80H~FFH為專用暫存器區。實際使用時應首先充分利用內部存儲器,從使用角度講,搞清內部數據存儲器的結構和地址分配是十分重要的。因為將來在學習指令系統和程式設計時會經常用到它們。8051內部數據存儲器地址由00H至FFH共有256個位元組的地址空間,該空間被分為兩部分,其中內部數據RAM的地址為00H~7FH(即0~127)。而用做特殊功能暫存器的地址為80H~FFH。在此256個位元組中,還開闢有一個所謂“位地址”區,該區域內不但可按位元組定址,還可按“位(bit)”定址。對於那些需要進行位操作的數據,可以存放到這個區域。從00H到1FH安排了四組工作暫存器,每組占用8個RAM位元組,記為R0~R7。究竟選用那一組暫存器,由前述標誌暫存器中的RS1和RS0來選用。在這兩位上放入不同的二進制數,即可選用不同的暫存器組。
特殊暫存器
介紹
特殊功能暫存器(SFR)的地址範圍為80H~FFH。在MCS-51中,除程式計數器PC和四個工作暫存器區外,其餘21個特殊功能暫存器都在這SFR塊中。其中5個是雙位元組暫存器,它們共占用了26個位元組。各特殊功能暫存器的符號和地址見附表。其中帶*號的可位定址。特殊功能暫存器反映了8051的狀態,實際上是8051的狀態字及控制字暫存器。用於CPUPSW便是典型一例。
分類
這些特殊功能暫存器大體上分為兩類,一類與晶片的引腳有關,另一類作片內功能的控制用。與晶片引腳有關的特殊功能暫存器是P0~P3,它們實際上是4個八位鎖存器(每個I/O口一個),每個鎖存器附加有相應的輸出驅動器和輸入緩衝器就構成了一個並行口。MCS-51共有P0~P3四個這樣的並行口,可提供32根I/O線,每根線都是雙向的,並且大都有第二功能。其餘用於晶片控制的暫存器中,累加器A、標誌暫存器PSW、數據指針DPTR等的功能前已提及,而另一些暫存器的功能在後面有關部分再作進一步介紹。