版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章單片機(jī)基本結(jié)構(gòu)和工作原理2.1單片機(jī)的組成和內(nèi)部結(jié)構(gòu)2.2單片機(jī)的外部引腳及功能2.3單片機(jī)的存儲器結(jié)構(gòu)2.4單片機(jī)的I/O電路2.5單片機(jī)的輔助電路2.6單片機(jī)的工作時(shí)序和工作方式思考與練習(xí)
2.1單片機(jī)的組成和內(nèi)部結(jié)構(gòu)
2.1.1單片機(jī)的組成
單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和I/O端口等多種基本功能部件,如圖2-1所示。單片機(jī)有基本型和增強(qiáng)型兩種,基本型的代表產(chǎn)品為8051,增強(qiáng)型的代表產(chǎn)品為8052,兩者的主要區(qū)別在于內(nèi)部存儲器的大小和定時(shí)器/計(jì)數(shù)器的個數(shù)不同。圖2-1MCS51單片機(jī)的功能框圖
單片機(jī)內(nèi)部通常包含下列一些部件:
·一個8位CPU;
·一個片內(nèi)振蕩器及時(shí)鐘電路;
·4KBROM程序存儲器(8031沒有片內(nèi)ROM,增強(qiáng)型為8KB);
·128BRAM數(shù)據(jù)存儲器(增強(qiáng)型為256B);
·兩個16位定時(shí)器/計(jì)數(shù)器(增強(qiáng)型為三個);
·可尋址64KB外部數(shù)據(jù)存儲器和64KB外部程序存儲器空間的控制電路;
·32條可編程的I/O口(四個8位并行I/O端口);
·一個可編程全雙工串行口;
·具有五個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)(增強(qiáng)型為六個中斷源)。
2.1.2單片機(jī)的內(nèi)部邏輯結(jié)構(gòu)
單片機(jī)的各功能部件通過內(nèi)部總線連接在一起,其中包括算術(shù)邏輯單元(ALU)、累加器(ACC或A)、ROM、RAM、指令寄存器(IR)、程序計(jì)數(shù)器(PC)、定時(shí)器/計(jì)數(shù)器、I/O接口電路、程序狀態(tài)字寄存器(PSW)、堆棧指針(SP)、數(shù)據(jù)指針(DPTR)等,詳細(xì)的內(nèi)部結(jié)構(gòu)如圖2-2所示。圖2-2MCS51單片機(jī)的內(nèi)部結(jié)構(gòu)
2.1.3CPU的內(nèi)部結(jié)構(gòu)
單片機(jī)內(nèi)部核心部分是一個8位高性能微處理器CPU,由運(yùn)算器和控制器等部件組成(即圖2-2中虛線框內(nèi)部分),它是單片機(jī)的頭腦和心臟,用以完成各種運(yùn)算和控制操作。
1.運(yùn)算器
運(yùn)算器的主要功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算、位運(yùn)算、數(shù)據(jù)中轉(zhuǎn)與處理,并將操作結(jié)果的狀態(tài)信息送至程序狀態(tài)字寄存器中。運(yùn)算器主要包括算術(shù)邏輯單元、累加器、B寄
存器、暫存寄存器、程序狀態(tài)字寄存器等。
(1)算術(shù)邏輯單元(ALU)。算術(shù)邏輯單元是運(yùn)算器的核心部件,實(shí)質(zhì)上是全加器,可以用于對數(shù)據(jù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算,還能對數(shù)據(jù)進(jìn)行與、或、異或、循環(huán)、置1、清0等邏輯運(yùn)算,并具有數(shù)據(jù)傳送、程序轉(zhuǎn)移等功能。ALU不能由程序讀寫。
(2)累加器(ACC或A)。累加器是一個8位寄存器。很多運(yùn)算都要通過累加器提供操作數(shù),多數(shù)運(yùn)算結(jié)果也在ACC中存放。
(3)B寄存器。B寄存器是為乘法和除法而設(shè)置的。在進(jìn)行乘法和除法運(yùn)算時(shí),A和B組成寄存器對,記為AB。在不執(zhí)行乘法和除法運(yùn)算時(shí),B寄存器可以作為一個普通寄存
器使用。
(4)暫存寄存器(TMP1和TMP2)。暫存寄存器用于暫時(shí)存儲數(shù)據(jù)總線或其他寄存器送來的操作數(shù),作為ALU的數(shù)據(jù)源,向ALU提供操作數(shù)。暫存寄存器不能由程序讀寫。
(5)程序狀態(tài)字寄存器(PSW)。程序狀態(tài)字寄存器是一個8位的專用寄存器,主要用于存放當(dāng)前運(yùn)算結(jié)果的狀態(tài)。
2.控制器
控制器的主要功能是識別指令,并根據(jù)指令的性質(zhì)控制單片機(jī)內(nèi)部的各個功能部件,使其協(xié)調(diào)工作。單片機(jī)執(zhí)行指令嚴(yán)格受控制器的控制,它們從程序存儲器中讀取指令,送
入寄存器,然后進(jìn)行譯碼,譯碼的結(jié)果與時(shí)序電路結(jié)合,發(fā)出操作信號。程序的執(zhí)行就是不斷重復(fù)這一過程。
控制器包含程序計(jì)數(shù)器、指令寄存器、指令譯碼器、數(shù)據(jù)指針、堆棧指針、定時(shí)與控制邏輯電路等。
(1)程序計(jì)數(shù)器(PC)。程序計(jì)數(shù)器是一個16位專用寄存器,用于存放將要執(zhí)行指令的地址,具有自動加1功能。PC沒有對應(yīng)的寄存器,程序無法直接設(shè)置其中的數(shù)據(jù)。當(dāng)CPU取指時(shí),PC的內(nèi)容首先送至內(nèi)部地址總線上,然后從程序存儲器中取出指令,PC內(nèi)容自動加1,以保證程序的順序執(zhí)行。
(2)指令寄存器(IR)。指令寄存器是一個8位寄存器,用于寄存等待執(zhí)行的指令。IR不能由程序讀寫。
(3)指令譯碼器(ID)。指令譯碼器對指令寄存器中的指令進(jìn)行譯碼,產(chǎn)生執(zhí)行該指令所需的一系列控制時(shí)序信號,以執(zhí)行相應(yīng)的操作。ID不能由程序讀寫。
(4)數(shù)據(jù)指針(DPTR)。數(shù)據(jù)指針(DPTR)是一個16位專用寄存器,通常在訪問外部數(shù)據(jù)存儲器時(shí)作地址指針使用。
(5)堆棧指針(SP)。堆棧指針(SP)是一個8位專用寄存器,用于存放堆棧棧頂?shù)牡刂贰?/p>
(6)定時(shí)與控制邏輯電路。定時(shí)與控制邏輯電路是控制器的核心部件之一,它的任務(wù)是產(chǎn)生各種控制信號,協(xié)調(diào)各功能部件的工作。單片機(jī)內(nèi)部設(shè)有振蕩電路,只需外接石英晶體(晶振)和微調(diào)電容就可產(chǎn)生振蕩脈沖信號,經(jīng)過二分頻后,生成時(shí)鐘信號,是單片機(jī)的基本節(jié)拍,單片機(jī)就是在這個節(jié)拍的控制下協(xié)調(diào)工作的。
2.1.4單片機(jī)的其他結(jié)構(gòu)模塊
1.內(nèi)部RAM
MCS51單片機(jī)的內(nèi)部RAM用于存放單片機(jī)運(yùn)行時(shí)的數(shù)據(jù),其尋址范圍為256字節(jié),其中低128字節(jié)可以作為內(nèi)部隨機(jī)訪問存儲器,高128字節(jié)被特殊功能寄存器占用。
2.內(nèi)部ROM
MCS-51單片機(jī)中的ROM主要用來存放程序,也可以存放一些常數(shù)和表格。單片機(jī)運(yùn)行時(shí),ROM中的內(nèi)容是不能修改的。MCS-51系列單片機(jī)可分為內(nèi)部無ROM型(如
8031)和內(nèi)部有ROM型(如8051)兩種。在多數(shù)情況下,無論是8031還是8051,都必須根據(jù)實(shí)際需要外接EPROM型程序存儲器。而對于后來出現(xiàn)的,內(nèi)部含有E2PROM或Flash
ROM類型程序存儲器的AT89CXX/AT89SXX系列單片機(jī)(如市面上最常見的AT89S51和AT89C51,內(nèi)置4KB的FlashROM),通常不需要外部擴(kuò)展程序存儲器。
3.定時(shí)器/計(jì)數(shù)器
MCS51單片機(jī)有兩個16位定時(shí)器/計(jì)數(shù)器,能夠?qū)崿F(xiàn)精確定時(shí)和對外部脈沖信號計(jì)數(shù),可以用于定時(shí)控制、延時(shí),以及對外部事件進(jìn)行計(jì)數(shù)和檢測等。
4.中斷
MCS51單片機(jī)有五個中斷源,即兩個外部中斷、兩個定時(shí)/計(jì)數(shù)中斷和一個串行通信中斷,同時(shí)有兩個中斷優(yōu)先級。
5.串行通信口
MCS51單片機(jī)有一個采用通用異步工作方式的全雙工串行通信口(串行口),可以同時(shí)接收和發(fā)送數(shù)據(jù)。
6.I/O口
MCS-51單片機(jī)有四個8位的并行端口,分別為P0、P1、P2和P3,這些端口可以用于輸入或輸出,除了P1外,每個I/O口還有第二功能(詳見2.4節(jié))。
7.內(nèi)部總線
如圖2-2所示,單片機(jī)所有功能模塊都是通過內(nèi)部總線連接起來的,從而構(gòu)成一個完整的單片計(jì)算機(jī)系統(tǒng)。單片機(jī)內(nèi)部的地址信號、數(shù)據(jù)信號和控制信號都是通過內(nèi)部總線傳
送的。
2.2單片機(jī)的外部引腳及功能
MCS-51系列單片機(jī)根據(jù)不同的型號,其引腳數(shù)目和封裝形式也有很大差別。常見的有40引腳的雙列直插(DIP)封裝形式和44引腳的PLCC封裝形式,新型的單片機(jī)還有44引腳的TQFP封裝形式。圖2-3所示是兩種常見封裝形式的引腳配置圖。圖2-389C51芯片的引腳及封裝形式
2.2.1I/O引腳
I/O引腳即輸入/輸出端口,在某一時(shí)刻只能作為輸入口或輸出口使用,所以是準(zhǔn)雙向口,MCS51單片機(jī)有P0(
P0.0~P0.7)、P1(P1.0~P1.7)、P2(P2.0~P2.7)、P3(P3.0~P3.7)四個8位準(zhǔn)雙向輸入/輸出端口,每個端口都有鎖存器、輸出驅(qū)動器和輸入緩沖器。四個I/O端口都可作為輸入/輸出口使用,其中P0、P2和P3口還可以組成三總線,用于外圍芯片擴(kuò)展(詳見第7章)。
2.2.2控制引腳
RST:復(fù)位輸入端,高電平有效。當(dāng)振蕩器運(yùn)行時(shí),在
在RST引腳上出現(xiàn)兩個機(jī)器周期以上的高電平使單片機(jī)復(fù)位。
ALE/PROG:當(dāng)訪問外部存儲器時(shí),ALE(地址鎖存使能)的輸出用于鎖存地址的低位字節(jié);當(dāng)不訪問外部存儲器時(shí),A
ALE端以固定頻率(為振蕩頻率的1/6)輸出脈沖信號,所以ALE可以用作其他器件的時(shí)鐘源。需要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí),將跳過一個ALE脈沖。在對片內(nèi)ROM編程(寫數(shù)據(jù))時(shí),該引腳的第二功能用于輸入編程脈沖PROG。
PSEN:外部程序存儲器取指令使能端,低電平有效。在訪問外部ROM時(shí),該信號自動產(chǎn)生,每個機(jī)器周期輸出兩個脈沖。
EA/VPP:外部程序訪問允許端。當(dāng)EA為高電平時(shí),CPU從內(nèi)部程序存儲器執(zhí)行指令,當(dāng)PC值超過片內(nèi)程序存儲器最大地址范圍時(shí),將自動轉(zhuǎn)向外部存儲器執(zhí)行程序。當(dāng)EA為低電平時(shí),CPU只從外部程序存儲器執(zhí)行指令。在片內(nèi)ROM編程期間,該引腳的第二功能用于加12V的編程允許電源VPP。
2.2.3電源與晶振引腳
VCC:電源端,通常的電源電壓為+5V。
GND:接地端。
XTAL1:接外部晶振的一個引腳。在單片機(jī)內(nèi)部,它是構(gòu)成片內(nèi)振蕩器反相放大器的輸入端。當(dāng)采用外部時(shí)鐘時(shí),該引腳接外部時(shí)鐘信號。
XTAL2:接外部晶振的另一個引腳。在單片機(jī)內(nèi)部,它是構(gòu)成片內(nèi)振蕩器反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),此引腳應(yīng)懸空。
2.3單片機(jī)的存儲器結(jié)構(gòu)
從物理上看,MCS-51單片機(jī)有4個存儲空間:內(nèi)部程序存儲器、外部(片外)程序存儲器、內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器。從開發(fā)者的角度看,MCS-51單片機(jī)有3個存儲地址空間:芯片內(nèi)外統(tǒng)一的程序存儲空間、內(nèi)部數(shù)據(jù)存儲空間和外部數(shù)據(jù)存儲空間。
2.3.1程序存儲器
程序存儲器常用來存放程序、表格和常數(shù),也稱為ROM。ROM以程序計(jì)數(shù)器(PC)作為地址指針,通過16位地址總線尋址,可尋址的地址空間為64KB,地址范圍為0000H~FFFFH。MCS51單片機(jī)可分為內(nèi)部無ROM型(8031)和內(nèi)部有ROM型(8051)兩種。
1.片內(nèi)與片外程序存儲器的選擇
對于無內(nèi)部ROM型的單片機(jī),必須使用外部ROM,這時(shí)EA引腳必須接低電平。對于有內(nèi)部ROM型的單片機(jī),但不使用內(nèi)部ROM,如8051內(nèi)部是掩模ROM,一般不用此ROM,這時(shí)EA引腳也必須接低電平,外部ROM的地址從0000H開始。對于內(nèi)部含有FlashROM的AT89C/AT89S系列單片機(jī),可以使用內(nèi)部ROM。如果要使用內(nèi)部ROM,則則EA引腳必須接高電平,當(dāng)程序執(zhí)行超出內(nèi)部存儲空間時(shí),單片機(jī)會自動轉(zhuǎn)向外部空間,內(nèi)部ROM的地址范圍是0000H~0FFFH,外部ROM的地址從1000H開始。無論是否使用內(nèi)部ROM,其程序存儲器的地址結(jié)構(gòu)和組織結(jié)構(gòu)是一樣的,如圖2-4所示。圖2-4程序存儲器
2.程序存儲器低端的特殊單元
在程序存儲器中,前面若干個單元地址是中斷程序的入口地址,在編寫程序時(shí)要把這些單元預(yù)先進(jìn)行處理(詳見第4章),如表2-1所示。其中0000H為單片機(jī)復(fù)位后執(zhí)行的
第一條指令的存放地址。其余為中斷向量,即單片機(jī)中斷服務(wù)程序的第一條指令存放地址。
3.程序存儲器中的程序代碼及其觀察
在單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程中,程序存儲器中程序代碼(十六進(jìn)制)可以在KeilμVision集成開發(fā)環(huán)境的觀察窗口中看到(詳見9.2.4小節(jié)),程序存儲器的映射關(guān)系及觀察界面如圖2-5所示。圖2-5程序存儲器映射關(guān)系及觀察界面
2.3.2數(shù)據(jù)存儲器
數(shù)據(jù)存儲器常用來存放數(shù)據(jù),也稱為RAM。MCS-51單片機(jī)的數(shù)據(jù)存儲器無論在物理上或邏輯上都分為兩個地址空間:一個為內(nèi)部數(shù)據(jù)存儲器(內(nèi)部RAM),如圖2-6所示,
訪問內(nèi)部RAM用MOV指令,使用8位地址,其尋址空間為256B;另一個為外部數(shù)據(jù)存儲器(外部RAM),如圖2-7所示,訪問外部RAM用MOVX指令,通常用數(shù)據(jù)指針DPTR來尋址,使用16位地址,其尋址空間為64KB。圖2-6內(nèi)部數(shù)據(jù)存儲器圖2-7外部數(shù)據(jù)存儲器
內(nèi)部RAM有最靈活的地址空間分割,它分成物理上獨(dú)立而又性質(zhì)不同的幾個區(qū):由00H~7FH(0~127)單元組成的低128字節(jié)地址空間的RAM區(qū);由80H~FFH(128~255)單元組成的高128字節(jié)地址空間的特殊功能寄存器(又稱SFR)區(qū)。
內(nèi)部RAM按使用方法分為以下幾個部分。
1.工作寄存器區(qū)
單片機(jī)對工作寄存器的操作具有指令數(shù)量多、程序代碼短、執(zhí)行速度快的特點(diǎn)。在程序設(shè)計(jì)時(shí),應(yīng)盡可能地使用工作寄存器。內(nèi)部RAM的00H~1FH區(qū)域?yàn)楣ぷ骷拇嫫鲄^(qū)。
工作寄存器一共有4組,每組又包括8個寄存器,記為R0~R7。4組工作寄存器可根據(jù)PSW(程序狀態(tài)字寄存器,詳見2.3.3小節(jié))中的RS1、RS0選擇,如表2-2所示。
2.位尋址區(qū)
內(nèi)部RAM的20H~2FH區(qū)域?yàn)槲粚ぶ穮^(qū),見表2-3,這16個單元中的每一位都有一個位地址,位地址范圍為0H~7FH。位尋址區(qū)的每一位都可以視作軟件觸發(fā)器,可以
由程序直接進(jìn)行位處理。通常把程序的各種狀態(tài)標(biāo)志、位控制變量等設(shè)在位尋址區(qū)內(nèi)。同樣,位尋址區(qū)的RAM單元也可以作為一般的數(shù)據(jù)存儲器按字節(jié)使用。
3.普通存儲區(qū)
內(nèi)部RAM的30H~7FH區(qū)域?yàn)槠胀ù鎯^(qū),只能按字節(jié)尋址,一般用于存放程序執(zhí)行過程中的臨時(shí)數(shù)據(jù)。
4.堆棧區(qū)
在一個程序中,往往需要設(shè)定一個后進(jìn)先出(或者先進(jìn)后出)的緩沖區(qū),用以保存某些重要數(shù)據(jù)和地址,這種后進(jìn)先出的緩沖區(qū)稱為堆棧區(qū)。堆棧區(qū)原則上可以設(shè)在內(nèi)部RAM的任意區(qū)域內(nèi),只需注意不要與已使用的RAM重疊。棧頂?shù)奈恢糜啥褩V羔楽P確定。
2.3.3特殊功能寄存器
單片機(jī)內(nèi)的鎖存器、定時(shí)器、串行口數(shù)據(jù)緩沖器以及各種控制寄存器和狀態(tài)寄存器都是以特殊功能寄存器(SFR)形式出現(xiàn)的,它們分布在內(nèi)部RAM的80H~FFH地址空間范
圍內(nèi)。MCS-51基本型單片機(jī)有21個SFR,表2-4給出了MCS-51單片機(jī)的特殊功能寄存器的名稱和地址。
在特殊功能寄存器中,地址尾數(shù)是0或8的寄存器(比如ACC、PSW、SCON等)不僅可以按字節(jié)訪問,也可以按位訪問。特殊功能寄存器A、B、PSW、SP、DPTR等在RAM中的映射關(guān)系如圖2-8所示。圖2-8特殊功能寄存器在RAM中的映射及觀察界面
下面介紹幾個常用的特殊功能寄存器。
1.累加器
累加器是一個8位的寄存器,ACC表示地址(E0H),寄存器名稱為A。它通過暫存器與ALU相連,它是CPU工作中使用最頻繁的寄存器,用來存放一個操作數(shù)或中間結(jié)果。
累加器在指令中通常用“A”表示,在位操作和堆棧操作指令中則用“ACC”表示。MCS-51單片機(jī)中,只有一個累加器,大部分單操作數(shù)指令的操作數(shù)取自累加器,許多雙操作數(shù)指令的一個操作數(shù)也取自累加器,在變址尋址方式中累加器被作為變址寄存器使用。
2.程序狀態(tài)字寄存器
程序狀態(tài)字寄存器(PSW)是一個8位的專用寄存器,主要用于存放當(dāng)前運(yùn)算結(jié)果的狀態(tài)。地址為D0H,可以按位進(jìn)行訪問,格式如下(第一行是位地址,第二行是位名稱,若不能按位操作,則第一行為空格。本書類似內(nèi)容均采用此種表示方法):
其中F0、RS1、RS0可以用軟件設(shè)置(即通過編寫程序設(shè)置),Cy、Ac、OV和P由CPU決定(即由單片機(jī)內(nèi)部自動設(shè)置)。
Cy(進(jìn)位標(biāo)志位):當(dāng)有進(jìn)位或借位時(shí),Cy=1;否則,Cy=0。在執(zhí)行某些算術(shù)和邏輯指令時(shí),可以被硬件(指單片機(jī)內(nèi)部的CPU,表示功能可以自動完成)或軟件(表示開發(fā)者編寫的程序)置1或清0。在布爾處理器中,它被作為位累加器使用。Cy在程序中一般用C表示。
Ac(輔助進(jìn)位標(biāo)志):當(dāng)進(jìn)行加減運(yùn)算時(shí),若低4位向高4位產(chǎn)生進(jìn)位或借位,則由硬件將其置1,否則清0,Ac被用于BCD碼調(diào)整。
F0(用戶標(biāo)志位):F0是開發(fā)者可以定義的一個狀態(tài)標(biāo)記,用軟件來使它置1或清0。該標(biāo)志位狀態(tài)一經(jīng)設(shè)定,可由軟件檢測F0的值來控制程序執(zhí)行的方向。
RS1、RS0(工作寄存器組選擇控制位):可以用軟件來置1或清0,以改變工作寄存器組在RAM中的區(qū)域。RS1、RS0與工作寄存器組的對應(yīng)關(guān)系如表2-2所示。
OV(溢出標(biāo)志位):當(dāng)執(zhí)行算術(shù)運(yùn)算指令時(shí),由硬件置1或清0,以指示溢出狀態(tài)。D6位和D7位不同時(shí)產(chǎn)生進(jìn)位或借位時(shí),OV=1,否則OV=0。
P(奇偶標(biāo)志位):每次指令執(zhí)行結(jié)束后,都由硬件來置1或清0,以表示累加器A中1的個數(shù)的奇偶性。若1的個數(shù)為奇數(shù),則P置1,否則P清0。
3.數(shù)據(jù)指針
數(shù)據(jù)指針(DPTR)是一個16位的專用地址指針寄存器。編程時(shí),DPTR既可以作為16位寄存器,也可以拆成兩個獨(dú)立的8位寄存器,即DPH(高8位字節(jié))和DPL(低8位字節(jié)),分別占據(jù)83H和82H兩個地址。DPTR通常在訪問外部數(shù)據(jù)存儲器時(shí)作地址指針使用,用于存放外部數(shù)據(jù)存儲器的存儲單元地址。由于外部數(shù)據(jù)存儲器的尋址范圍為64KB,故把DPTR設(shè)計(jì)為16位,通過DPTR寄存器間接尋址方式可以訪問0000H~FFFFH全部64KB的外部數(shù)據(jù)存儲器空間。
4.堆棧指針
堆棧指針(SP)是一個8位寄存器,地址是81H,用于指示堆棧頂部在內(nèi)部RAM中的位置??梢园裇P看成一個地址指針,它總是指向堆棧頂端的存儲單元。MCS-51單片機(jī)
的堆棧是增量式的,即進(jìn)棧時(shí),SP的內(nèi)容是增加的(SP指針先自動加1,然后向SP指針指向的存儲單元送入一個數(shù)),出棧時(shí),SP的內(nèi)容是減少的。單片機(jī)復(fù)位后,SP初始化默認(rèn)值為07H,使得堆棧事實(shí)上由08H單元開始。
5.I/O端口的專用寄存器
P0~P3口寄存器實(shí)際上就是P0~P3(引腳)專用的鎖存器,用P0~P3表示。MCS51系列單片機(jī)沒有專門的端口操作指令,均采用統(tǒng)一的MOV指令,直接讀寫P0~P3,使用極為方便。
6.串行數(shù)據(jù)緩沖器
串行數(shù)據(jù)緩沖器(SBUF)用于存放待發(fā)或已接收到的數(shù)據(jù),它實(shí)際上由兩個獨(dú)立的寄存器組成:一個是發(fā)送緩沖器,另一個是接收緩沖器。這兩個寄存器共享一個地址99H。
2.4單片機(jī)的I/O電路
MCS-51單片機(jī)本身提供了四個8位的并行接口,分別記為P0、P1、P2和P3,共有32根I/O口線。P0~P3都是準(zhǔn)雙向端口,每一根I/O口線都能獨(dú)立地用作輸入或輸出(可以按位訪問)。I/O口作為輸入口之前,應(yīng)先向端口寫1,以保證讀入正確的輸入狀態(tài)。單片機(jī)初始上電時(shí),所有的I/O口均處于高電平,這時(shí)I/O口直接作為輸入口,則不需要向端口寫1。
2.4.1P0口
1.P0口的結(jié)構(gòu)
P0口是一個多功能的8位雙向并行接口。P0口某位的內(nèi)部電路結(jié)構(gòu)如圖2-9所示,它包含一個輸出鎖存器(D觸發(fā)器)、兩個三態(tài)緩沖器(三態(tài)門1和三態(tài)門2)、一個輸出驅(qū)
動電路和一個輸出控制電路。圖2-9P0口的內(nèi)部電路結(jié)構(gòu)
2.P0口的功能
MCS-51單片機(jī)的P0口有兩種功能:通用I/O接口或地址/數(shù)據(jù)分時(shí)復(fù)用總線。
1)通用I/O接口
輸出:CPU內(nèi)部發(fā)出控制電平0封鎖與門,使與門輸出為0,上方的場效應(yīng)管V1處于截止?fàn)顟B(tài),因此輸出驅(qū)動級是漏極開路的開漏電路。這樣,當(dāng)寫脈沖加在D觸發(fā)器的CLK端時(shí),與內(nèi)部數(shù)據(jù)總線相連的D端數(shù)據(jù)取反后出現(xiàn)在Q端,再經(jīng)下方的場效應(yīng)管V2反相,在P0引腳上出現(xiàn)的數(shù)據(jù)就正好是內(nèi)部總線的數(shù)據(jù)。但要注意,由于P0口輸出驅(qū)動電路工作于開漏狀態(tài),因此P0作為輸出口時(shí)需要外接上拉電阻。
輸入:P0口作為I/O口使用時(shí)的另一種情況是數(shù)據(jù)由引腳輸入,這時(shí)使用下方的三態(tài)輸入緩沖器(三態(tài)門2)直接讀端口引腳處的數(shù)據(jù)。以上操作稱為“讀信號”操作。
2)地址/數(shù)據(jù)分時(shí)復(fù)用總線
在單片機(jī)應(yīng)用系統(tǒng)中,P0口作為地址/數(shù)據(jù)總線使用分為兩種情況。
一種是以P0引腳輸出地址/數(shù)據(jù)信息。這時(shí),CPU內(nèi)部發(fā)出控制信號1,打開與門,使得多路開關(guān)將內(nèi)部地址/數(shù)據(jù)線經(jīng)反相器與場效應(yīng)管的柵極接通。若地址/數(shù)據(jù)信號為0,則該0信號一方面經(jīng)與門使上方的場效應(yīng)管V1截止,另一方面經(jīng)反相器使下方的場效應(yīng)管V2導(dǎo)通,從而使引腳輸出0信號;反之,若地址/數(shù)據(jù)信號為1,則上方的場效應(yīng)管V1導(dǎo)通,下方的場效應(yīng)管V2截止,引腳輸出1信號。顯然在上述情況中,不必外接上拉電阻。
另一種情況是P0口由與其連接的外部存儲器輸入數(shù)據(jù)。為了確保數(shù)據(jù)的正確輸入,CPU在訪問外部存儲器期間,會在讀入數(shù)據(jù)之前自動地向P0口的鎖存器寫入FFH。因此,對于用戶而言,當(dāng)P0口作為地址/數(shù)據(jù)總線使用時(shí),它是一個真正的雙向口。
3.負(fù)載能力
P0口輸出時(shí)能驅(qū)動8個LSTTL負(fù)載,即輸出電流不小于800μA。
2.4.2P1口
1.P1口的結(jié)構(gòu)
圖2-10所示是P1口其中1位的結(jié)構(gòu)原理圖,P1口由8個這樣的電路組成。圖中的鎖存器起輸出鎖存作用。場效應(yīng)管與上拉電阻組成輸出驅(qū)動器,以增大負(fù)載能力。三態(tài)門
2是輸入緩沖器,三態(tài)門1在端口操作時(shí)使用。圖2-10P1口的內(nèi)部電路結(jié)構(gòu)
2.P1口的功能
MCS-51單片機(jī)的P1口只有一種功能———通用I/O接口。
P1口工作于輸出方式:此時(shí)數(shù)據(jù)data經(jīng)內(nèi)部總線送入鎖存器鎖存。如果某位的數(shù)據(jù)為1,則該位鎖存器輸出端Q=1,Q=0,使V1截止,從而在引腳P1.X上出現(xiàn)高電平;反之,如果數(shù)據(jù)為0,則Q=1,Q=0,使V1導(dǎo)通,P1.X上出現(xiàn)低電平。
P1口工作于輸入方式:控制器發(fā)出的讀信號打開三態(tài)門2,引腳P1.X上的數(shù)據(jù)經(jīng)三態(tài)門2進(jìn)入芯片的內(nèi)部總線。在執(zhí)行輸入操作時(shí),如果鎖存器原來寄存的數(shù)據(jù)Q=0,那么由于Q=1,將使V1導(dǎo)通,引腳被始終鉗位在低電平上,不可能輸入高電平。為此,用作輸入前,必須先用輸出指令置Q=1,使V1截止。單片機(jī)復(fù)位后,P1口線的狀態(tài)都是高電平,可以直接用作輸入。
3.負(fù)載能力
P1口輸出時(shí)能驅(qū)動4個LSTTL負(fù)載,即輸出電流不小于400μA。
2.4.3P2口
1.P2口的結(jié)構(gòu)
圖2-11所示是P2口其中1位的結(jié)構(gòu)原理圖,P2口由8個這樣的電路組成。P2口的位結(jié)構(gòu)比P1口多了一個轉(zhuǎn)換控制部分。圖2-11P2口的內(nèi)部電路結(jié)構(gòu)
2.P2口的功能
1)通用I/O接口
當(dāng)P2口作為通用I/O口使用時(shí),多路開關(guān)(MUX)打向鎖存器的輸出端Q,構(gòu)成一個準(zhǔn)雙向口。其功能與P1口相同,有輸入、輸出工作方式。
2)地址總線
P2口的另一種功能是作為系統(tǒng)擴(kuò)展的地址總線口。當(dāng)計(jì)算機(jī)從片外ROM中取指令,或者執(zhí)行訪問片外RAM、片外ROM的指令時(shí),多路開關(guān)打在右邊,P2口上出現(xiàn)程序計(jì)數(shù)器(PC)的高8位地址或數(shù)據(jù)指針(DPTR)的高8位地址(A7~A15,低8位地址由P0輸出)。上述情況下,鎖存器的內(nèi)容不受影響。所以,取指或訪問外部存儲器結(jié)束后,由于模擬開關(guān)打向左邊,使輸出驅(qū)動器與鎖存器Q端相連,引腳上將恢復(fù)原來的數(shù)據(jù)。
一般來說,如果系統(tǒng)擴(kuò)展了片外ROM,取指的操作將連續(xù)不斷,P2口不斷送出高8位地址,這時(shí)P2口就不應(yīng)再作為通用I/O口使用。如果系統(tǒng)擴(kuò)展了片外RAM,需要由P2口、P0口送出16位地址,則P2口也不再作為通用I/O接口。
3.負(fù)載能力
P2口的負(fù)載能力和P1口的相同,輸出時(shí)能驅(qū)動4個LSTTL輸入。
2.4.4P3口
1.P3口的結(jié)構(gòu)
圖2-12所示是P3口其中1位的結(jié)構(gòu)原理圖,P3口由8個這樣的電路組成。
圖中的鎖存器起輸出鎖存作用。P3口的8個鎖存器組成特殊功能寄存器,場效應(yīng)管V1與上拉電阻組成輸出驅(qū)動器,以增大負(fù)載能力。三態(tài)門2是輸入緩沖器,三態(tài)門1在端
口操作時(shí)使用,與非門在端口作為第二功能時(shí)使用。圖2-12P3口的內(nèi)部結(jié)構(gòu)
2.P3口的功能
1)通用I/O接口
MCS51單片機(jī)的P3口為多功能口。當(dāng)?shù)诙δ茌敵龆吮3指唠娖綍r(shí),與非門對鎖存器Q端是暢通的,這時(shí),P3口實(shí)現(xiàn)第一功能,可作為通用I/O口使用,而且是一個準(zhǔn)雙向I/O口,其功能與P1口的相同。
2)第二功能
P3口除了作為準(zhǔn)雙向通用I/O接口使用外,每一根線還具有第二種功能,如表2-5所示。
3.負(fù)載能力
P3口的負(fù)載能力和P1口的相同,輸出時(shí)能驅(qū)動4個LSTTL負(fù)載。
2.5單片機(jī)的輔助電路
輔助電路是單片機(jī)正常工作的必要條件。單片機(jī)輔助電路主要有時(shí)鐘電路和復(fù)位電路。時(shí)鐘電路給單片機(jī)提供時(shí)鐘脈沖,保證單片機(jī)按照自身的時(shí)序自動工作起來;復(fù)位電路能對單片機(jī)進(jìn)行初始化操作。對于AT89系列單片機(jī),只要加入了正確的時(shí)鐘電路和復(fù)位電路,就能構(gòu)成單片機(jī)最小系統(tǒng),即保證單片機(jī)系統(tǒng)正常工作的最簡系統(tǒng)。
2.5.1時(shí)鐘電路
單片機(jī)是一個典型的時(shí)序電路器件,需要時(shí)鐘電路提供時(shí)鐘脈沖以保證其按照“節(jié)拍”正常工作。振蕩器產(chǎn)生的信號送到CPU,作為CPU的時(shí)鐘信號,驅(qū)動CPU產(chǎn)生執(zhí)行指令
功能的機(jī)器周期。
MCS-51單片機(jī)片內(nèi)有一個由高增益反相放大器所構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,時(shí)鐘可以由內(nèi)部方式產(chǎn)生或由外部方式產(chǎn)生。
1.內(nèi)部方式
內(nèi)部方式是通過外接石英晶體器件和內(nèi)部振蕩電路共同形成時(shí)鐘電路。如圖2-13所示,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就產(chǎn)生自激振蕩。定時(shí)元
件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶振頻率可以在1.2~24MHz之間選擇,電容C1和C2的值為0~30pF,時(shí)鐘頻率基本上由晶振決定,電容的大小可起頻率微調(diào)作用。圖2-13使用內(nèi)部振蕩器的晶振連接
2.外部方式
外部方式是把外部已有的時(shí)鐘信號引入單片機(jī)內(nèi),即把外部振蕩器的信號直接連到XTAL1端,XTAL2端懸空不用,如圖2-14所示。對外部時(shí)鐘信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHz的方波信號。采用外部方式的好處是,可以通過外部時(shí)鐘頻率控制來改變單片機(jī)的機(jī)器周期,以降低電磁干擾(EMI)。一般應(yīng)用很少使用外部方式。圖2-14使用外部時(shí)鐘的連接
2.5.2復(fù)位電路和復(fù)位狀態(tài)
MCS-51系列單片機(jī)與其他微處理器一樣,在啟動時(shí)都需要復(fù)位,使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始工作。在單片機(jī)系統(tǒng)設(shè)計(jì)并制作完成后,就要上電工作,在上電初期,由于單片機(jī)內(nèi)部電壓不穩(wěn)定,程序執(zhí)行會混亂,因而要等到電壓穩(wěn)定后才讓單片機(jī)進(jìn)行工作。同時(shí),在單片機(jī)工作期間,由于外界干擾或其他原因使系統(tǒng)工作不正常,就需要進(jìn)行上電復(fù)位和手動復(fù)位操作。如果RST引腳上有一個高電平并維持2個機(jī)器周期(24個振蕩周期)或更多,則則CPU可響應(yīng)并將系統(tǒng)復(fù)位。
1.復(fù)位電路
單片機(jī)的復(fù)位可以通過多種方式實(shí)現(xiàn),對應(yīng)著不同的復(fù)位電路。復(fù)位的方法有三種,即上電復(fù)位、手動開關(guān)復(fù)位和WDT(看門狗)復(fù)位。
1)上電復(fù)位電路
上電復(fù)位電路如圖2-15所示。只要在復(fù)位輸入引腳RST上接一個電容至VCC端,下接一個電阻到地即可。對于CMOS型單片機(jī),由于在RST端內(nèi)部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1μF。圖2-15上電復(fù)位電路
2)手動復(fù)位電路
手動復(fù)位電路是上電復(fù)位和手動復(fù)位相結(jié)合的,主要用于單片機(jī)系統(tǒng)故障(死機(jī))時(shí)的重新啟動??梢匀藶榈卦趶?fù)位輸入端RST上加入高電平,一般采用的辦法是在RST端和
正電源VCC之間接一個按鈕。當(dāng)按下按鈕時(shí),VCC的+5V電平就會直接加到RST端,雖然按下按鈕的時(shí)間很短,但是也會使按鈕保持接通數(shù)十毫秒的時(shí)間,所以手動復(fù)位能滿足
復(fù)位的時(shí)間要求。手動復(fù)位電路如圖2-16所示。圖2-16手動復(fù)位電路
3)WDT復(fù)位電路
WDT復(fù)位電路(看門狗復(fù)位電路)是利用MAX705等WDT專用芯片來實(shí)現(xiàn)復(fù)位的電路,如圖2-17所示。WDT芯片內(nèi)有一個不受外部控制的計(jì)數(shù)器,上電后即自動計(jì)數(shù),一
旦計(jì)數(shù)溢出就發(fā)出對單片機(jī)的復(fù)位信號。為了不使計(jì)數(shù)器溢出,必須在計(jì)數(shù)器溢出前通過WDI口輸入清0信號,使計(jì)數(shù)器復(fù)位清0。圖2-17WDT復(fù)位電路
2.復(fù)位狀態(tài)
系統(tǒng)復(fù)位后,許多特殊功能寄存器都將恢復(fù)到初始狀態(tài)。各特殊功能寄存器的狀態(tài)如表2-6所示,其中×為隨機(jī)數(shù)。
手動復(fù)位或WDT復(fù)位后,片內(nèi)RAM和片外RAM的內(nèi)容保持不變,但在上電復(fù)位后為隨機(jī)數(shù)。
2.5.3單片機(jī)最小系統(tǒng)
最小應(yīng)用系統(tǒng)是指能維持單片機(jī)運(yùn)行的最簡單配置的系統(tǒng)。由于89C51單片機(jī)有片內(nèi)ROM,所以其最小應(yīng)用系統(tǒng)即為配有時(shí)鐘電路、復(fù)位電路和電源的單個單片機(jī),如圖2-18所示。由于資源的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。圖2-1880C51/89C51最小應(yīng)用系統(tǒng)
2.6單片機(jī)的工作時(shí)序和工作方式
2.6.1時(shí)序的基本概念1.時(shí)鐘周期時(shí)鐘周期也稱振蕩周期,是指為單片機(jī)提供時(shí)鐘信號的振蕩源的周期或外部輸入時(shí)鐘的周期。考慮到絕大部分單片機(jī)應(yīng)用系統(tǒng)是采用石英晶體作為振蕩源,一般來講,時(shí)鐘周期也就是1/fosc,fosc是石英晶體的振蕩頻率(簡稱晶振頻率)。
2.機(jī)器周期
完成一條指令的一個基本操作步驟所需的時(shí)間稱為機(jī)器周期。一個機(jī)器周期由6個狀態(tài)組成,即S1~S6,每個狀態(tài)又被分成兩個節(jié)拍P1和P2,如圖2-19所示。所以一個個機(jī)
器周期有112個振蕩周期期,可以依次表示為S1P1,S1P2,…,S6P1,S6P2。如果石英晶體振蕩頻率fosc=12MHz,則機(jī)器周期為(1/fosc)×12=1μs。單片機(jī)的某些單周期指令的執(zhí)行時(shí)間就是一個機(jī)器周期。
3.指令周期
單片機(jī)CPU執(zhí)行一條指令所需的時(shí)間稱為指令周期。MCS-51系列單片機(jī)執(zhí)行不同指令所需時(shí)間也不盡相同,有單機(jī)器周期、雙機(jī)器周期、四機(jī)器周期三種指令周期。如:
“MOVA,#data”(把一個數(shù)寫入累加器中)就是一個單機(jī)器周期指令。附錄B中給出了每條指令的機(jī)器周期數(shù)。
2.6.2單片機(jī)的工作時(shí)序
MCS-51單片機(jī)指令按照執(zhí)行時(shí)間分為三類:單機(jī)器周期指令(簡稱單周期指令)、雙機(jī)器周期指令(簡稱雙周期指令)和四機(jī)器周期指令(簡稱四周期指令)。而按照指令占用存
儲空間長度分,又有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令(詳見第3章)。所以有以下幾種情況:
·單字節(jié)單周期指令;.
·單字節(jié)雙周期指令;
·雙字節(jié)單周期指令;
·雙字節(jié)雙周期指令;
·三字節(jié)雙周期指令;
·單字節(jié)四周期指令。
圖2-19給出了89C51單片機(jī)的取指和執(zhí)行指令的時(shí)序關(guān)系。這些內(nèi)部時(shí)鐘信號不能從外部觀察到,我們用XTAL1振蕩信號作參考。從圖中可以看到,低8位地址的鎖存信號ALE在每個機(jī)器周期中兩次有效:一次在S1P2與S2P1期間,另一次在S4P2與S5P1期間。這說明在一個機(jī)器周期內(nèi)有兩次取指操作。圖2-19單片機(jī)取指和執(zhí)行指令的時(shí)序關(guān)系
2.6.3單片機(jī)的工作方式
1.正常工作方式
當(dāng)單片機(jī)完成復(fù)位后,進(jìn)入正常工作方式,這時(shí)單片機(jī)由VCC供電。正常工作方式是單片機(jī)自動完成任務(wù)的工作方式。正常工作過程是單片機(jī)執(zhí)行程序的過程,即一條條執(zhí)行
指令的過程。
2.掉電工作方式
MCS51系列單片機(jī)的SFR中有一個電源控制寄存器(PCON),地址為87H。PCON寄存器的控制格式如下:
PCON各位可以進(jìn)行讀/寫操作。PCON不能進(jìn)行位操作,只能按字節(jié)操作。
SMOD:波特率加倍位(用途見第6章)。
GF1、GF0:通用標(biāo)志位。
PD:掉電方式控制位。當(dāng)PD位為1時(shí),啟用掉電方式。
IDL:待機(jī)方式控制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省2024-2025學(xué)年高一上學(xué)期百校聯(lián)考語文試卷及答案
- 瘢痕的臨床護(hù)理
- 《計(jì)算機(jī)的存儲系統(tǒng)》課件
- 肛門及肛周皰疹性疾病的臨床護(hù)理
- 《供用電技術(shù)管理》課件
- 孕期子宮內(nèi)膜脫落的健康宣教
- 《機(jī)械制造基礎(chǔ)》課件-05篇 第七單元 數(shù)控高速切削
- 《隊(duì)列訓(xùn)練教程》課件
- 甲狀旁腺功能亢進(jìn)的臨床護(hù)理
- JJF(陜) 109-2023 直流換流閥試驗(yàn)裝置校準(zhǔn)規(guī)范
- 廣東省汕頭市潮陽區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 地理 含答案
- 國家電網(wǎng)招聘之財(cái)務(wù)會計(jì)類題庫有答案
- 機(jī)械工程測試技術(shù)知到智慧樹章節(jié)測試課后答案2024年秋安徽理工大學(xué)
- DB36T 1476-2021 碳普惠平臺建設(shè)技術(shù)規(guī)范
- GB 45067-2024特種設(shè)備重大事故隱患判定準(zhǔn)則
- 職業(yè)本科《大學(xué)英語》課程標(biāo)準(zhǔn)
- 東亞研究智慧樹知到期末考試答案章節(jié)答案2024年廣東外語外貿(mào)大學(xué)
- JTGT F20-2015 公路路面基層施工技術(shù)細(xì)則
- 小學(xué)二年級上冊美術(shù)期末試卷
- 樓棟燃?xì)庹{(diào)壓箱零部件、放散壓力和切斷壓力典型設(shè)置實(shí)例、常見故障、原因及處理方法
- 設(shè)計(jì)資料保密協(xié)議
評論
0/150
提交評論