1 產(chǎn)品信息
1.1 產(chǎn)品資源
1.2 WS51F0030管腳定義
封裝類型:TSSOP20
2 WS51F0030總體架構(gòu)
2.1 8051 內(nèi)核
2.1.1 簡介
標準 8051 即 MCS-51 為 12 周期的 8051 CPU,而 WS51F0030 系列芯片采用的是單周期 8051 CPU,*兼容MCS-51 指令集。
2.1.2 尋址方式
8051 的內(nèi)核尋址方式有:立即尋址、直接尋址、間接尋址、寄存器尋址、相對尋址、變址尋址和位尋址。
立即尋址
立即尋址是在指令操作數(shù)中直接給出參與運算的操作數(shù),指令舉例如下:
MOV A, #60H (這條指令把 60H 直接送到累加器 A)
直接尋址
直接尋址指令操作數(shù)給出的是參與運算操作數(shù)的地址。直接尋址方式只能用于特殊功能寄存器、內(nèi)部數(shù)據(jù)區(qū)和位地址空間,而特殊功能寄存器和位地址空間只能用直接尋址方式訪問。指令舉例如下:
ANL 50H, #91H (把 50H 單元中的數(shù)與 91H 相“與”,結(jié)果存放在 50H 單元中,其中 50H 為內(nèi)部 RAM的地址)
間接尋址
間接尋址采用 R0 或 R1 前添加”@”符號來表示。假設(shè) R1 中的數(shù)據(jù)是 40H,內(nèi)部數(shù)據(jù)存儲器 40H 單元的數(shù)據(jù)為 55H,則指令為MOV A, @R1 (把數(shù)據(jù) 55H 傳送至累加器 A)
寄存器尋址
寄存器尋址對選定的工作寄存器 R7-R0、累加器 A、通用寄存器 B、地址寄存器和進位 C 中的數(shù)進行操作,其中寄存器 R7-R0 由指令碼的低 3 位表示,ACC、B、DPTR 及進位 C 隱含在指令碼中。因此,寄存器尋址也包含一種隱含尋址方式。工作寄存器工作區(qū)由狀態(tài)寄存器 PSW 的 RS1、RS0 決定。指令操作數(shù)的寄存器均指當(dāng)前工作區(qū)的寄存器。 INC R0 (R0 中的數(shù)據(jù)+1 寫回 R0)
相對尋址
相對尋址是將程序計數(shù)器 PC 中的當(dāng)前值與指令第二字節(jié)給出的數(shù)相加,其結(jié)果作為轉(zhuǎn)移指令的轉(zhuǎn)移地址。轉(zhuǎn)移地址也成為轉(zhuǎn)移目的地址,PC 中的當(dāng)前值成為基地址,指令第二字節(jié)給出的數(shù)成為偏移量。由于目的地址是相對于 PC 中的基地址而言,所以這種尋址方式成為相對尋址。偏移量為帶符號的數(shù),所能表示的范圍為+127--128。這種尋址方式主要用于轉(zhuǎn)移指令。JC $+50H (表示若進位位 C 為 0,則程序計數(shù)器 PC 中的內(nèi)容不改變,即不轉(zhuǎn)移。若進位位 C 為 1,則以 PC 中的當(dāng)前值及基地址,加上偏移量 50H 后得到的結(jié)果作為該轉(zhuǎn)移指令的目的地址)
變址尋址
在變址尋址方式中,指令操作數(shù)制定一個存放變址基址的變址寄存器。變址尋址時,偏移量與變址基值相加,其結(jié)果作為操作數(shù)的地址。變址寄存器有程序計數(shù)器 PC 和地址寄存器 DPTR。MOVC A, @A+DPTR (表示累加器 A 為偏移量寄存器,其內(nèi)容與地址寄存器 DPTR 中的內(nèi)容相加,其結(jié)果作為操作數(shù)的地址,取出該單元中的數(shù)送入累加器 A 中)
位尋址
位尋址是指對一些可進行位操作的內(nèi)部 RAM 和特殊功能寄存器進行位操作時的尋址方式。在進行位操作時,借助于進位位 C 作為位操作累加器,指令操作數(shù)直接給出該位的地址,然后根據(jù)操作碼對該位進行位操作。MOV C, 20H (將地址為 20H 的位操作寄存器值送入進位位 C 中)
2.1.3 寄存器描述
程序計數(shù)器 PC
程序計數(shù)器 PC 寄存器為 16 位,是專門用來控制指令執(zhí)行順序的寄存器,它沒有寄存器地址。單片機上電或復(fù)位后,PC 值為 0,單片機從零地址開始執(zhí)行程序。
累加器 ACC
累加器 ACC 是一個常用的專用寄存器,指令系統(tǒng)中采用 A 作為累加器的助記符,常用于存放算術(shù)或邏輯運算的操作數(shù)及運算結(jié)果。
通用寄存器 B
B 在乘除法運算中需要和 ACC 配合使用。MUL AB 指令把 ACC 和 B 中 8 位無符號數(shù)相乘,所得的 16 位乘積的低字節(jié)存放在 A 中,高字節(jié)存放在 B 中。DIV AB 指令用 B 除以 A,整數(shù)商存放在 A 中,余數(shù)存放在 B 中。寄存器 B 還可以用作通用暫存寄存器。
堆棧指針 SP
堆棧指針 SP 是一個 8 位專用寄存器。它指示出堆棧頂部在內(nèi)部 RAM 塊中的位置。系統(tǒng)復(fù)位后,SP 初始化位 07H,使得堆棧事實上由 08H 單元開始,考慮 08H-1FH 單元分別屬于工作寄存器組 1-3,若在程序設(shè)計中用到這些區(qū),則 SP 改變?yōu)?80H 或更大的為宜。在程序調(diào)試中,經(jīng)常出現(xiàn)堆棧溢出的情況,為了方便找到程序故障,設(shè)置了一個記錄堆棧的寄存器 SPMAX,可以通過 Debug 接口讀出,地址 0x1A。
數(shù)據(jù)指針 DPTR
數(shù)據(jù)指針 DPTR0/DPTR1 是兩個 16 位專用寄存器,它們的高位字節(jié)寄存器用 DP0H/DP1H表示,低位字節(jié)寄存器用 DP0L/DP1L 表示,通過 DPS(PSW.1)可選擇使用 DPTR0/DPTR1。每個 DPTR 既可以作為一個 16 位寄存器來處理,也可以作為 2 個獨立的 8 位寄存器 DP0H/DP1H 和 DP0L/DP1L 來處理。
狀態(tài)寄存器 PSW
狀態(tài)寄存器 PSW 是 CPU 的狀態(tài)寄存器。在 CPU 做算術(shù)運算或者邏輯運算時,對應(yīng)的 PSW 狀態(tài)位會發(fā)生改變。
2.3 存儲器分布
WS51F0030 系列芯片內(nèi)含 256B 內(nèi)部 RAM、1KB 外部 RAM、特殊功能寄存器(SFR)、128B EEPROM、2KB NVR 和 16KB Flash ROM,存儲器地址分配如下:
l 低 128B 的內(nèi)部 RAM(地址:00H - 7FH)可直接尋址或間接尋址
l 高 128B 的內(nèi)部 RAM(地址:80H - FFH)只能間接尋址
l 1KB 的外部 RAM(地址:0000H - 03FFH)可通過 MOVX 指令間接尋址,可映射到程序地址空間 8000H-83FFH,也可直接作為程序空間 0000H-03FFH
l 特殊功能寄存器(SFR)(地址:80H - FFH)可直接尋址
l 擴展特殊功能寄存器(XSFR)(從 8000H 開始),通過 MOVX 指令尋址
l 128B EEPROM 用于存儲數(shù)據(jù),不需要擦除操作,直接改寫即可
l 2KB NVR 包含 16 個扇區(qū),主要用于系統(tǒng)配置數(shù)據(jù)
l 16KB Flash ROM(地址:0000H-3FFFH),通過 MOVC 指令可訪問