Intel 8051 內部資料儲存器組織
8051 的內部資料儲存器分為兩部分:一組八個暫存器和一個暫存器儲存區。這八個暫存器為 R0 到 R7。地址範圍 00H 到 07H 用於訪問這些暫存器,其餘部分為暫存器儲存區。
8051 提供四個暫存器組,但任何時候只能使用一個暫存器組。程式狀態字 (PSW) 的兩位用於選擇暫存器組。
因此,可以使用以下定址方式來選擇暫存器組。
地址範圍 | 暫存器組 |
---|---|
00H 到 07H | 暫存器組 0 |
08H 到 0FH | 暫存器組 1 |
10H 到 17H | 暫存器組 2 |
18H 到 1FH | 暫存器組 3 |
四個暫存器組的概念非常有用。對於中斷服務,此功能非常出色。中斷程式可以使用一個暫存器組,而中斷服務子程式 (ISS) 可以訪問另一個暫存器組以提高效能。由於有四個暫存器組,因此可以用於巢狀中斷。
當所有暫存器組都正在使用時,暫存器區域將為 20H 到 7FH。但是,從 20H 到 2FH (16 位元組或 128 位) 可以用作按位定址的 RAM。透過使用一些帶有 8 位記憶體地址的簡單指令,我們可以檢查位定址。例如,指令 **CLR 6FH** 清除位置 6FH。眾所周知,8 位地址可以定位 256 個不同的位置,但此處僅可定址 128 位。另一個按位定址位置部分為 80H 到 FFH。RAM 的其餘位置 (30H 到 7EH) 可用於儲存變數資料和堆疊。
堆疊區域
8051 中的堆疊區域始終可以在內部資料儲存器中實現。這裡的堆疊指標 (SP) 只是一個 8 位暫存器,因為內部 RAM 區域僅在 00H 到 7FH 範圍內,當所有暫存器組都正在使用時,堆疊位置將位於 30H 到 7FH 範圍內。在這種情況下,SP 將初始化為 2FH。
每次 PUSH 操作之前,堆疊指標 SP 都遞增;每次 POP 指令之後都遞減。
當 8051 復位時,堆疊指標將指向 07H。這意味著位置 08H 到 7FH 可以用作堆疊。我們假設暫存器組 0 正在使用,並且 20H 到 27H 不像位定址區域。