官术网_书友最值得收藏!

第二章 單片機系統結構

第一節 總體結構

自20世紀80年代初,Intel公司的MCS-51系列單片機問世以來,該系列的單片機產品已發展到幾十種型號。8051是最早最典型的產品,該系列其他新的單片機產品都是以它為核心再增加了一定的功能部件后構成的。本章討論8051單片機的系統結構和工作原理,并從單片機應用的角度,重點論述系統所提供的資源特性和使用方法。

一、結構電路

MCS-51單片機內部總體結構框圖如圖2-1所示。

圖2-1 MCS-51結構框圖

8051是ROM型單片機,內部有4KB工廠掩膜編程的ROM程序存儲器;8751是

EPROM型單片機,內部有4KB用戶可編程的EPROM程序存儲器;8031是無ROM程

序存儲器的單片機,它必須外接EPROM程序存儲器。除此以外,8051、8751和8031的內部結構是完全相同的,都具有下列硬件資源:

8位中央處理器CPU;

128B內部數據存儲器RAM;

4個8位雙向輸入/輸出線;1個全雙工的異步串行口;2個16位定時器/計數器;5個中斷源,2個中斷優先級;1個片內振蕩器和時鐘電路;

可尋址64KB的外部程序存儲器空間和64KB的外部數據存儲器空間。二、中央處理器CPU

CPU是單片機的核心,由它讀入用戶程序并加以執行。MCS-51系列單片機內部有一個8位CPU,它是由運算器ALU、控制器等部件組成的。

1.運算器

運算器主要包括算術邏輯運算部件(ALU):累加器ACC、B寄存器、暫存器、程序狀態字寄存器PSW、十進制調整電路以及布爾處理器等。運算器主要用來實現數據的傳送、數據的算術邏輯運算和位變量處理。

(1)累加器ACC。累加器ACC是算術邏輯單元ALU中操作最頻繁的一個8位寄存器,它是算術運算中存放操作數和運算結果的地方;在邏輯運算和數據轉移指令中,存放源操作數和目的操作數;而執行循環、測試零等指令就是在累加器中進行操作。指令系統中常用A表示累加器。

(2)B寄存器。B寄存器常用于乘除操作。乘法指令的兩個操作數分別取自A和B,其乘積結果的高低8位分別存放在B和A兩個8位寄存器中;除法指令中,被除數取自A,除數取自B,商數存放于A,余數存放于B。在其他指令中,B寄存器可作為通用寄存器或RAM的一個單元使用。

(3)程序狀態字寄存器PSW。程序狀態字寄存器是一個8位的特殊功能寄存器,它的各位包含了程序執行后的狀態信息。其格式和各位的含義如下所示:

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

P

CY:進位/借位標志。又是布爾處理器的累加器C。如果數據操作的結果最高位有進

位(加法)或借位(減法)時,CY=1,否則CY=0。

AC:輔助進位/借位標志。如果操作結果低4位有進位(加法時)或低4位向高4位借位(減法時),則置位AC;否則清“0”AC。AC主要用于二—十進制數加法的十進制調整。

F0:用戶定義標志位。供用戶使用的軟件標志,其功能和內部RAM中位尋址區的各位相似。

RS1、RS0:寄存器區選擇控制位。可以用軟件來置位或清零以確定工作寄存器區。RS1、RS0與寄存器區的對應關系參見表2-3。

OV:溢出標志位。當執行算術指令時,由硬件置位或清零,以指示溢出狀態。

當帶符號數作加法或減法運算,結果超出-128~+127范圍時,OV=1;否則OV=0。溢出產生的邏輯條件是:OV=C6⊕C7,其中C6表示D6位向D7位的進位(或借位),C7表示D7位向CY位的進位(或借位)。

當無符號數作乘法運算時,其結果也會影響溢出標志OV。當置于累加器A和寄存器B中的兩個數的乘積超過255時,OV=1,此乘積的高8位放在B寄存器內,低8位則放在累加器A中,否則OV=0,意味著只要從A中取得乘積即可。除法指令DIV也會影響溢出標志。當除數為0時,為無意義,OV=1,否則OV=0。

P:奇偶標志位。表示累加器A的8位中值為1的個數的奇偶性。若1的個數為奇數,則P=1;否則P=0。此標志在串行通信中常被用來檢驗數據傳輸的可靠性。

2.控制器

控制器是控制計算機系統各種操作的部件,它包括時鐘發生器、定時控制邏輯、復位電路、指令寄存器IR、指令譯碼器、程序計數器PC、程序地址寄存器、數據指針DPTR、堆棧指針SP等。

(1)時鐘電路。在MCS-51芯片內部有一個高增益反相放大器,其輸入端為芯片引

腳XTAL1,輸出端為引腳XTAL2。在芯片的外部,XTAL1和XTAL2之間跨接晶體振

蕩器和微調電容,從而構成一個穩定的自激振蕩器,即單片機的時鐘電路,如圖2-2(a)所示。一般地,電容C1和C2取30pF左右,晶體的振蕩頻率范圍是2M~12MHz。

圖2-2 單片機的時鐘電路

在由多片單片機組成的系統中,為了各單片機之間時鐘信號的同步,應當引入唯一的公用外部脈沖信號作為單片機的振蕩脈沖。這時,外部的脈沖信號經XTAL2引腳注入,其連接如圖2-2(b)所示。

(2)復位電路。計算機在啟動運行時都需要復位,使中央處理器CPU和系統中的其他部件都處于一個確定的初始狀態,并從這個狀態開始工作。要實現單片機可靠復位,必須使RST/VPD引腳保持兩個機器周期以上的高電平,只要RST保持高電平,MCS-51保

持復位狀態。此時ALE、PSEN、P0、P1、P2、P3口都輸出高電平(即為輸入狀態)。

RST變為低電平后,退出復位,CPU從初始狀態開始工作。復位以后內部寄存器的初始狀態如表2-1所示。

表2-1

復位后的內部寄存器狀態

RST/VPD引腳的復位操作有上電自動復位和按鍵手動復位兩種工作方式,如圖2-3所示。

圖2-3 復位電路

上電自動復位是利用外部復位電路的RC充電來實現的。按鍵復位是通過使RST/VPD引腳經電阻與電源VCC接通實現的。

(3)指針。指針主要有程序計數器PC、數據指針DPTR和堆棧指針SP。

程序計數器PC:PC中存放即將執行的下一條指令的地址。改變PC中的內容就可改變程序執行的方向。它是一個16位寄存器,可對64KB程序寄存器直接尋址。PC是一個獨立的寄存器,隨時指向將要執行的指令的地址,并有內容自動加1的功能。

數據指針DPTR:16位數據指針,它由兩個8位的寄存器DPH與DPL組成,一般作為訪問外部數據存儲器的地址指針使用,保存一個16位的地址,CPU也可以對高位字節DPH、低位字節DPL單獨進行操作。

堆棧指針SP:是一個8位的專用寄存器,它用于指明堆棧頂部在內部RAM中的位置,可由軟件設置初始值。系統復位后,SP初始化為07H,使得堆棧實際上由08H單元開始,但在實際應用中,SP指針一般被設置在30H~0FFH的范圍內。在存取數據時遵循“先進后出,后進先出”的原則,數據進入堆棧前SP加1,數據退出堆棧后SP減1。

(4)CPU時序。CPU時序通常是指CPU在執行各類指令時所需的控制信號在時間上的先后次序。CPU取出一條指令至該指令執行完所需的時間稱為指令周期,它以機器周期為單位。一個機器周期是指CPU完成一個基本操作所需要的時間,一個機器周期包含6個狀態周期:S1,S2,…,S6,每個狀態周期又分為兩拍,稱為P1和P2。CPU就以P1

和P2為基本節拍指揮單片機各個部件協調地工作。振蕩周期指的是振蕩信號源為單片機提供的定時信號的周期,為振蕩頻率的倒數,一個機器周期包括12個振蕩周期,分別編

號為S1P1,S1P2,S2P1,…,S6P2。

MCS-51單片機典型的指令周期一般為一個或兩個機器周期。只有MUL和DIV指令占用4個機器周期。

每一條指令的執行都包括讀取和執行兩個階段。圖2-4所示的是幾種典型指令的讀取和執行時序。由于無法觀察到內部時鐘信號,只能用XTAL2端的振蕩信號和地址鎖存允許信號ALE供參考。圖2-4(a)和(b)分別表示了單字節單周期和雙字節單周期指令的時序;而圖2-4(c)和(d)則分別表示了單字節雙周期和MOVX指令的時序。

圖2-4 MCS-51指令執行時序

(a)單字節單周期指令,例如:INC A;(b)雙字節單周期指令,例如:ADD A,#data;(c)單字節

雙周期指令,例如:INC DPTR;(d)訪問外部RAM指令MOVX(單字節雙周期)

執行一條單周期指令時,在S1P2開始讀取指令操作碼并鎖存到指令寄存器中。如果是一條雙字節指令,在同一個機器周期的S4P2開始讀取第二個字節。如果是一條單字節指令,在S4P2仍有一次讀操作,但這次讀取的指令操作碼是無效的,而且程序計數器PC也不加1。不管上述何種情況,讀指令操作都在S6P2結束時執行完畢。

在訪問程序存儲器的每個機器周期中,ALE信號兩次有效,第一次在S1P2和S2P1期間,第二次在S4P2和S5P1期間。ALE信號的有效寬度為一個狀態周期。ALE信號出現一次,CPU就進行一次取指令操作。所以,在一個機器周期中,通常從ROM中進行兩次取指令操作,但訪問片外數據存儲器(執行MOVX指令)時,在第二個機器周期不發出第一個ALE信號。這種情況下,ALE信號不是周期性發生的。因此,在不使用外部RAM的系統中,ALE信號是以1/6時鐘頻率周期性發生的,它可以給外設提供定時信號。

對片外數據存儲器進行讀寫操作使用的是MOVX指令,它是一條單字節雙周期指令。執行時,在第一個機器周期的S1P2時開始讀取指令操作碼,而在S4P2時雖然也進行一次讀指令操作,但讀取的指令操作碼不被處理。從S5P1時開始送出片外數據存儲器的地址,在第二個機器周期的S1P1時,RD或WR信號開始有效,用來選通RAM芯片,進行讀/寫數據操作,在此期間不產生ALE有效信號,所以,第二個機器周期不產生取指令操作。

三、引腳功能說明

MCS51是標準的40引腳雙列直插式集成電路芯片,如圖25所示。按其功能可分

為電源、時鐘、控制和I/O接口四大部分。

1.電源引腳

VCC:芯片主電源,正常工作時接+5V。

VSS:電源地線。

2.時鐘引腳

XTAL1與XTAL2為內部振蕩器的兩條引出線。3.控制引腳

(1)ALE/PROG:地址鎖存控制信號/編程脈沖

圖2-5 MCS-51引腳圖

輸入端。在擴展系統時,ALE用于控制把P0口輸出的低8位地址鎖存起來,以實現低8位地址和數據的隔離,P0口作為數據地址復用口線。當訪問單片機外部程序或數據存儲器或外接I/O口時,ALE輸出脈沖的下降沿用于低8位地址的鎖存信號;即使不訪問單片機外部程序或數據存儲器或外接I/O口,ALE端仍以晶振頻率的1/6輸出脈沖信號,因此可作為外部時鐘或外部定時信號使用。但應注意,此時不能訪

問單片機外部程序、數據存儲器或外設I/O接口。

對于EEPROM型單片機(89C51)或EPROM型單片機(8751),在EEPROM或EPROM編程期間,該引腳用來輸入一個編程脈沖(PROG)。

(2)PSEN:片外程序存儲器讀選通信號。在CPU向片外程序存儲器讀取指令和常數時,每個機器周期PSEN兩次低電平有效。但在此期間,每當訪問外部數據存儲器或I/O接口時PSEN無效出現。

(3)EA/VPP:訪問程序存儲器控制信號/編程電源輸入端。當該引腳EA信號為低電平時,只訪問片外程序存儲器,不管片內是否有程序存儲器;當該引腳為高電平時,單片機訪問片內的程序存儲器。

對于EEPROM型單片機(89C51)或EPROM型單片機(8751),在EEPROM或

EPROM編程期間,該引腳用于施加一個+12V或+21V的電源。

(4)RST/VPD:復位/掉電保護信號輸入端。當振蕩器運行時,在該引腳加上一個兩個機器周期以上的高電平信號,就能使單片機回到初始狀態,即進行復位。

掉電期間,該引腳可接上備用電源(VPD)以保持內部RAM的數據。

4.I/O引腳

MCS-51單片機有四個雙向8位輸入/輸出口P0~P3口,共32個I/O引腳。

主站蜘蛛池模板: 专栏| 宜良县| 江油市| 盘山县| 乌兰察布市| 镇平县| 沁阳市| 明溪县| 芜湖县| 休宁县| 罗定市| 措勤县| 澄城县| 乌鲁木齐市| 舞钢市| 玉龙| 罗江县| 茶陵县| 会昌县| 焉耆| 太和县| 天镇县| 九龙城区| 林西县| 拉孜县| 蓬莱市| 铁岭市| 石楼县| 汉寿县| 宿松县| 太康县| 乐清市| 大关县| 黑山县| 康定县| 高碑店市| 永城市| 綦江县| 宁强县| 开远市| 威宁|