山東大學(xué)單片機(jī)原理與應(yīng)用課件02MCS-51單片機(jī)硬件結(jié)構(gòu)_第1頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件02MCS-51單片機(jī)硬件結(jié)構(gòu)_第2頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件02MCS-51單片機(jī)硬件結(jié)構(gòu)_第3頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件02MCS-51單片機(jī)硬件結(jié)構(gòu)_第4頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件02MCS-51單片機(jī)硬件結(jié)構(gòu)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第2章MCS-51單片機(jī)硬件結(jié)構(gòu)2.1 MCS-51的內(nèi)部結(jié)構(gòu)2.2 MCS-51的內(nèi)部工作原理2.3 MCS-51的外部引腳分布2.4 MCS-51的工作時(shí)序2.5 MCS-51的復(fù)位電路2.1 MCS-51的內(nèi)部結(jié)構(gòu)MCS-51單片機(jī)除包含CPU外,還包含了一些程序存儲器、數(shù)據(jù)存儲器、定時(shí)器/計(jì)數(shù)器、并行I/O接口、串行I/O接口、總線控制邏輯和中斷控制邏輯,其結(jié)構(gòu)框圖如下圖所示: 89C51單片機(jī)結(jié)構(gòu)框圖89C51CPU振蕩器和時(shí)序OSC64KB 總線擴(kuò)展控制器數(shù)據(jù)存儲器256B RAM/SFR216位定時(shí)器/計(jì)數(shù)器可編程I/O程序存儲器4KBROM可編程全雙工串行口外中斷內(nèi)中斷控制并行

2、口串行通信外部時(shí)鐘源外部事件計(jì)數(shù)CPU是單片機(jī)的最核心部分,它是整個(gè)單片機(jī)的控制和指揮中心,完成所有的計(jì)算和控制任務(wù)。振蕩器和時(shí)序邏輯,產(chǎn)生CPU工作所需要的內(nèi)部時(shí)鐘。中斷控制邏輯用來應(yīng)付一些臨時(shí)到達(dá)的突發(fā)事件。并行I/O接口和串行I/O接口都是一些數(shù)據(jù)傳輸通道,方便CPU從芯片外部取得待處理的對象和將處理的結(jié)果送到芯片外部。程序存儲器用于存放單片機(jī)的程序。數(shù)據(jù)存儲器用于存放內(nèi)部待處理的數(shù)據(jù)和處理后的結(jié)果。定時(shí)器/計(jì)數(shù)器主要是完成對外部輸入脈沖的計(jì)數(shù)或者根據(jù)內(nèi)部的時(shí)鐘及定時(shí)設(shè)置,周期性的產(chǎn)生定時(shí)信號??偩€控制邏輯,用于產(chǎn)生外部存儲空間的有關(guān)讀寫控制信號。內(nèi)部總線內(nèi)部CPU與程序存儲器、數(shù)據(jù)存儲

3、器、并行I/O接口、串行I/O接口和定時(shí)器/計(jì)數(shù)器之間都是通過內(nèi)部總線聯(lián)系在一起。 MCS-51單片機(jī)的內(nèi)部詳細(xì)結(jié)構(gòu)如下圖所示:P0驅(qū)動器P2驅(qū)動器P0鎖存器P2鎖存器RAM地址寄存器128BRAM4KBFlash ROMB寄存器暫存器1暫存器2ACCSP程序地址寄存器 緩沖器PC增1PCDPTR中斷、串行口和定時(shí)器PSWP1鎖存器P1驅(qū)動器P3鎖存器P3驅(qū)動器定時(shí)控制指令寄存器指令譯碼器OSCALUP0.0-P0.7P2.0-P2.7P3.0-P3.7P1.0-P1.7XTAL1 XTAL2PSENALEEARET89C51單片機(jī)內(nèi)部結(jié)構(gòu)圖返回2.2 MCS-51的內(nèi)部工作原理2.2.1 M

4、CS-51的CPU結(jié)構(gòu)及工作原理CPU是單片機(jī)的核心,它由運(yùn)算器和控制器等部件組成。 運(yùn)算器包括: 可進(jìn)行8位算術(shù)和邏輯運(yùn)算的單元ALU 8位的暫存器1(TMP1)、暫存器2(TMP2), 8位的累加器ACC 8位寄存器B 程序狀態(tài)寄存器PSW等。(1)算術(shù)和邏輯單元ALUALU是CPU運(yùn)算器的核心,它可以完成對4位、8位和16位數(shù)據(jù)進(jìn)行操作加、減、乘、除、加1、減1、BCD數(shù)十進(jìn)制調(diào)整及比較等算術(shù)運(yùn)算和“與”、“或”、“異或”、“求補(bǔ)”及“循環(huán)移位”等邏輯運(yùn)算操作。它是整個(gè)單片機(jī)的計(jì)算中心。(2)累加器ACC8位寄存器,ALU運(yùn)算的結(jié)果,一般都進(jìn)入累加器ACC,當(dāng)然運(yùn)算的對象也可以來自于AC

5、C。除此之外,ACC在MCS-51內(nèi)部還經(jīng)常作為數(shù)據(jù)傳送的中轉(zhuǎn)站。同一般微處理器一樣,它是最忙碌的一個(gè)寄存器。在指令中用助記符A來表示。(3)寄存器B8位寄存器,在乘、除運(yùn)算時(shí),B寄存器用來存放一個(gè)操作數(shù),也用來存放運(yùn)算后的一部分結(jié)果。若不做乘、除運(yùn)算,則可作為通用寄存器使用。(4)程序狀態(tài)字寄存器PSW8位寄存器,用于指示指令執(zhí)行后的狀態(tài)信息,相當(dāng)于一般微處理器的標(biāo)志寄存器。PSW的位結(jié)構(gòu)如下表所示。D7D6D5D4D3D2D1D0CyACF0RS1RS0OV-PCy:高位進(jìn)位標(biāo)志位當(dāng)ALU的算術(shù)運(yùn)算過程中有進(jìn)位或借位時(shí),Cy=1;否則,Cy=0。同時(shí),該位還可以用作位累加器,這時(shí)一般只用“

6、C”表示。AC:輔助進(jìn)位標(biāo)志當(dāng)ALU的算術(shù)運(yùn)算過程中低4位向高4位有進(jìn)位或借位時(shí),AC=1;否則,AC=0。該位常用于BCD碼的調(diào)整。F0:用戶標(biāo)志位RS1、RS0:選擇工作寄存器組位用于選擇內(nèi)部數(shù)據(jù)存儲器區(qū)內(nèi)4組工作寄存器中的某一組。具體選擇情況見寄存器介紹部分。OV:溢出標(biāo)志位運(yùn)算結(jié)果超出機(jī)器所能表示的范圍時(shí)稱溢出。溢出是指有符號數(shù)運(yùn)算時(shí),數(shù)值超過了+127-128。 OV=Cy7Cy6,補(bǔ)碼運(yùn)算產(chǎn)生溢出OV=1,否則OV=0 P:奇偶校驗(yàn)標(biāo)志位根據(jù)累加器ACC中1的個(gè)數(shù)由硬件置位或清除,當(dāng)累加器ACC中有奇數(shù)個(gè)1時(shí)P=1;否則,P=0。PSW.1:保留位無定義?!纠浚悍治鰣?zhí)行下列指令序

7、列后,A、C、AC、OV、P的內(nèi)容是什么? MOV A,#79H ADD A,#58H 該指令功能是將79H+58HA。計(jì)算過程如下: (79H) 01111001 +(58H) 01011000 (D1H) 11010001 A=D1H最高位無進(jìn)位,C=0;低半字節(jié)有進(jìn)位,AC=1;OV=1,發(fā)生溢出;A中1的個(gè)數(shù)為偶數(shù),P=0。 (5)臨時(shí)寄存器TMP1和TMP2這兩個(gè)寄存器專門供ALU存放臨時(shí)數(shù)據(jù),用戶不可以直接訪問。(6)程序控制邏輯包括程序計(jì)數(shù)器PC、指令寄存器IR、指令譯碼器ID、振蕩器及定時(shí)電路等。程序計(jì)數(shù)器PC16位字節(jié)地址計(jì)數(shù)器,PC中的內(nèi)容是將要執(zhí)行的下一條指令的地址。改變

8、PC的內(nèi)容就可改變程序執(zhí)行的方向。指令寄存器IR及指令譯碼器IDCPU把由PC中的內(nèi)容決定的Flash或ROM地址中的指令代碼取出后,經(jīng)指令寄存器IR送至指令譯碼器ID進(jìn)行譯碼,譯碼后產(chǎn)生一定序列的控制信號,以執(zhí)行指令所規(guī)定的操作(例如,把片內(nèi)工作寄存器中的數(shù)據(jù)傳送到外部I/0口)。2.2.2 MCS-51的存儲空間及應(yīng)用配置89C51存儲器程序存儲器ROM數(shù)據(jù)存儲器RAM片內(nèi)程序存儲器片外程序存儲器片內(nèi)數(shù)據(jù)存儲器片外數(shù)據(jù)存儲器2.2.2 MCS-51的存儲空間及應(yīng)用配置MCS-51系列單片機(jī)的存儲器在物理結(jié)構(gòu)上分為程序存儲器空間和數(shù)據(jù)存儲器空間。 (哈佛結(jié)構(gòu))程序存儲器空間采用片內(nèi)、片外統(tǒng)一

9、編址的方式,共有64KB,地址范圍為 0000HFFFFH (用16位地址表示)。數(shù)據(jù)存儲器:片內(nèi)有256字節(jié)數(shù)據(jù)存儲器地址空間,地址范圍為 00HFFH (用8位地址表示)。除了片內(nèi)數(shù)據(jù)存儲器空間,MCS-51還有64KB的片外數(shù)據(jù)存儲器空間,其地址范圍也是 0000HFFFFH (用16位地址表示)。片內(nèi)、片外數(shù)據(jù)存儲器空間的訪問通過不同的數(shù)據(jù)訪問指令來區(qū)分開來。片外數(shù)據(jù)存儲器空間和片外程序存儲器空間,采用的外部地址總線和數(shù)據(jù)總線是相同的,不同的是控制總線不一樣。 MCS-51系列單片機(jī)的存儲器分配如下圖所示: (1)程序存儲器空間配置程序存儲器空間的片內(nèi)、片外選擇通過單片機(jī)的引腳EA來實(shí)

10、現(xiàn): 當(dāng)EA接低電平時(shí)(EA0),程序存儲器空間的前4KB(MCS-52是8KB)由片外實(shí)現(xiàn) 當(dāng)EA接高電平時(shí)(EA1),程序存儲器空間的前4KB(MCS-52是8KB)由片內(nèi)實(shí)現(xiàn)。 對于8031/80C31/8032/80C32這些片內(nèi)沒有ROM的單片機(jī),EA引腳必須接低電平。 對于具有片內(nèi)FLASH或者ROM的這些單片機(jī),如果使用片內(nèi)存儲器,引腳必須接高電平。(2)片內(nèi)數(shù)據(jù)存儲器空間配置MCS-51系列單片機(jī)片內(nèi)最多可以配置256字節(jié)的數(shù)據(jù)存儲器空間,地址從00HFFH。片內(nèi)數(shù)據(jù)存儲器分為兩部分: 低128字節(jié)(00H7FH)是真正的RAM區(qū) 高128字節(jié)(80HFFH)為特殊功能寄存器(

11、SFR)區(qū) (MCS-52也有高128字節(jié)的數(shù)據(jù)存儲單元,它們和特殊功能寄存器重疊的,區(qū)分這些重疊的高128字節(jié)存儲單元的方法是使用不同的尋址方式,SFR使用直接尋址而數(shù)據(jù)存儲單元使用間接尋址)。 MCS-51系列單片機(jī)的SFR都是采用直接尋址方式進(jìn)行訪問的。特殊功能寄存器(SFR)在MCS-51系列單片機(jī)片內(nèi)高128字節(jié)RAM中,有21個(gè)特殊功能寄存器(SFR),它們離散地分布在80HFFH的RAM空間中。這些特殊功能寄存器提供了CPU以及其它功能部件(如定時(shí)器計(jì)數(shù)器、串行口、并行口等)所需要的控制、狀態(tài)和緩沖寄存器。由于這些寄存器一般都具有特殊的功能,因此稱為特殊功能寄存器。這些寄存器的分

12、布如圖所示。 棧指針SP(81H) 堆棧:在MCS-51系列單片機(jī)片內(nèi)RAM中,常常要指定一個(gè)專門的區(qū)域來存放某些特別的數(shù)據(jù),它遵循順序存取和后進(jìn)先出的原則,這個(gè)RAM區(qū)叫做堆棧。堆棧中的數(shù)據(jù)一般是某些事件發(fā)生時(shí)的CPU狀態(tài)或者寄存器的值。 比如說,當(dāng)中斷到來時(shí),為了防止中斷服務(wù)程序中的操作對某些寄存器(如PSW、ACC等)形成破壞,需要將這個(gè)寄存器保護(hù)起來,我們就可以把這些需要保護(hù)的寄存器的值壓入堆棧,等服務(wù)程序執(zhí)行完畢后,再把這些寄存器的值恢復(fù)出來,這個(gè)過程我們叫做現(xiàn)場的保護(hù)與恢復(fù)。 特殊功能寄存器堆棧指針SP地址為81H,SP的功能就是用來指向堆棧的棧頂?shù)? 壓棧(執(zhí)行PUSH指令)時(shí):

13、 SP自動加1,然后把被壓的數(shù)據(jù)放到SP指向的單元。SP仍然指向棧頂,如左圖所示。 彈棧(執(zhí)行POP指令)時(shí):先把SP指向的單元彈出,然后把SP減1,如右圖所示。 數(shù)據(jù)指針DPTR(83H,82H) DPTR是一個(gè)16位的特殊功能寄存器. 高位字節(jié)寄存器用DPH表示(地址83H), 低位字節(jié)寄存器用DPL表示(地址82H)。 DPTR既可以作為一個(gè)16位寄存器來處理,也可以作為兩個(gè)獨(dú)立的8位寄存器DPH和DPL使用。DPTR主要用于存放16位地址,以便對64 KB片外RAM作間接尋址,這在第三章有關(guān)尋址方式的章節(jié)中將再詳細(xì)介紹。/端口P0P3(80H,90H,A0H,B0H) P0P3為4個(gè)8

14、位特殊功能寄存器,分別是4個(gè)并行/端口的鎖存器。它們都有字節(jié)地址,每一個(gè)口鎖存器還有位地址,每一條/線均可獨(dú)立用作輸入或輸出。 用作輸出時(shí),可以鎖存數(shù)據(jù); 用作輸入時(shí),數(shù)據(jù)可以緩沖. 詳細(xì)情況我們稍后介紹。 中斷允許寄存器IE(A8H)、中斷優(yōu)先級寄存器IP(B8H) IE和IP都是8位特殊功能寄存器。 IE用來對中斷系統(tǒng)所有中斷以及某個(gè)中斷源進(jìn)行開放或屏蔽; 80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(即高優(yōu)先級和低優(yōu)先級),可實(shí)現(xiàn)兩級中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級是由中斷優(yōu)先級寄存器IP中的相應(yīng)位的狀態(tài)來決定的。 關(guān)于這兩個(gè)特殊功能寄存器的位結(jié)構(gòu)和詳細(xì)工作原理將在第四章有關(guān)章節(jié)中介紹。 定時(shí)/

15、計(jì)數(shù)器工作方式寄存器TMOD(89H) 定時(shí)/計(jì)數(shù)器控制寄存器TCON(88H) 8位特殊功能寄存器TMOD和TCON都是與定時(shí)/計(jì)數(shù)器有關(guān)的。 TMOD用來為定時(shí)/計(jì)數(shù)器T0、T1選定工作方式, TCON用來控制定時(shí)/計(jì)數(shù)器T0、T1的運(yùn)行,并反映T0、T1的運(yùn)行狀態(tài)。 定時(shí)/計(jì)數(shù)器寄存器TH1(8DH)、TH0(8CH)、TL1(8BH)、TH0(8AH) 8位特殊功能寄存器TH1和TL1構(gòu)成定時(shí)/計(jì)數(shù)器T1的16位計(jì)數(shù)器, TH0和TL0構(gòu)成定時(shí)/計(jì)數(shù)器T0的16位計(jì)數(shù)器。 每來一個(gè)定時(shí)或計(jì)數(shù)脈沖,這個(gè)16位計(jì)數(shù)器將加1,直至計(jì)滿產(chǎn)生溢出。與定時(shí)/計(jì)數(shù)器有關(guān)的TMOD、TCON、TH1、

16、TH0、TL1、TH0等特殊功能寄存器的位結(jié)構(gòu)和詳細(xì)工作原理將在第五章有關(guān)章節(jié)中介紹。 串行口控制寄存器SCON(98H)、串行口發(fā)送、接收緩沖寄存器SBUF(99H) 8位特殊功能寄存器SCON用以實(shí)現(xiàn)設(shè)定串行口的工作方式、控制接收/發(fā)送以及設(shè)置串行口的工作狀態(tài)標(biāo)志等功能。 MCS-51系列單片機(jī)片內(nèi)有兩個(gè)物理上獨(dú)立的發(fā)送、接收串行口緩沖器SBUF,它們占用同一地址99H,對它們的操作可以實(shí)現(xiàn)通過串行口接收或發(fā)送一定的數(shù)據(jù)。由于讀寫方向是不一樣的,所以讀操作對應(yīng)的是接收緩沖器,寫操作對應(yīng)的是發(fā)送緩沖器,因此,雖然物理上是兩個(gè)緩沖寄存器,但占用相同的地址,操作時(shí)并不會產(chǎn)生混淆。SCON和SBU

17、F有關(guān)的詳細(xì)情況將在第六章有關(guān)章節(jié)中介紹。 電源控制寄存器PCON(87H) 8位特殊功能寄存器PCON的主要作用是用于控制MCS-51單片機(jī)使其進(jìn)入低功耗模式,但其最高位(D7: SMOD)位是用于控制串行口波特率是否進(jìn)行倍頻的。關(guān)于PCON的詳細(xì)情況將在第六章和第七有關(guān)章節(jié)中介紹。 片內(nèi)低128B RAMMCS-51系列單片機(jī)片內(nèi)低128字節(jié)的RAM包含: 工作寄存器區(qū)(00H: 1FH) 可位尋址區(qū) (20H: 2FH) 通用RAM區(qū) (30H: 7FH) 這3個(gè)組成部分,如圖所示: 工作寄存器區(qū)(00H: 1FH) MCS-51的片內(nèi)RAM 00H1FH地址空間安排了4組工作寄存器,每

18、組有8個(gè)工作寄存器(R0R7),共占32個(gè)單元。MCS-51在每個(gè)時(shí)刻只能選定一組工作寄存器作為當(dāng)前的工作寄存器組。選定當(dāng)前工作寄存器組的方法是對程序狀態(tài)字PSW中RS1、RS0的進(jìn)行適當(dāng)?shù)脑O(shè)置,如下表所示: RS1 RS0寄存器地址工作寄存器組R0R1R2R3R4R5R6R70 000H01H02H03H04H05H06H07H第0組0 108H09H0AH0BH0CH0DH0EH0FH第1組1 010H11H12H13H14H15H16H17H第2組1 118H19H1AH1BH1CH1DH1EH1FH第3組 位尋址區(qū)(20H 2FH) MCS-51的片內(nèi)RAM工作寄存器區(qū)后的16字節(jié)單元

19、(20H2FH),可用位尋址方式訪問其各位,這16個(gè)單元(共128個(gè)位)稱為位尋址區(qū),每個(gè)位都有自己的位地址(00H7FH)。 在MCS-51系列單片內(nèi)有一個(gè)布爾處理機(jī),還有許多位操作指令,通過這些位操作指令可直接對這128位尋址,往這些位空間里寫入1位數(shù)據(jù),或者從這些位空間里讀取1位數(shù)據(jù)。 除了這128個(gè)位尋址單元以外,還有11個(gè)特殊功能寄存器(SFR)也是可以位尋址的。這些特殊功能寄存器的字節(jié)地址是:80H(P0)、88H(TCON)、90H(P1)、98H(SCON)、A0H(P2)、A8H(IE)、B0H(P3)、B8H(IP)、D0H(PSW)、E0H(ACC)、F0H(B)。這11

20、個(gè)特殊功能寄存器的位也都分配了相應(yīng)的位地址(80HF7H)。對這些空間的訪問也可以以位為單位。需要注意的是這部分的位地址空間可能不連續(xù),不能對不存在的位地址進(jìn)行訪問,否則訪問的結(jié)果是未知的。 通用RAM區(qū)(30H 7FH) MCS-51的片內(nèi)RAM 30H7FH地址空間的存儲單元為通用RAM區(qū)。這段空間可以存放程序運(yùn)行的中間結(jié)果。同時(shí),堆棧也是放置在這一區(qū)間的。 需要注意的是由于堆棧區(qū)域是向上生長的,所以,初始的堆棧指針SP設(shè)置就特別重要。一般情況下,需要將堆棧設(shè)置在通用RAM區(qū)的高端(如:60H 7FH),這樣隨著壓入數(shù)據(jù)的增加一般不會導(dǎo)致對其他普通RAM區(qū)所存放數(shù)據(jù)的破壞。堆棧區(qū)的大小取決

21、于整個(gè)系統(tǒng)同時(shí)需要保護(hù)的數(shù)據(jù)單元量。 (3)片外數(shù)據(jù)存儲器空間配置 片外數(shù)據(jù)存儲器與片內(nèi)數(shù)據(jù)存儲器空間的低地址部分(0000H00FFH)是重疊的,89C51有MOV和MOVX兩種指令,用以區(qū)分片內(nèi)、片外RAM空間,當(dāng)使用MOV指令時(shí),訪問的是片內(nèi)區(qū)域,當(dāng)使用MOVX指令時(shí),訪問的是片外區(qū)域。 MCS-51單片機(jī)的64KB的數(shù)據(jù)存儲器空間除了片內(nèi)有128字節(jié)或256字節(jié)的存儲器單元外,剩余所有的數(shù)據(jù)存儲單元都需要擴(kuò)展片外RAM實(shí)現(xiàn)。 片外數(shù)據(jù)存儲器的地址可以是8位或16位。使用8位地址時(shí),則由P0口將這8位地址與數(shù)據(jù)信號分時(shí)提供,利用地址鎖存信號ALE的下降沿可以將這些地址鎖存住。若采用16位

22、地址,則由P2端口傳送高8位地址。 下圖是片外擴(kuò)展2KB RAM時(shí)的連接圖。P0口用作RAM的數(shù)據(jù)總線(D0-D7),通過74LS373鎖存后作為地址總線的低8位(A0-A7),P2口中的3位(P2.0、P2.1和P2.2)作為RAM的3位地址(A8-A10)。訪問片外RAM期間,CPU根據(jù)需要發(fā)送讀或?qū)懶盘枴?.2.3 MCS-51的I/O 端口 在控制系統(tǒng)領(lǐng)域,有很多信號(例如電機(jī)的開與停,溫度是否超越了上界,電梯的上行和下行、小車的前進(jìn)與倒退等)都可以利用簡單的高低電平來表示。為了便于實(shí)現(xiàn)對這些控制信號的輸入與輸出,MCS-51單片機(jī)設(shè)置了4個(gè)8位并行I/O口,它們分別是P0口、P1口、

23、P2口和P3口。 這4個(gè)并行I/O口有個(gè)統(tǒng)一的功能就是實(shí)現(xiàn)開關(guān)信號的輸入輸出功能,可以利用程序?qū)⑦@些口設(shè)置為高電平或者低電平(輸出功能),也可以利用這些口將某些利用高低電平所表示的開關(guān)信號(1和0)讀入單片機(jī)內(nèi)部(輸入功能)。除此之外,它們還有各自不同的第二甚至第三功能,這是由它們的內(nèi)部結(jié)構(gòu)所決定的。2.2.3.1 P0口P0口某位的結(jié)構(gòu)如圖所示:讀引腳讀鎖存器內(nèi)部總線寫入DCPQQ地址/數(shù)據(jù)控制CMUXVCCT1T2P0.X4312鎖存器組成: 一個(gè)輸出鎖存器 二個(gè)三態(tài)輸入緩沖器 輸出驅(qū)動電路 控制電路 當(dāng)控制位C=0時(shí),開關(guān)MUX被控為如圖示位置,P0口為通用I/O口; 當(dāng)控制位C=1時(shí),

24、開關(guān)撥向反相器3的輸出端,這時(shí),P0口分時(shí)作為地址/數(shù)據(jù)總線使用。也就是說,P0口的第二功能是作為地址/數(shù)據(jù)總線使用,其實(shí),這是P0口最常用的用法。需要注意的是,當(dāng)P0口作為地址/數(shù)據(jù)總線使用時(shí),就無法再作I/O口使用。P0口作地址/數(shù)據(jù)時(shí),是真正的雙向口,三態(tài),負(fù)載能力為8個(gè)LSTTL電路。 (1)P0口作為地址/數(shù)據(jù)總線 當(dāng)控制位C=1時(shí),開關(guān)撥向反相器3的輸出端,P0口引腳輸出低8位地址或數(shù)據(jù)信息,MUX開關(guān)把CPU內(nèi)部地址/數(shù)據(jù)線經(jīng)反向器3與驅(qū)動場效應(yīng)管FET(T2)柵極接通。上下兩個(gè)FET處于反相,構(gòu)成推挽式輸出電路,提高了負(fù)載能力。(2)P0口作為通用I/O當(dāng)控制位C=0時(shí),P0口

25、為通用I/O口。 P0口作為輸出口 當(dāng)CPU執(zhí)行輸出指令時(shí),寫脈沖加在D鎖存器的CP上,這樣,與內(nèi)部總線相連的D端的數(shù)據(jù)取反后就出現(xiàn)在了輸出級FET(T2)的基極上,經(jīng)輸出級FET(T2)反相,在P0端口上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。需要注意的是,由于CPU使控制線C為,上拉FET處于截止?fàn)顟B(tài),因此輸出級是漏極開路的,外部應(yīng)加上拉電阻。 P0口作為輸入口 當(dāng)CPU執(zhí)行一條由端口讀入數(shù)據(jù)的指令時(shí),“讀引腳”脈沖把三態(tài)緩沖器2打開,這樣,端口上的數(shù)據(jù)經(jīng)過緩沖器2讀入到內(nèi)部總線。 需要注意的是,在進(jìn)行從端口輸入前,應(yīng)先向端口鎖存器寫入1,也就是使鎖存器,使T2截止,又因?yàn)榭刂凭€C=0,因此T1截

26、止,這樣引腳便處于懸浮狀態(tài),可作高阻抗輸入。否則的話,假如說原來剛從端口輸出了個(gè)0,也就是說鎖存器,這樣T2便處于導(dǎo)通狀態(tài),端口上便一直處于低電平狀態(tài),無法獲得真正的引腳電平狀態(tài)。因此,希望讀者一定要記住,“要輸入,先輸出1”。 “讀修改寫” MCS-51有幾條對I/O口操作的指令,屬于“讀修改寫”指令,如:ANL P0,A該指令的功能是將0口的內(nèi)容與寄存器內(nèi)容相與,結(jié)果從0口輸出。 CPU不直接讀引腳上的數(shù)據(jù),而是使“讀鎖存器”信號有效,修改輸出鎖存器的內(nèi)容。鎖存器中的數(shù)據(jù)通過上三態(tài)門1進(jìn)入內(nèi)部總線,修改后再寫入到鎖存器中。2.2.3.2 P1口P1口某位的結(jié)構(gòu)如圖所示:讀引腳讀鎖存器內(nèi)部總

27、線寫入DCPQQVCCP1.X12鎖存器 P1口的內(nèi)部結(jié)構(gòu)和P0口有相同的地方,也有不同的地方。相同的地方是:它們的輸出鎖存電路一樣。不同的地方是:由于P1口只做I/O口,沒有第二功能,因此,P1口沒有象P0口那樣的功能選擇電路。P1口的輸出驅(qū)動部分也與P0口不同,P1口的輸出驅(qū)動上半部分把一個(gè)FET換成了一個(gè)上拉負(fù)載電阻,下半部分仍然保留一個(gè)可工作在導(dǎo)通或截止兩種狀態(tài)的FET。當(dāng)FET導(dǎo)通時(shí),其管腳P1.X輸出為低電平。當(dāng)FET截止時(shí),其管腳P1.X輸出由上拉電阻上拉為高電平,能向外提供拉電流負(fù)載,所以外部接口電路不必再接上拉電阻。 P1口也是一個(gè)準(zhǔn)雙向口。當(dāng)將該端口用作輸入端口時(shí),也必須先

28、向?qū)?yīng)的鎖存器寫入1,使FET截止。P1P3都是準(zhǔn)雙向口,負(fù)載能力為4個(gè)LSTTL電路。2.2.3.3 P2口 P2口某位的結(jié)構(gòu)如圖所示。P2口的內(nèi)部結(jié)構(gòu)與P0口類似的地方,它們的鎖存電路相同,也都有MUX開關(guān)。驅(qū)動部分與P1口類似,都有一個(gè)上拉電阻和一個(gè)FET組成。讀引腳讀鎖存器內(nèi)部總線寫入DCPQQ地址/數(shù)據(jù)控制CMUXVCCP2.X鎖存器(1)P2口作為一般的I/O口 P2口是一多功能接口,即可以作為通用I/O口使用,也可以作為輸出高8位地址線使用。在以下情況下,P2口將作為通用I/O口使用: 當(dāng)CPU對片內(nèi)存儲器進(jìn)行讀/寫(執(zhí)行MOV 指令或在EA=1的情況下執(zhí)行MOVC指令)時(shí),內(nèi)部

29、硬件電路會自動使開關(guān)MUX倒向鎖存器的端,這時(shí),P2口將作為一般I/O口使用。 當(dāng)系統(tǒng)只需擴(kuò)展256B片外RAM,使用“MOVX A, Ri”類指令訪問片外RAM時(shí),尋址范圍是256B,只需低8位地址線就可以實(shí)現(xiàn)。這時(shí),P2口將不受該指令影響,仍可作通用I/O口使用。(2)P2口作為高8位地址線 若擴(kuò)展的RAM容量超過256B,使用“MOVX A,DPTR”類指令的尋址范圍是64KB,此時(shí),高8位地址總線用P2口輸出。在片外RAM讀/寫周期內(nèi),P2口鎖存器仍保持原來端口的數(shù)據(jù)。此時(shí)P2口無法再用作通用I/O口。2.2.3.4 P3口P3口某位的結(jié)構(gòu)如圖所示: 讀引腳讀鎖存器內(nèi)部總線寫入DCPQ

30、第二輸出功能VCCP3.X312鎖存器4第二輸入功能W P3口是一個(gè)雙功能口,第一功能與P1一樣用作通用I/O口,也是一個(gè)準(zhǔn)雙向I/O口。除了第一功能,P3口還具有第二功能。P3口的第二功能如下表所示: 引腳第二功能P3.0RXD(串行口輸入)P3.1TXD(串行口輸出)P3.2INT0(外部中斷0輸入)P3.3INT1(外部中斷1輸入)P3.4T0(定時(shí)器0的外部輸入)P3.5T1(定時(shí)器1的外部輸入)P3.6WR(片外數(shù)據(jù)存儲器寫控制信號)P3.7RD(片外數(shù)據(jù)存儲器讀控制信號) 與P0、P2口不同的是,P3口的第二功能和第一功能之間不再通過多路選擇開關(guān)(MUX)進(jìn)行切換,而是增加了一個(gè)與

31、非門3和緩沖器4。這樣,當(dāng)作為通用輸出口時(shí),內(nèi)部第二輸出功能線應(yīng)為高電平1,以保證與非門的暢通,維持從鎖存器到輸出口的數(shù)據(jù)輸出通路;當(dāng)作為第二功能輸出口時(shí),鎖存器應(yīng)置高電平1,使與非門對第二功能的輸出是暢通的。 當(dāng)P3口作為第二功能輸入口時(shí),在I/O口的輸入通路增設(shè)了一個(gè)緩沖器4,輸入的第二功能信號即從這個(gè)緩沖器輸出端取得。當(dāng)P3口作為通用I/O口輸入端時(shí),數(shù)據(jù)取自三態(tài)緩沖器2的輸出端。這兩種輸入,鎖存器的輸出端和內(nèi)部第二輸出功能線均應(yīng)置為高電平,這樣輸出驅(qū)動電路便不會影響引腳上外部數(shù)據(jù)的正常輸入。 P3口的輸出驅(qū)動部分和P1口、P2口一樣,內(nèi)部具有上拉電阻,只有4個(gè)LSTTL電路的驅(qū)動能力。

32、 2.2.3.5 MCS-51 I/O端口的簡單應(yīng)用 這里舉一個(gè)簡單的MCS-51 I/O口的應(yīng)用實(shí)例。如圖所示,單片機(jī)的P1.0口設(shè)置成輸入口,通過一個(gè)按鈕開關(guān)連接到地。P1.1口設(shè)置成輸出口,通過電阻R1連接到Q1的基極,Q1的發(fā)射極連接到地,集電極通過發(fā)光二極管D1和電阻R2連接到+5V電源。 要實(shí)現(xiàn)的功能是每當(dāng)按鈕開關(guān)S1按下時(shí),發(fā)光二極管就亮,松開時(shí)發(fā)光二極管就滅。具體的程序如下: SETB P1.0 ; 為了P1.0做輸入,先要輸出高電平LOOP1: CLR P1.1 ; 熄滅LOOP2: JB P1.0, LOOP1 ; 查看開關(guān)是否按下,高電平說明沒有; 按下,低電平說明已按下

33、。 LCALL DELAY10ms ; 軟件延時(shí)10ms,去開關(guān)抖動 JB P1.0, LOOP1 ; 再查看一次開關(guān)狀態(tài) SETB P1.1 ; 點(diǎn)亮發(fā)光二極管 SJMP LOOP2; 重復(fù)2.3 MCS-51的外部引腳分布 MCS-51單片機(jī)的外部引腳有兩種封裝形式,一種是44引腳的PLCC(Plastic Leaded Chip Carrier 的縮寫,即帶引線的塑封芯片載體),另一種是40引腳的PDIP(Plastic Dual-In-Line塑封雙列直插式封裝)。 前者的優(yōu)點(diǎn)是采用表面貼SMT安裝技術(shù),體積小,抗干擾能力強(qiáng)。后者的優(yōu)點(diǎn)是拆裝方便,焊接容易,尤其是產(chǎn)品開發(fā)期便于芯片更換

34、。這些引腳根據(jù)它們的功能可以分成以下幾類:(1)I/O端口引腳P0口、P1口、P2口、P3口四個(gè)8位并行I/O口的功能及工作原理在前面的第2.2.3節(jié)都已做了詳細(xì)描述,這里不再重復(fù)。(2)電源引腳電源引腳VCC提供整個(gè)芯片的工作電源,接+5V。GND接地。(3)外接晶振引腳MCS-51單片機(jī)的內(nèi)部時(shí)鐘振蕩電路如下圖所示: XTAL1振蕩電路反向放大輸入端, 用于連接外接晶振的一個(gè)引腳,在采用外部時(shí)鐘方式時(shí),該引腳接地。 XTAL2振蕩電路反向放大輸出端, 用于連接外接晶振的另一個(gè)引腳,在采用外部時(shí)鐘方式時(shí),由該引腳輸入外部時(shí)鐘脈沖。 內(nèi)部振蕩方式:這種方式下在XTAL1和XTAL2兩端跨接石英

35、晶體及兩個(gè)電容,如圖(a)所示,這樣就和內(nèi)部的反向放大器構(gòu)成穩(wěn)定的自激振蕩器。電容器和通常取30 pF左右,可穩(wěn)定頻率并對振蕩頻率有微調(diào)作用。振蕩頻率范圍要求在1.2MHz12MHz之間。 外部震蕩方式:這種方式下,就是把外部已有的時(shí)鐘信號引入單片機(jī)內(nèi)直接使用,如圖(b)所示。(4)其它控制引腳 RST/VPD引腳:復(fù)位信號(RST)和后備電源(VPD)輸入端。在此輸入24個(gè)振蕩周期以上的高電平脈沖,單片機(jī)便可復(fù)位。VPD使用后備電源,可在主電源VCC出現(xiàn)故障時(shí),提供備份電源,保證存儲在RAM中的信息不丟失,實(shí)現(xiàn)掉電保護(hù)。RST/VPD部分的內(nèi)部結(jié)構(gòu)如圖所示: ALE/PROG引腳:地址鎖存允

36、許(ALE)、輸出/編程脈沖(PROG)輸入端信號端。當(dāng)訪問外部存儲器時(shí),ALE以振蕩頻率的1/6的頻率輸出脈沖信號,可用于鎖存出現(xiàn)在P0口的低8位地址(由于P0口是地址/數(shù)據(jù)分時(shí)輸出的,當(dāng)輸出地址時(shí)ALE信號將出現(xiàn)一個(gè)下降沿,如圖所示)。 在不訪問外部存儲器時(shí),ALE端仍以上述不變的頻率,周期性地出現(xiàn)正脈沖信號,利用該脈沖信號可以作為定時(shí)信號,也可以用于判斷芯片好壞。 對于87C51單片機(jī)來說,在對片內(nèi)EPROM進(jìn)行編程期間,該引腳將作為編程脈沖的輸入端。引腳:片外程序存儲器讀選通信號輸出端,當(dāng)從片外程序存儲器讀取指令或數(shù)據(jù)時(shí),每個(gè)機(jī)器周期(一個(gè)機(jī)器周期有12個(gè)振蕩周期)將有兩次有效(低電平

37、),以使片外程序存儲器輸出使能,如圖所示:當(dāng)訪問外部數(shù)據(jù)存儲器時(shí),該引腳將沒有有效信號出現(xiàn)。 /VPP引腳:外部程序存儲器地址允許輸入端/編程電壓輸入端。當(dāng)引腳為高電平時(shí),MCS-51單片機(jī)程序存儲空間低4KB來由片內(nèi)EPROM/ROM(MCS-52系列為8KB)構(gòu)成,超出的部分仍由片外程序存儲器構(gòu)成。當(dāng)引腳為低電平時(shí),MCS-51單片機(jī)整個(gè)64KB程序存儲空間都由片外程序存儲器構(gòu)成(無論片內(nèi)有無程序存儲器)。 對于片內(nèi)有EPROM的單片機(jī)(如87C51系列),在EPROM編程期間,該引腳將用于接21V的編程電源VPP。2.4 MCS-51的工作時(shí)序 計(jì)算機(jī)是按程序工作的。程序是由許多指令組成

38、的。指令是宏觀組成程序的最小單位。指令是逐條存放在程序存儲器中的。當(dāng)執(zhí)行指令時(shí),首先將指令取出送到指令寄存器中,然后進(jìn)行譯碼,轉(zhuǎn)換成一系列定時(shí)控制的微操作,用來控制單片機(jī)各部分工作,來完成指令所要求的操作。 因?yàn)橐粭l指令分解成許多基本的微操作,而這些微操作對應(yīng)的脈沖信號在時(shí)間上有嚴(yán)格的先后次序,這種次序就是計(jì)算機(jī)的時(shí)序。 時(shí)序是非常重要的概念,它指明了單片機(jī)內(nèi)部和外部互連所必須遵守的規(guī)律。為了理解MCS-51單片機(jī)的時(shí)序,我們這里介紹幾個(gè)概念:(1)振蕩周期:所謂的振蕩周期就是為單片機(jī)提供定時(shí)信號的振蕩源的周期(即晶振周期或外部輸入時(shí)鐘信號的周期)。(2)狀態(tài)周期:2個(gè)振蕩周期為1個(gè)狀態(tài)周期,

39、用S表示。構(gòu)成1個(gè)狀態(tài)周期的兩個(gè)振蕩周期作為振蕩周期的兩個(gè)節(jié)拍P1和P2。在狀態(tài)周期的前半周期(即節(jié)拍P1期間)CPU一般完成算術(shù)邏輯運(yùn)算。在狀態(tài)周期的后半周期(即節(jié)拍P2期間)CPU一般完成內(nèi)部寄存器之間的數(shù)據(jù)傳遞。(3)機(jī)器周期:一個(gè)機(jī)器周期(12個(gè)振蕩周期)是指CPU訪問存儲器一次所需要的時(shí)間,包含6個(gè)狀態(tài)周期,用S1、S2、S3、S4、S5、S6表示,這樣一個(gè)機(jī)器周期也就共有12個(gè)節(jié)拍,它們是:S1P1、S1P2、S2P1、S2P2、S3P1、S3P2、S4P1、S4P2、S5P1、S5P2、S6P1和S6P2。(4)指令周期:也就是完成1條指令所需要的時(shí)間,以機(jī)器周期為單位。MCS-

40、51單片機(jī)大多數(shù)指令是單字節(jié)單周期指令,也有一些單字節(jié)雙周期指令、雙字節(jié)單周期指令、雙字節(jié)雙周期指令,甚至也有4周期的指令(乘法和除法指令),注意沒有三周期指令。假如MCS-51單片機(jī)的外接晶振為12MHz,那么各種周期的具體值為:振蕩周期:1/(12106)=1/12 s ;狀態(tài)周期:21/12 s =1/6 s ;機(jī)器周期:61/6 s =1s ;指令周期:14 s ;MCS-51單片機(jī)的工作時(shí)序如圖所示:MCS-51單片機(jī)的CPU讀取指令和執(zhí)行指令時(shí)序如圖所示: 這里列出了幾種典型指令的取指和執(zhí)行時(shí)序。由圖可知,在每個(gè)機(jī)器周期內(nèi),地址鎖存信號ALE兩次有效,第一次出現(xiàn)在S1P2和S2P1

41、期間,第二次出現(xiàn)在S4P2和S5P1期間。 單周期指令的讀取發(fā)生于S1P2期間,此時(shí)操作碼將被鎖存于指令寄存器內(nèi),若是雙字節(jié)指令,則同一機(jī)器周期的S4P2讀取第2個(gè)字節(jié),中間PC自動加1。如果是單字節(jié)指令,S4P2仍做讀操作,但讀取的內(nèi)容直接丟棄,且中間程序計(jì)數(shù)器PC不加1。單周期指令在S6P2結(jié)束時(shí)完成指令的操作。圖(a)和(b)分別給出了單字節(jié)單周期指令和雙字節(jié)單周期指令的工作時(shí)序。 圖(c)是單字節(jié)雙周期指令的時(shí)序,兩個(gè)機(jī)器周期內(nèi)進(jìn)行了4次讀操作。由于是單字節(jié)指令,后面三次讀操作都無效,PC也不調(diào)整。 圖(d)是訪問片外數(shù)據(jù)存儲器指令“MOVX”的時(shí)序,它是單字節(jié)雙周期指令,在第一機(jī)器周

42、期S5開始送出片外數(shù)據(jù)存儲器地址后,進(jìn)行讀/寫數(shù)據(jù)。在此期間無ALE信號,所以第二周期不產(chǎn)生取指操作。這時(shí)ALE信號不再是周期性的。其它情況下,ALE就是頻率為晶振頻率1/6的周期信號,可以用來給其它設(shè)備作時(shí)鐘信號。2.5 MCS-51的復(fù)位電路 所謂的復(fù)位電路就是使單片機(jī)進(jìn)入某種確定的初始狀態(tài)的電路。復(fù)位電路具體實(shí)現(xiàn)內(nèi)容就是在復(fù)位引腳RST/VPD上產(chǎn)生一個(gè)寬度在24個(gè)振蕩周期以上的高電平脈沖(即復(fù)位脈沖)。MCS-51內(nèi)部的復(fù)位結(jié)構(gòu)如圖所示:復(fù)位引腳RST/VPD通過片內(nèi)一個(gè)斯密特觸發(fā)器與片內(nèi)復(fù)位電路相連。斯密特觸發(fā)器用來給外部施加的復(fù)位脈沖進(jìn)行整形,其輸出被內(nèi)部復(fù)位電路在每個(gè)機(jī)器周期的S5P2進(jìn)行采樣一次,如果連續(xù)3次都能夠采集到高電平,那么單片機(jī)內(nèi)部將被復(fù)位,這時(shí)復(fù)位引腳RST/VPD的高電平可以被取消。此后,單片機(jī)將從這個(gè)復(fù)位后的初始化狀態(tài)開始運(yùn)行。MCS-51單片機(jī)復(fù)位后的初始狀態(tài)如表所示:寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)PC0000HTCON00HA00HT2CON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論