1.2 8051 系列單片機(jī)內(nèi)部結(jié)構(gòu)
8051系列單片機(jī)內(nèi)部結(jié)構(gòu)可以分為 CPU、存儲(chǔ)器、并行口、串行口、定時(shí)器/計(jì)數(shù)器和中斷邏輯這幾部分,如圖 1-2-1。
圖 1-2-1
1.2.1 微處理器微處理器又稱 CPU,由運(yùn)算器和控制器兩大部分組成。
1. 算術(shù)邏輯單元它在控制器所發(fā)內(nèi)部控制信號(hào)的控制下進(jìn)行各種算術(shù)操作和邏輯操作。
MCS-51 系列單片機(jī)的算術(shù)邏輯單元能完成帶進(jìn)位位加法、不帶進(jìn)位位加法、帶進(jìn)位位減法、加 1、減 1、邏輯與、邏輯或、邏輯異或、循環(huán)移位以及數(shù)據(jù)傳送、程序轉(zhuǎn)移等一般操作外,其特點(diǎn)是:
? 在 B 寄存器配合下,能完成乘法與除法操作。
? 可進(jìn)行多種內(nèi)容交換操作。
? 能作比較判跳轉(zhuǎn)操作。
? 有很強(qiáng)的位操作功能。
2. 累加器累加器 A 是最常用的專用寄存器。
進(jìn)入 ALU 作算術(shù)操作和邏輯操作的操作數(shù)很多來(lái)自 A,操作的結(jié)果也常送回 A。有時(shí)很多單操作數(shù)操作指令都是針對(duì) A 的,例如指令 INC A 是執(zhí)行 A 中內(nèi)容自加 1 的操作,指令 CLR A 是執(zhí)行將 A 內(nèi)容清零的操作,指令 RL A 是執(zhí)行使 A 各位內(nèi)容依次循環(huán)向左移動(dòng)一位的操作。
3. 程序狀態(tài)字
程序狀態(tài)字 PSW 是一個(gè) 8 位寄存器,它包含了許多程序狀態(tài)信息,其各位的含義見(jiàn)圖 1-2-2。
D7
D6
D5
D4
D3
D2
D1
D0
CY
AC
FO
RS1
RS0
OV
-
P
圖 1-2-2
PSW 各位的含義如表 1-2-1。
位
含義
CY
進(jìn)位標(biāo)志。有進(jìn)位/借位時(shí),CY=1,否則 CY=0。
AC
輔助進(jìn)位標(biāo)志。8 位運(yùn)算時(shí),如果低半字的最高位 D3 有進(jìn)位,則 AC=1,否則 AC=0;8 位減法運(yùn)算時(shí),如果 D3 有借位,則 AC=1,否則 AC=0。AC 在作 BCD 碼運(yùn)算而進(jìn)行二-十進(jìn)制調(diào)整時(shí)很有用。
FO
軟件標(biāo)志。這是用戶定義的一個(gè)狀態(tài)標(biāo)志??赏ㄟ^(guò)軟件對(duì)它置位、清零;在編程時(shí),也常測(cè)試其是否建起而進(jìn)行程序分支。
RS1
RS0
工作寄存器組選擇位,可借軟件置位或清零,以選定 4 個(gè)工作寄存器組中的一個(gè)投入工作,詳見(jiàn)表 1-2-2。
OV
溢出標(biāo)志。當(dāng)帶符號(hào)數(shù)運(yùn)算結(jié)果超出-128~127 范圍時(shí),OV=1,否則 OV=0;當(dāng)無(wú)符號(hào)數(shù)乘法結(jié)果超過(guò) 255 時(shí),或當(dāng)無(wú)符號(hào)數(shù)除法的除數(shù)為 0 時(shí),OV=1,否則 OV=0。
P
奇偶標(biāo)志。每執(zhí)行一條指令,單片機(jī)都能根據(jù) A 中 1 的個(gè)數(shù)的奇偶自動(dòng)令 P 置位或清零,奇為 1 ,偶為 0。此標(biāo)志對(duì)串行通信的數(shù)據(jù)傳輸非常有用,通過(guò)奇偶校驗(yàn)可校驗(yàn)傳輸?shù)目煽啃浴?/p>
RS1、RS0 與工作寄存器組的關(guān)系如表 1-2-2。
表 1-2-2
RS1
RS0
工作寄存器組
0
0
0 組(00H~07H)
0
1
1 組(08H~0FH)
1
0
2 組(10H~17H)
1
1
3 組(18H~1FH)
1.2.2 振蕩器與 CPU 1. 振蕩器
圖 1-2-3
MCS-51 系列單片機(jī)內(nèi)含有一個(gè)高增益的反相放大器,通過(guò) XTAL1、XTAL2 外接作為反饋元器件的晶體后便成為自激振蕩器,接法見(jiàn)圖 1-2-3。晶體呈感性,與兩個(gè) 30pF 電容并聯(lián)諧振電路。振蕩器的震蕩頻率主要取決于晶體;電容的值有微調(diào)作用,通常取 30pF 左右。電容的安裝位置應(yīng)盡量靠近單片機(jī)芯片。
2. CPU 時(shí)序振蕩器輸出的震蕩脈沖經(jīng) 2 分頻成為內(nèi)部時(shí)鐘信號(hào),用作單片機(jī)內(nèi)部各功能部件按序協(xié)調(diào)工作的控制信號(hào);其周期成為時(shí)鐘周期,也稱為狀態(tài)周期。
CPU 執(zhí)行一條指令的時(shí)間成為指令周期。指令周期已機(jī)器周期為單位,例如單周期指令、雙周期指令。MCS-51 系列單片機(jī)除乘法指令、除法指令是 4 周期指令外,其余都是單周期指令和雙周期指令。若用 12MHz 晶振,則單周期指令和雙周期指令的執(zhí)行時(shí)間分貝為 1us 和 2us,乘法指令和除法指令為 4us。
1.2.3 存儲(chǔ)器8051 系列單片機(jī)的存儲(chǔ)器結(jié)構(gòu)特點(diǎn)之一是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi),并有各自的尋址機(jī)構(gòu)和尋址方式。這種結(jié)構(gòu)的的單片機(jī)稱為哈佛結(jié)構(gòu)單片機(jī)。該結(jié)構(gòu)與通用微機(jī)的存儲(chǔ)器結(jié)構(gòu)不同。一般微機(jī)只有一個(gè)存儲(chǔ)器邏輯空間,可隨意安排 ROM 或 RAM,訪問(wèn)時(shí)用同一種指令。這時(shí)結(jié)構(gòu)稱為普林斯頓型。
8051 系列單片機(jī)在物理上有 4 個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器;片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。
8051 系列單片機(jī)內(nèi)有 256 字節(jié)數(shù)據(jù)存儲(chǔ)器 RAM 和 4KB 的程序存儲(chǔ)器 ROM。除此之外,還可以在片外拓展 RAM 和 ROM,并且各有 64KB 的尋址范圍,也就是最多可以在外部拓展 2x64KB 存儲(chǔ)器。
對(duì) 8051 來(lái)說(shuō),如EA引腳為高電平,復(fù)位后先執(zhí)行片內(nèi)程序存儲(chǔ)器中的程序,當(dāng)程序計(jì)數(shù)器 PC 中內(nèi)容超過(guò) 0x0FFF(對(duì) 51 子系列)或 0x1FFF(對(duì) 52 子系列)時(shí),將自動(dòng)轉(zhuǎn)去執(zhí)行片外程序存儲(chǔ)器中的程序;對(duì)于片內(nèi)無(wú)程序存儲(chǔ)器的 8031、8032,EA 引腳應(yīng)保持低電平,使其只能訪問(wèn)片外程序存儲(chǔ)器。
對(duì)于有片內(nèi)程序存儲(chǔ)器的芯片,如EA引腳接低電平,將強(qiáng)令執(zhí)行片外程序存儲(chǔ)器中的程序。此時(shí)多在片外程序存儲(chǔ)器中存放調(diào)試程序,使計(jì)算機(jī)工作在調(diào)試狀態(tài)。那么這時(shí)就要注意:片外程序存儲(chǔ)器存放調(diào)試程序的部分,其編址與片內(nèi)程序存儲(chǔ)器的編址是可以重疊的,借EA引腳的換接可實(shí)現(xiàn)分別訪問(wèn)。
二者,都能自程序存儲(chǔ)器的任一單元取指執(zhí)行或訪問(wèn)取數(shù)(常數(shù)),不會(huì)混亂。
下圖為 51 子系列的存儲(chǔ)器編址圖,程序存儲(chǔ)器編址如圖 1-2-4,數(shù)據(jù)存儲(chǔ)器如圖 1-2-5。
圖 1-2-4
圖 1-2-5
64KB 的程序存儲(chǔ)器(ROM)空間中,有 4KB 地址區(qū)對(duì)于片內(nèi) ROM 和片外 ROM 是公用的。這 4KB 地址為 0000H~0FFFH;而 1000H~FFFFH 地址區(qū)為外部 ROM 專用。CPU 的控制器專門(mén)提供一個(gè)控制信號(hào)通過(guò)EA引腳來(lái)控制EA用來(lái)區(qū)分內(nèi)部 ROM 和外部 ROM 的公用地址區(qū):當(dāng)EA引腳接高電平時(shí),單片機(jī)從片內(nèi) ROM的 4KB 存儲(chǔ)區(qū)取指令,而當(dāng)指令地址超過(guò) 0FFFH 后,就自動(dòng)地轉(zhuǎn)向片外 ROM 指令;當(dāng)EA引腳為低電平時(shí) ,CPU 只從片外 ROM 取指令。這種接法特別適用于 8031 單片機(jī)的場(chǎng)合,由于 8031 內(nèi)部不帶 ROM,所以使用必須EA引腳置 0,以便直接從外部 ROM 中取指令。
程序存儲(chǔ)器的某些單元是保留給系統(tǒng)使用的:0000H~0002H 單元是所有執(zhí)行程序的入口地址,即單片機(jī)上電后,CPU 總是從 0000H 單元開(kāi)始執(zhí)行地址;0003H~002BH 單元均勻地分為 5 段,用做 5 個(gè)中斷服務(wù)函數(shù)的入口地址如表 1-2-4,用戶程序不應(yīng)進(jìn)入上述區(qū)域。
中斷源
入口地址
外部中斷 0
0003H
定時(shí)器/計(jì)數(shù)器 0 溢出
000BH
外部中斷 1
0013H
定時(shí)器/計(jì)數(shù)器 1 溢出
001BH
串行口
0023H
定時(shí)器/計(jì)數(shù)器 2 溢出或 T2EX 端負(fù)跳變(僅 8032 、8052 用)
002BH
數(shù)據(jù)存儲(chǔ)器 RAM 也有 64KB 尋址區(qū),在地址上與 ROM 是重疊的。8051 通過(guò)不同的信號(hào)來(lái)選通 ROM 或RAM:當(dāng)從外部 ROM 取指令時(shí),用選通信號(hào)PSEN;而當(dāng)從外部 RAM 讀寫(xiě)數(shù)據(jù)時(shí),采用讀寫(xiě)信號(hào)RD或WR來(lái)選通,因此,不會(huì)因?yàn)榈刂分丿B而出現(xiàn)混亂。
8051 的 RAM 雖然字節(jié)數(shù)不很多,但卻起著十分重要的作用。256 字節(jié)被劃分為兩個(gè)區(qū)域:00H~7FH是真正的RAM區(qū),可以讀/寫(xiě)各種數(shù)據(jù);而80H~FFH是專門(mén)用于特殊功能寄存器(SFR,Special FunctionRegister)的區(qū)域。對(duì)于 8051 安排了 21 個(gè)特殊功能寄存器;對(duì)于 8052 則安排了 26 個(gè)特殊功能寄存器。每個(gè)寄存器為 8 位,即一個(gè)字節(jié),所以實(shí)際上 128 自己沒(méi)有全部利用。
51 子系列單片機(jī)片內(nèi) RAM 共分為工作寄存器區(qū)、位尋址區(qū)、數(shù)據(jù)緩沖區(qū)器三個(gè)區(qū)域。
工作寄存器也稱作通用寄存器,供用戶編程時(shí)使用,臨時(shí)保存 8 位信息。
位尋址就是每一位都被賦予了 1 個(gè)位地址,有了位地址就可以位尋址,對(duì)特定位進(jìn)行處理、內(nèi)容傳送或據(jù)以判條,給編程帶來(lái)極大的方便。
數(shù)據(jù)緩沖區(qū)即用戶 RAM 區(qū)。
片內(nèi)數(shù)據(jù)存儲(chǔ)器如表 1-2-5。
片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)域
占用地址
工作寄存器區(qū)
工作寄存器 0 組
00H~07H
工作寄存器 1 組
08H~0FH
工作寄存器 2 組
10H~17H
工作寄存器 3 組
18H~1FH
位尋址區(qū)
20H~2FH
數(shù)據(jù)緩沖區(qū)
30H~7FH
對(duì)于 128 字節(jié) RAM 的 8051 系列單片機(jī)來(lái)說(shuō),真正讓用戶使用的 RAM 只有 80 自己,即 30H~7FH。對(duì)于 8052 單片機(jī)來(lái)說(shuō),片內(nèi)多安排了 128 字節(jié) RAM 單元,地址也為 80H~FFH,與特殊功能寄存器區(qū)域地址重疊,但在使用時(shí),可以通過(guò)指令加以區(qū)別。
特殊功能寄存器也稱專用寄存器,專用于控制、管理片內(nèi)算路邏輯部件、并行 I/O 口,串行I/O 口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作,用戶編程時(shí)可以置數(shù)設(shè)定,卻不能將該寄存器另作他用。在 51 系列單片機(jī)中,將各專用寄存器(程序計(jì)數(shù)器 PC 例外)與片內(nèi) RAM 統(tǒng)一編址的,又可以作為直接尋址字節(jié)。特殊功能寄存器地址分配如表 1-2-6。
表 1-2-6
特殊功能寄存器
符號(hào)
地址
P0 口
P0
80H
堆棧指針
SP
81H
數(shù)據(jù)指針低字節(jié)
DPL
82H
定時(shí)器/計(jì)數(shù)器控制
TCON
88H
定時(shí)器/計(jì)數(shù)器方式控制
TMOD
89H
定時(shí)器/計(jì)數(shù)器 0 低字節(jié)
TL0
8AH
定時(shí)器/計(jì)數(shù)器 1 低字節(jié)
TL1
8BH
定時(shí)器/計(jì)數(shù)器 0 高字節(jié)
TH0
8CH
定時(shí)器/計(jì)數(shù)器 1 高字節(jié)
TH1
8DH
P1 口
P1
90H
電源控制
PCON
97H
串行控制
SCON
98H
串行數(shù)據(jù)緩沖器
SBUF
99H
P2 口
P2
A0H
中斷允許控制
IE
A8H
P3 口
P3
B0H
中斷優(yōu)先級(jí)控制
IP
B8H
定時(shí)器/計(jì)數(shù)器 2 控制
T2CON
C8H
定時(shí)器/計(jì)數(shù)器 2 自動(dòng)重裝載低字節(jié)
RLDL
CAH
定時(shí)器/計(jì)數(shù)器 2 自動(dòng)重裝載高字節(jié)
RLDH
CBH
定時(shí)器/計(jì)數(shù)器 2 低字節(jié)
TL2
CCH
程序狀態(tài)字
PSW
D0H
累加器
A
E0H
B 寄存器
B
F0H
1.2.4 并行接口
MCS-51 系列單片機(jī)有 32 根輸入/輸出線,組成 4 個(gè) 8 位并行輸入/輸出接口,分別為 P0 口 、P1 口、P2 口、P3 口。這 4 個(gè)接口可以并行輸入或輸出 8 位數(shù)據(jù),也可以按位使用,即每一根輸入/輸出線都能夠獨(dú)立地用作輸入或輸出。
這 4 個(gè)口的差別就是 P0、P2、P3 都還有第二功能的,而 P1 口只能作普通的 I/O 口來(lái)使用 。
詳細(xì)描述請(qǐng)看“第二章 STC89C52RC 處理器 2.4 管腳小節(jié)”。
1.3 8051 系列單片機(jī)內(nèi)部資源 1. 定時(shí)器/ / / / 計(jì)數(shù)器8051 系列單片機(jī)至少有兩個(gè) 16 位內(nèi)部定時(shí)器/計(jì)數(shù)器(T/C,Timer/Counter),提供了 3 個(gè)定時(shí)器,其中兩個(gè)基本定時(shí)器/計(jì)數(shù)器分別是定時(shí)器/計(jì)數(shù)器 0(T/C0)和定時(shí)器/計(jì)數(shù)器 1(T/C1)。它們既可以編程為定時(shí)器使用,也可以編程為計(jì)數(shù)器使用。若是計(jì)數(shù)內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘,則它是定時(shí)器;若是計(jì)數(shù)輸入引腳的脈沖信號(hào),則它是計(jì)數(shù)器。
2. 串行口串行收/發(fā)存儲(chǔ)在特殊功能寄存器的 SBUF(串行數(shù)據(jù)緩沖器),從表 1-2-6 可以知道,SBUF占用 RAM 地址為 99H。實(shí)際上在單片機(jī)內(nèi)部有兩個(gè)數(shù)據(jù)緩沖器:發(fā)送緩沖器和接收緩沖器,它們都以 SBUF 來(lái)命名,只根據(jù)對(duì) SBUF 特殊功能寄存器讀/寫(xiě)操作,單片機(jī)會(huì)自動(dòng)切換發(fā)送緩沖器或接收緩沖器。
SBUF=0x01,該操作為寫(xiě)操作,數(shù)值 0x01 會(huì)被裝載到發(fā)送緩沖器。
Tmp=SBUF,該操作為讀操作,接收緩沖器的內(nèi)容會(huì)被賦值給 Tmp 變量。
3. 中斷系統(tǒng)8051 系列單片機(jī)中斷系統(tǒng)的功能有 5 個(gè)(52 子系列為 6 個(gè))中斷源,2 個(gè)中斷優(yōu)先級(jí),從而實(shí)現(xiàn)二級(jí)中斷嵌套,每一個(gè)中斷源的優(yōu)先級(jí)可由程序設(shè)定。與中斷系統(tǒng)工作有關(guān)的特殊功能寄存器有中斷允許控制寄存器 IE、中斷優(yōu)先級(jí)控制寄存器 IP 以及定時(shí)器/計(jì)數(shù)器控制寄存器 TCON等。
評(píng)論
查看更多