1. 程式人生 > 其它 >維晟WS51F7030 系列的總體架構

維晟WS51F7030 系列的總體架構

總體架構

1.1 8051 核心

1.1.1 簡介

標準 8051 即 MCS-51 為 12 週期的 8051 CPU,而 WS51F7030 系列晶片採用的是單週期 8051 CPU,完全相容MCS-51 指令集。

1.1.2 定址方式

8051 的核心定址方式有:立即定址、直接定址、間接定址、暫存器定址、相對定址、變址定址和位定址。

1.1.2.1 立即定址

立即定址是在指令運算元中直接給出參與運算的運算元,指令舉例如下:

MOV A, #60H (這條指令把 60H 直接送到累加器 A

1.1.2.2 直接定址

直接定址指令運算元給出的是參與運算運算元的地址。直接定址方式只能用於特殊功能暫存器、內部資料區和位地址空間,而特殊功能暫存器和位地址空間只能用直接定址方式訪問。指令舉例如下:

ANL 50H#91H (把 50H 單元中的數與 91H 相“與”,結果存放在 50H 單元中,其中 50H 為內部 RAM的地址)

1.1.2.3 間接定址

間接定址採用 R0 或 R1 前新增”@”符號來表示。假設 R1 中的資料是 40H,內部資料儲存器 40H 單元的資料為 55H,則指令為MOV A@R1 (把資料 55H 傳送至累加器 A

1.1.2.4 暫存器定址

暫存器定址對選定的工作暫存器 R7-R0、累加器 A、通用暫存器 B、地址暫存器和進位 C 中的數進行操作,其中暫存器 R7-R0 由指令碼的低 3 位表示,ACC、B、DPTR 及進位 C 隱含在指令碼中。因此,暫存器定址也包含一種隱含定址方式。工作暫存器工作區由狀態暫存器 PSW 的 RS1、RS0 決定。指令運算元指定的暫存器均指當前工作區的暫存器。

INC R0 R0 中的資料+1 寫回 R0

1.1.2.5 相對定址

相對定址是將程式計數器 PC 中的當前值與指令第二位元組給出的數相加,其結果作為轉移指令的轉移地址。轉移地址也成為轉移目的地址,PC 中的當前值成為基地址,指令第二位元組給出的數成為偏移量。由於目的地址是相對於 PC 中的基地址而言,所以這種定址方式成為相對定址。偏移量為帶符號的數,所能表示的範圍為+127--128。這種定址方式主要用於轉移指令。

JC $+50H (表示若進位位 C 0,則程式計數器 PC 中的內容不改變,即不轉移。若進位位 C 1,則以 PC 中的當前值及基地址,加上偏移量 50H 後得到的結果作為該轉移指令的目的地址)

1.1.2.6 變址定址

在變址定址方式中,指令運算元制定一個存放變址基址的變址暫存器。變址定址時,偏移量與變址基值相加,其結果作為運算元的地址。變址暫存器有程式計數器 PC 和地址暫存器 DPTR。

MOVC A@A+DPTR (表示累加器 A 為偏移量暫存器,其內容與地址暫存器 DPTR 中的內容相加,其結果作為運算元的地址,取出該單元中的數送入累加器 A 中)

1.1.2.7 位定址

位定址是指對一些可進行位操作的內部 RAM 和特殊功能暫存器進行位操作時的定址方式。在進行位操作時,藉助於進位位 C 作為位操作累加器,指令運算元直接給出該位的地址,然後根據操作碼對該位進行位操作。MOV C20H (將地址為 20H 的位操作暫存器值送入進位位 C 中)

1.1.3 暫存器描述

1.1.3.1 程式計數器 PC

程式計數器 PC 暫存器為 16 位,是專門用來控制指令執行順序的暫存器,它沒有暫存器地址。微控制器上電或復位後,PC 值為 0,微控制器從零地址開始執行程式。

1.1.3.2 累加器 ACC

累加器 ACC 是一個常用的專用暫存器,指令系統中採用 A 作為累加器的助記符,常用於存放算術或邏輯運算的運算元及運算結果。

1.1.3.3 通用暫存器 B

B 在乘除法運算中需要和 ACC 配合使用。MUL AB 指令把 ACC 和 B 中 8 位無符號數相乘,所得的 16 位乘積的低位元組存放在 A 中,高位元組存放在 B 中。DIV AB 指令用 B 除以 A,整數商存放在 A 中,餘數存放在 B 中。暫存器 B 還可以用作通用暫存暫存器。

1.1.3.4 堆疊指標 SP

堆疊指標 SP 是一個 8 位專用暫存器。它指示出堆疊頂部在內部 RAM 塊中的位置。系統復位後,SP 初始化位 07H,使得堆疊事實上由 08H 單元開始,考慮 08H-1FH 單元分別屬於工作暫存器組 1-3,若在程式設計中用到這些區,則最好 SP 改變為 80H 或更大的為宜。在程式除錯中,經常出現堆疊溢位的情況,為了方便找到程式故障,設定了一個記錄最大堆疊的暫存器 SPMAX,可以通過 Debug 介面讀出,地址 0x1A。

1.1.3.5 資料指標 DPTR

資料指標 DPTR0/DPTR1 是兩個 16 位專用暫存器,它們的高位位元組暫存器用 DP0H/DP1H表示,低位位元組暫存器用 DP0L/DP1L 表示,通過 DPS(PSW.1)可選擇使用 DPTR0/DPTR1。每個 DPTR 既可以作為一個 16 位暫存器來處理,也可以作為 2 個獨立的 8 位暫存器 DP0H/DP1H 和 DP0L/DP1L 來處理。

1.1.3.6 狀態暫存器 PSW

狀態暫存器 PSW 是 CPU 的狀態暫存器。在 CPU 做算術運算或者邏輯運算時,對應的 PSW 狀態位會發生改變。