第二章 80C51單片微機(jī)基本結(jié)構(gòu)_第1頁
第二章 80C51單片微機(jī)基本結(jié)構(gòu)_第2頁
第二章 80C51單片微機(jī)基本結(jié)構(gòu)_第3頁
第二章 80C51單片微機(jī)基本結(jié)構(gòu)_第4頁
第二章 80C51單片微機(jī)基本結(jié)構(gòu)_第5頁
已閱讀5頁,還剩142頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章

80C51單片微機(jī)

的基本結(jié)構(gòu)

微型計算機(jī)的基本組成有三部分,即CPU+存儲器+I/O接口。80C51內(nèi)部結(jié)構(gòu)如圖2-1所示。CPU(算術(shù)邏輯單元ALU、控制器)存儲器-程序存儲器ROM、數(shù)據(jù)存儲器RAM定時器/計數(shù)器并行I/O口P0~P3串行口中斷系統(tǒng)定時控制邏輯電路等

2.180C51單片微機(jī)的內(nèi)部結(jié)構(gòu)

微型計算機(jī)的基本組成有三部分,即CPU+存儲器+I/O接口。80C51內(nèi)部結(jié)構(gòu):圖2-1CPU(算術(shù)邏輯單元ALU、控制器)存儲器-程序存儲器ROM、數(shù)據(jù)存儲器RAM定時器/計數(shù)器并行I/O口P0~P3串行口中斷系統(tǒng)定時控制邏輯電路等

這些部件通過內(nèi)部總線連接起來,基本結(jié)構(gòu)仍然是通用CPU加上外圍芯片的結(jié)構(gòu)模式,但采用了特殊功能寄存器(SFR)進(jìn)行集中控制的方法。1.中央處理器單片微機(jī)的核心,主要完成運(yùn)算和控制功能,又增設(shè)了“面向控制”的處理功能,增強(qiáng)了實(shí)時性。

2.程序存儲器

80C31:內(nèi)部沒有程序存儲器80C51:內(nèi)部帶ROM87C51:內(nèi)部帶EPROM單片微機(jī)的程序存儲器有以下幾種結(jié)構(gòu)形式:⑴片內(nèi)只讀存儲器程序必須在制作單片微機(jī)時寫入,一次性固化。只適用于程序已成熟、定型,且批量很大的場合。并且只能在廠家定制完成。⑵片內(nèi)可編程的ROM片內(nèi)可編程的ROM可直接由用戶進(jìn)行編程。

·紫外線可擦除型ROM:EPROM型單片微機(jī)(如87C51)。EPROM需用紫外線擦除,必須脫機(jī)固化,不能在線改寫。

·電可擦除型ROM:EEPROM,稱為Flash單片微機(jī)(如89C51)。應(yīng)用系統(tǒng)的現(xiàn)場調(diào)試。 EPROM和EEPROM都是可以多次擦除和編程的,或稱MTP的ROM。·OTP的ROM,僅允許用戶一次編程。⑶片外只讀存儲器

由于受芯片集成度的限制,片內(nèi)只讀存儲器一般存儲容量較小。利用單片微機(jī)的并行擴(kuò)展技術(shù)可以外擴(kuò)片外只讀存儲器。

3.

數(shù)據(jù)存儲器(RAM)

存儲程序在運(yùn)行期間的工作變量和數(shù)據(jù),稱為數(shù)據(jù)存儲器。一般在單片微機(jī)內(nèi)部設(shè)置一定容量(64B~384B或更大容量)的RAM,以加快單片微機(jī)運(yùn)行的速度,還可以使存儲器的功耗下降很多。

常把寄存器(如工作寄存器、特殊功能寄存器、堆棧等)在邏輯上劃分在片內(nèi)RAM空間中,可將單片微機(jī)內(nèi)部RAM看成是寄存器堆,有利于提高運(yùn)行速度。

4.并行I/O口

提供許多功能強(qiáng)、使用靈活的并行輸入/輸出引腳,用于檢測與控制?!裼行㊣/O引腳還具有多種功能,比如可以作為數(shù)據(jù)總線的數(shù)據(jù)線、地址總線的地址線、控制總線的控制線等?!駟纹C(jī)I/O引腳的驅(qū)動能力也逐漸增大,甚至可以直接驅(qū)動外擴(kuò)的LED顯示器。

5.串行I/O口實(shí)現(xiàn)與某些終端設(shè)備進(jìn)行串行通信,或者和一些特殊功能的器件相連的能力,甚至用多個單片微機(jī)相連構(gòu)成多機(jī)系統(tǒng)。

6.定時器/計數(shù)器用于精確的定時,或者需對外部事件進(jìn)行計數(shù)80C51有兩個16位的定時器/計數(shù)器,80C52有三個16位的定時器/計數(shù)器。7.中斷系統(tǒng)

具有內(nèi)、外共五個中斷源,兩個中斷優(yōu)先級。

8.定時電路及元件

計算機(jī)的整個工作是在時鐘信號的驅(qū)動下,按照嚴(yán)格的時序有規(guī)律地一個節(jié)拍一個節(jié)拍地執(zhí)行各種操作。單片微機(jī)內(nèi)部設(shè)有定時電路,只需外接振蕩元件即可工作。外接振蕩元件一般選用晶體振蕩器,或用價廉的RC振蕩器,也可用外部時鐘源,作為振蕩元件。有的單片微機(jī)將振蕩元件也集成在芯片內(nèi)部。

80C51/80C52的封裝及邏輯圖如圖2-2所示。 若不需要通過并行總線擴(kuò)展芯片,常采用20引腳甚至僅14引腳的單片微機(jī),如Atmel公司的89C1051/2051/4051,或Philips公司的P87LPC764。它們的封裝及引腳見圖2–3。2.280C51單片微機(jī)的引腳及其功能按引腳的功能可分為三部分:

1.電源和晶振

·Vcc:運(yùn)行和程序校驗時接電源正端。·Vss:接地?!TAL1:輸入到單片微機(jī)內(nèi)部振蕩器的反相放大器。當(dāng)采用外部振蕩器時,對HMOS單片微機(jī),此引腳應(yīng)接地;對CHMOS單片微機(jī),此引腳作驅(qū)動端。 ·XTAL2:反相放大器的輸出,輸入到內(nèi)部時鐘發(fā)生器。當(dāng)采用外部振蕩器時,XTAL2接收振蕩器信號,對CHMOS,此引腳應(yīng)懸浮。

2.I/O·P0:8位、漏極開路的雙向I/O口。 當(dāng)使用片外存儲器(ROM及RAM)時,作低8位地址和8位數(shù)據(jù)總線分時復(fù)用。·P1:8位、準(zhǔn)雙向I/O口。

對于80C52, P1.0:T2,是定時器2的計數(shù)輸入端; P1.1:T2EX,是定時器2的外部輸入端。

·P2:8位、準(zhǔn)雙向I/O口。 當(dāng)使用片外存儲器(ROM及RAM)時,輸出高8位地址。

·P3:8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電路。P3提供各種替代功能。在提供這些功能時,其輸出鎖存器應(yīng)由程序置1。·串行口:P3.0:RXD串行輸入口。 P3.1:TXD串行輸出口?!ぶ袛啵篜3.2:INT0外部中斷0輸入。P3.3:INT1外部中斷1輸入?!ざ〞r器/計數(shù)器:P3.4:T0的外部輸入。P3.5:T1的外部輸入?!?shù)據(jù)存儲器選通:P3.6:WR,片外數(shù)據(jù)存儲器或I/O端口寫選通。P3.7:RD,片外數(shù)據(jù)存儲器或I/O端口讀選通。3.控制線·RST:復(fù)位輸入信號。在振蕩器工作時,在RST上作用兩個機(jī)器周期以上的高電平,將單片微機(jī)復(fù)位。·EA/Vpp:片外程序存儲器訪問允許信號?!馝A=1,選擇片內(nèi)程序存儲器●EA=0,則程序存儲器全部在片外。使用80C31時,EA必須接地,使用8751編程時,EA施加21V的編程電壓?!馎LE/PROG:地址鎖存允許信號。

在訪問片外存儲器或I/O時,用于鎖存低8位地址,以實(shí)現(xiàn)低地址與8位數(shù)據(jù)的隔離。

ALE以1/6的振蕩頻率固定速率輸出,可作為對外輸出的時鐘或用作外部定時脈沖?!馪SEN:片外程序存儲器讀選通信號。 在從片外程序存儲器取指期間,在每個機(jī)器周期中,當(dāng)PSEN有效時,程序存儲器的內(nèi)容被送上P0口(數(shù)據(jù)總線)。。2.3

80C51CPU的結(jié)構(gòu)和特點(diǎn)中央處理器CPU是單片微機(jī)內(nèi)部的核心部件,主要包括控制器、運(yùn)算器和工作寄存器及時序電路。2.3.1中央控制器識別指令,并根據(jù)指令性質(zhì)控制計算機(jī)各組成部件進(jìn)行工作的部件,與運(yùn)算器一起構(gòu)成中央處理器?!裨?0C51中,控制器包括程序計數(shù)器PC、程序地址寄存器、指令寄存器IR、指令譯碼器、條件轉(zhuǎn)移邏輯電路及定時控制邏輯電路。功能:控制指令的讀出、譯碼和執(zhí)行,對指令的執(zhí)行過程進(jìn)行定時控制,并根據(jù)執(zhí)行結(jié)果決定是否分支轉(zhuǎn)移。程序計數(shù)器PC(ProgramCounter) 一個獨(dú)立的計數(shù)器,不屬于內(nèi)部的特殊功能寄存器。 ●存放下一條將要從程序存儲器中取出的指令的地址。

●PC基本的工作過程是:讀指令時,PC將其中的數(shù)作為所取指令的地址輸出給程序存儲器,然后程序存儲器按此地址輸出指令字節(jié),同時PC本身自動加1,指向下一條指令地址。PC變化的軌跡決定程序的流程。 ●在執(zhí)行條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令時,PC將被置入轉(zhuǎn)移的目的地址,程序的流向發(fā)生變化。 ●在執(zhí)行調(diào)用指令或響應(yīng)中斷時,將子程序的入口地址或者中斷矢量地址送入PC,程序流向發(fā)生變化。2.數(shù)據(jù)指針DPTR

16位特殊功能寄存器.作為片外數(shù)據(jù)存儲器或I/O尋址用的地址寄存器。●既可以作為一個16位寄存器處理,也可以作為兩個8位寄存器處理,其高8位用DPH表示,低8位用DPL表示?!裨L問片外數(shù)據(jù)存儲器或I/O的指令為:MOVXA,@DPTR讀MOVX@DPTR,A寫●作為訪問程序存儲器時的基址寄存器。尋址程序存儲器中的表格、常數(shù)等單元,而不是尋址指令。MOVC A,@A+DPTRJMP @A+DPTRPC與DPTR: ⑴都是與地址有關(guān)的16位的寄存器。PC與程序存儲器的地址有關(guān),DPTR與數(shù)據(jù)存儲器或I/O的地址有關(guān)。作為地址寄存器使用時,PC與DPTR都是通過P0和P2口輸出的。PC的輸出與ALE及PSEN信號有關(guān);DPTR的輸出,則與ALE、WR、RD信號有關(guān)。 ⑵PC只能作為16位寄存器對待,是不可以訪問的。 DPTR可以作為16位寄存器,也可以作為兩個8位特殊功能寄存器,DPTR是可以訪問的。3.指令寄存器IR、指令譯碼器及控制邏輯

●IR是用來存放指令操作碼的專用寄存器。執(zhí)行程序時,首先進(jìn)行程序存儲器的讀操作,也就是根據(jù)程序計數(shù)器給出的地址從程序存儲器中取出指令,送指令寄存器IR,IR的輸出送指令譯碼器;●指令譯碼器對該指令進(jìn)行譯碼,譯碼結(jié)果送定時控制邏輯電路,如圖2-4所示?!穸〞r控制邏輯電路則根據(jù)指令的性質(zhì)發(fā)出一系列定時控制信號,控制計算機(jī)的各組成部件進(jìn)行相應(yīng)的工作,執(zhí)行指令。●條件轉(zhuǎn)移邏輯電路主要用來控制程序的分支轉(zhuǎn)移。轉(zhuǎn)移條件分為兩部分:內(nèi)部條件,程序狀態(tài)標(biāo)志位(PSW)和累加器的零狀態(tài);外部條件,F(xiàn)0和所有位尋址空間的狀態(tài)。

2.3.2運(yùn)算器運(yùn)算器主要用來實(shí)現(xiàn)對操作數(shù)的算術(shù)邏輯運(yùn)算和位操作的?!駥魉偷紺PU的數(shù)據(jù)進(jìn)行加、減、乘、除、比較、BCD碼校正等算術(shù)運(yùn)算。●“與”、“或”、“異或”等邏輯操作;移位、置位、清零、取反、加1、減1等操作?!?0C51的ALU還具有極強(qiáng)的位處理功能,如位置1、位清零、位“與”、位“或”等操作,對“面向控制”特別有用。

包括:算術(shù)邏輯運(yùn)算單元ALU、累加器A、暫存寄存器、B寄存器、程序狀態(tài)標(biāo)志寄存器PSW以及BCD碼運(yùn)算修正電路等。ALU有兩個輸入:⑴通過暫存器1的輸入:輸入數(shù)據(jù)來自寄存器、直接尋址單元(含I/O口)、內(nèi)部RAM、寄存器B或是立即數(shù)。⑵通過暫存器2或累加器的輸入:通過暫存器2的運(yùn)算的指令有ANLdirect,#dataORLdirect,#dataXRLdirect, #data其它的運(yùn)算,其輸入之一大多數(shù)也要通過累加器。

ALU有兩個輸出:

⑴數(shù)據(jù)經(jīng)過運(yùn)算后,其結(jié)果又通過內(nèi)部總線送回到累加器A中;⑵數(shù)據(jù)運(yùn)算后產(chǎn)生的標(biāo)志位輸出至程序狀態(tài)字PSW。2.

累加器A 簡稱ACC或A寄存器。 主要功能:累加器A存放操作數(shù),是ALU單元的輸入之一,也是ALU運(yùn)算結(jié)果的暫存單元。 單片微機(jī)中大部分?jǐn)?shù)據(jù)操作都要通過累加器A進(jìn)行,容易產(chǎn)生“瓶頸”現(xiàn)象。

3.B寄存器

乘法中,ALU的兩個輸入分別為A、B,運(yùn)算結(jié)果,A中放積的低8位,B中放積的高8位。除法中,被除數(shù)取自A,除數(shù)取自B,商數(shù)存放于A,余數(shù)存放于B。在其它情況下,B寄存器可以作為內(nèi)部RAM中的一個單元來使用。

4.程序狀態(tài)字PSW(ProgramStatusWord)

主要部分是算術(shù)邏輯運(yùn)算單元(ALU)的輸出。其中有些位(如F0)狀態(tài)可用軟件方法設(shè)定。

奇偶校驗位P、溢出標(biāo)志位OV、輔助進(jìn)位標(biāo)志位AC及進(jìn)位標(biāo)志位CY都是ALU運(yùn)算結(jié)果的直接輸出。

CYACF0RS1RS0OV-P

(1)P-奇偶標(biāo)志位 每個指令周期都由硬件來置位或清除。用以表示累加器A中值為1的個數(shù)的奇偶性:若累加器值為1的位數(shù)是奇數(shù),P置位(奇校驗);否則P清除(偶校驗)。如(A)=00001010,則P=0。在串行通信中,常以傳送奇偶校驗位來檢驗傳輸數(shù)據(jù)的可靠性。

(2)OV-溢出標(biāo)志位當(dāng)執(zhí)行運(yùn)算指令時,由硬件置位或清除。OV置位:運(yùn)算結(jié)果超出了目的寄存器A所能表示的帶符號數(shù)的范圍(一128~+127)。若以Ci表示位i向位i+l有進(jìn)位,則OV=C6⊕C7;當(dāng)位6向位7有進(jìn)位(借位)而位7不向CY進(jìn)位(借位)時;或當(dāng)位7向C進(jìn)位(借位)而位6不向位7進(jìn)位(借位)時,OV標(biāo)志置位,表示帶符號數(shù)運(yùn)算時運(yùn)算結(jié)果是錯誤的;否則,清除OV標(biāo)志,運(yùn)算結(jié)果正確。

對于MUL乘法,當(dāng)A、B兩個乘數(shù)的積超過255時OV置位;否則,OV=0。若OV=0時,只需從A寄存器中取積。對于DIV除法,若除數(shù)為0時,OV=1;否則,OV=0。

(3)RS1、RS0-工作寄存器組選擇位 用于設(shè)定當(dāng)前工作寄存器的組號。工作寄存器共有4組,其對應(yīng)關(guān)系見表2–1

(4)AC-輔助進(jìn)位標(biāo)志位

當(dāng)進(jìn)行加法或減法運(yùn)算時,若低4位向高4位數(shù)發(fā)生進(jìn)位或借位時,AC將被硬件置位;否則,被清除。 在十進(jìn)制調(diào)整指令DA中要用到AC標(biāo)志位狀態(tài)。(5)

CY-進(jìn)位標(biāo)志位。

在進(jìn)行算術(shù)運(yùn)算時,可以被硬件置位或清除,以表示運(yùn)算結(jié)果中高位是否有進(jìn)位或借位。

在布爾處理機(jī)中CY被認(rèn)為是位累加器。

(6)F0-用戶標(biāo)志位。 開機(jī)時該位為“0”。 用戶可根據(jù)需要,通過位操作指令置“l(fā)”或者清“0”。2.3.3時鐘電路及CPU的工作時序 時鐘電路用于產(chǎn)生單片微機(jī)工作所需要的時鐘信號,而時序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。 單片微機(jī)本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地按時序進(jìn)行工作。

1.

時鐘電路

在80C51內(nèi)帶有時鐘電路,只需要在片外通過XTALI和XTAL2引腳接入定時控制元件(晶體振蕩器和電容),即可構(gòu)成一個穩(wěn)定的自激振蕩器。在80C51芯片內(nèi)部有一個高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容。80C51的時鐘電路如圖2–6所示。

時鐘電路由下列幾部分組成:振蕩器及定時控制元件、時鐘發(fā)生器、地址鎖存允許信號ALE。

(1)振蕩器及定時控制元件在80C51芯片內(nèi)部有一個高增益反相放大器,其輸入端為引腳XTAL1,其輸出端為引腳XTAL2?!裥枰谄馔ㄟ^XTAL1和XTAL2引腳跨接晶體振蕩器和微調(diào)電容,形成反饋電路,振蕩器即可工作。振蕩器的結(jié)構(gòu)和振蕩電路原理如圖2-7所示?!裾袷幤鞯墓ぷ骺梢杂蒔D位(特殊功能寄存器PCON中的一位)控制。當(dāng)PD置1時,振蕩器停止工作,系統(tǒng)進(jìn)入低功耗工作狀態(tài)。

●振蕩器的工作頻率一般在1.2~12MHz之間,有些單片微機(jī)的頻率范圍高端可達(dá)40MHz,低端可達(dá)0Hz?!裨谟啥嗥瑔纹C(jī)組成的系統(tǒng)中,為了各單片微機(jī)之間時鐘信號的同步,應(yīng)當(dāng)引入唯一的公用外部脈沖信號作為各單片微機(jī)的振蕩脈沖。

(2)

內(nèi)部時鐘發(fā)生器 內(nèi)部時鐘發(fā)生器實(shí)質(zhì)上是一個2分頻的觸發(fā)器。其輸入由振蕩器引入的,輸出為兩個節(jié)拍的時鐘信號。輸出的前半周期,節(jié)拍1(P1)信號有效;后半周期,節(jié)拍2(P2)信號有效。每個輸出周期為一個計算機(jī)CPU的狀態(tài)周期,即時鐘發(fā)生器的輸出為狀態(tài)時鐘。每個狀態(tài)周期內(nèi)包括一個P1節(jié)拍和一個P2節(jié)拍,形成CPU內(nèi)的基本定時時鐘。

(3)

ALE信號 狀態(tài)時鐘經(jīng)過3分頻之后,產(chǎn)生ALE引腳上的信號輸出。2﹒時序定時單位

時序是用定時單位來說明的。80C51的時序定時單位共有4個:節(jié)拍、狀態(tài)、機(jī)器周期和指令周期。(1)節(jié)拍P振蕩脈沖的周期稱為節(jié)拍。(2)

狀態(tài)S一個狀態(tài)S包含兩個節(jié)拍,其前半周期對應(yīng)的節(jié)拍叫P1,后半周期對應(yīng)的節(jié)拍叫P2。(3)

機(jī)器周期

80C51采用定時控制方式,有固定的機(jī)器周期。規(guī)定一個機(jī)器周期的寬度為6個狀態(tài),并依次表示為S1~S6。一個機(jī)器周期共有12個振蕩脈沖周期,是振蕩脈沖的12分頻。 機(jī)器周期是單片微機(jī)的最小時間單位。(4)

指令周期 執(zhí)行一條指令所需要的時間稱為指令周期。它是最大的時序定時單位。80C51的指令周期根據(jù)指令的不同,可包含有1、2、3、4個機(jī)器周期。3.80C51指令時序

80C51共有111條指令,全部指令按其長度可分為單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。

圖2-8所表示的是幾種典型單機(jī)器周期和雙機(jī)器周期指令的時序。

(1)單機(jī)器周期指令,如圖2-8(a)、(b)所示。雙字節(jié)時,執(zhí)行在S1P2開始,操作碼被讀入指令寄存器;在S4P2時,再讀入第二個字節(jié)。單字節(jié)時,執(zhí)行在S1P2開始,操作碼被讀入指令寄存器;在S4P2時仍有讀操作,但被讀入的字節(jié)(即下一操作碼)被忽略,且此時PC并不增量。以上兩種情況均在S6P2時結(jié)束操作。

(2)雙機(jī)器周期指令,如圖2-8(c)、(d)所示。 雙字節(jié)時,執(zhí)行在S1P2開始,操作碼被讀入指令寄存器;在S4P2時,再讀入的字節(jié)被忽略。由S5開始送出外部數(shù)據(jù)存儲器的地址,隨后是讀或?qū)懙牟僮鳌T谧x、寫期間,ALE不輸出有效信號。在第二個機(jī)器周期,片外數(shù)據(jù)存儲器也尋址和選通,但不產(chǎn)生取指操作。單字節(jié)時,執(zhí)行在S1P2開始,在整個兩個機(jī)器周期中,共發(fā)生4次讀操作,但是后3次操作都無效。一般,算術(shù)/邏輯操作發(fā)生在節(jié)拍1期間,內(nèi)部寄存器對寄存器的傳送發(fā)生在節(jié)拍2期間。

圖中的ALE信號是為地址鎖存而定義的,該信號每有效一次對應(yīng)單片微機(jī)進(jìn)行一次讀指令操作。在一個機(jī)器周期中,ALE信號兩次有效,第一次在S1P2和S2P1期間,第二次在S4P2和S5P1期間,有效寬度為一個狀態(tài)周期S。(1)單字節(jié)單周期指令(如INCA)只需進(jìn)行一次讀指令操作。當(dāng)?shù)诙€ALE有效時,由于PC沒有加1,所以讀出的還是原指令。(2)雙字節(jié)單周期指令(如ADDA,#data)ALE的兩次讀操作都是有效的,第一次是讀指令操作碼,第二次是讀指令第二字節(jié)。(3)單字節(jié)雙周期指令(如INCDPTR)兩個機(jī)器周期共進(jìn)行4次讀指令的操作,但其中后3次的讀操作全是無效的。(4)單字節(jié)雙周期指令(如MOVX類指令) 執(zhí)行MOVX類指令時,先在ROM讀取指令,然后對外部RAM進(jìn)行讀/寫操作。第一機(jī)器周期時,與其它指令一樣,第一次讀指令(操作碼)有效,第二次讀指令操作無效。第二機(jī)器周期時,進(jìn)行外部RAM訪問,此時與ALE信號無關(guān),不產(chǎn)生讀指令操作。2.4存儲器結(jié)構(gòu)和地址空間

單片微機(jī)的存儲器有兩種基本結(jié)構(gòu):普林斯頓(Princeton)結(jié)構(gòu):程序和數(shù)據(jù)合用一個存儲器空間的結(jié)構(gòu); 哈佛結(jié)構(gòu):程序存儲器和數(shù)據(jù)存儲器截然分開,分別尋址的結(jié)構(gòu)。 80C51系列采用哈佛結(jié)構(gòu)。圖2–9為80C51存儲器映象圖。在物理上設(shè)有4個存儲器空間·程序存儲器: ①片內(nèi)程序存儲器; ②片外程序存儲器?!?shù)據(jù)存儲器: ③片內(nèi)數(shù)據(jù)存儲器; ④片外數(shù)據(jù)存儲器。

在邏輯上設(shè)有3個存儲器地址空間

①片內(nèi)、片外統(tǒng)一的64KB程序存儲器地址空間;②片內(nèi)256(80C52為384)B數(shù)據(jù)存儲器地址空間;③片外64KB的數(shù)據(jù)存儲器地址空間。

片內(nèi)數(shù)據(jù)存儲器空間,在物理上又包含兩部分:80C51:0~127B為片內(nèi)數(shù)據(jù)存儲器空間;128~255B為特殊功能寄存器空間。80C52:0~127B為片內(nèi)數(shù)據(jù)存儲器空間;128~255B共128個字節(jié)是數(shù)據(jù)存儲器和特殊 功能寄存器地址重疊空間。80C51有三種基本的尋址空間:·64KB的片內(nèi)、外程序存儲器尋址空間;·64KB的片外數(shù)據(jù)存儲器尋址空間;·256(或384)B的片內(nèi)數(shù)據(jù)存儲器尋址空間,其中包括特殊功能寄存器尋址空間。

2.4.l程序存儲器

存放經(jīng)調(diào)試正確的應(yīng)用程序和表格之類的固定常數(shù)。采用16位的程序計數(shù)器PC和16位的地址總線,可擴(kuò)展的地址空間為64KB。⒈程序存儲器分為片內(nèi)和片外兩部分?!馝A引腳接高電平時,程序從片內(nèi)程序存儲器0000H開始執(zhí)行;當(dāng)PC值超出片內(nèi)程序存儲器容量時,會自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行?!馝A引腳接低電平時,迫使系統(tǒng)全部執(zhí)行片外程序存儲器0000H開始存放的程序。對于片內(nèi)無ROM的80C31/80C32,應(yīng)將EA引腳固定接低電平,以迫使系統(tǒng)全部執(zhí)行片外程序存儲器程序。⒉程序存儲器的特定的程序入口地址

由于系統(tǒng)復(fù)位后的PC地址為0000H,故系統(tǒng)從0000H單元開始取指,執(zhí)行程序。從0003H~002DH單元被保留用于6個中斷源的中斷服務(wù)程序的入口地址。

復(fù)位 0000H外部中斷0 0003H計時器T0溢出 000BH外部中斷1 0013H計時器T1溢出 001BH串行口中斷 0023H計時器T2/T2EX 002BH(80C52)

⒊片內(nèi)程序存儲器

類型有:掩膜ROM、OTPROM和MTPROM(包括EPROM及E2PROM等)。87C51中為4KB的可編程、可改寫的只讀存儲器EPROM;89C51中為4KB的可編程、可改寫的只讀存儲器EEPROM;80C31片內(nèi)沒有程序存儲器,使用時必須由片外進(jìn)行擴(kuò)展。片內(nèi)程序存儲器的容量目前已達(dá)到62KB。

由RAM構(gòu)成,存放隨機(jī)數(shù)據(jù)。 ●片內(nèi)數(shù)據(jù)存儲器地址只有8位,最大尋址范圍為256個字節(jié)。 ●片外數(shù)據(jù)存儲器有16位數(shù)據(jù)指針DPTR,用于訪問片外數(shù)據(jù)存儲器。80C51具有64KB的數(shù)據(jù)存儲器擴(kuò)展能力。2.4.2

內(nèi)部數(shù)據(jù)存儲器

片內(nèi)數(shù)據(jù)存儲器在物理上又分成兩個獨(dú)立的功能不同的區(qū)?!衿瑑?nèi)數(shù)據(jù)RAM區(qū):對80C51,為0~127B;對80C52,為0~255B?!裉厥夤δ芗拇嫫鱏FR區(qū):地址空間的高128B。 對于80C52,高128B的RAM區(qū)和SFR區(qū)的地址空間是重疊的。訪問高128BRAM區(qū)時,選用間接尋址方式;訪問SFR區(qū),則應(yīng)選用直接尋址方式。圖2-10為片內(nèi)數(shù)據(jù)存儲器的地址空間分布圖。⒈片內(nèi)數(shù)據(jù)RAM區(qū)

⑴工作寄存器區(qū)用寄存器直接尋址的區(qū)域?!駨膱D2–10中可知,其中片內(nèi)數(shù)據(jù)RAM區(qū)的0~31(00H~1FH),共32個單元,是4個通用工作寄存器組(表2–l),每個組包含8個8位寄存器,編號為R0~R7。

●在某一時刻,只能選用一個寄存器組使用。其選擇是通過軟件對程序狀態(tài)字(PSW)中的RS0、RS1兩位的設(shè)置來實(shí)現(xiàn)的。累加器ACC、B、DPTR及CY(布爾處理器的累加器)一般也作為寄存器對待。寄存器R0、R1通常用做間接尋址時的地址指針。

⑵位尋址區(qū)從片內(nèi)數(shù)據(jù)RAM區(qū)的32~47(20H~2FH)的16個字節(jié)單元,共包含128位,是可位尋址的RAM區(qū)。這16個字節(jié)單元,既可進(jìn)行字節(jié)尋址,又可位尋址。字節(jié)地址與位地址之間的關(guān)系見表2–2。可位尋址的特殊功能寄存器。在這一存儲器空間所有位都具有位地址。

字節(jié)尋址區(qū)從片內(nèi)數(shù)據(jù)RAM區(qū)的48~127(30H~7FH),共80個字節(jié)單元,可以采用直接字節(jié)尋址的方法訪問。對于80C52,還有高128B的數(shù)據(jù)RAM區(qū)。這一區(qū)域只能采用間接字節(jié)尋址的方法訪問。

堆棧區(qū)及堆棧指示器SP(stackpointer)

:堆棧是在片內(nèi)數(shù)據(jù)RAM區(qū)中,數(shù)據(jù)先進(jìn)后出或后進(jìn)先出的區(qū)域。

SP:在80C51中存放當(dāng)前的堆棧棧頂所指存儲單元地址的一個8位寄存器。●堆棧有兩種形式,一是向上生成,二是向下生成。80C51的堆棧是向上生成的:即進(jìn)棧時SP的內(nèi)容是增加的;出棧時SP的內(nèi)容是減少的?!裣到y(tǒng)復(fù)位后,SP內(nèi)容為07H,以07H為棧底,壓棧的內(nèi)容從08H單元開始存放。●堆棧是為子程序調(diào)用和中斷操作而設(shè)立的,具體功能:保護(hù)斷點(diǎn)和保護(hù)現(xiàn)場。在80C51中,堆棧在子程序調(diào)用和中斷時會把斷點(diǎn)地址自動進(jìn)棧和出棧,還有對堆棧的進(jìn)棧和出棧的指令(PUSH、POP)操作,用于保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場?!褡映绦蛘{(diào)用和中斷都允許嵌套,并可以多級嵌套,而現(xiàn)場的保護(hù)也往往使用堆棧,要注意給堆棧以一定的深度。⒉特殊功能寄存器SFR(SpecialFunctionRegister)區(qū)SFR是80C51中各功能部件所對應(yīng)的寄存器,用以存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)的區(qū)域。80C51設(shè)有128B片內(nèi)數(shù)據(jù)RAM結(jié)構(gòu)的特殊功能寄存器空間區(qū)。除程序計數(shù)器PC和4個通用工作寄存器組外,其余所有的寄存器都在這個地址空間之內(nèi)。

80C51共定義了21個特殊功能寄存器,其名稱和字節(jié)地址列于表2-3中。在80C52中,除上述80C51的21個之外,還增加了5個特殊功能寄存器,共計26個。 在80C51的21個(80C52的26個)特殊功能寄存器中,字節(jié)地址中低位地址為0H或8H的特殊功能寄存器,除有字節(jié)尋址能力外,還有位尋址能力。這些特殊功能寄存器與位地址的對應(yīng)關(guān)系見表2-4。2.4.3片外數(shù)據(jù)存儲區(qū)

在外部存放數(shù)據(jù)的區(qū)域,這一區(qū)域只能用寄存器間接尋址的方法訪問。指令助記符為MOVX。 ●當(dāng)用R0、R1尋址時,由于R0、R1為8位寄存器,最大尋址范圍為256B; ●當(dāng)用DPTR尋址時,由于DPTR為16位寄存器,最大尋址范圍為64KB。2.5并行輸入/輸出端口

80C51共有4個8位的并行雙向口,計有32根輸入/輸出(I/O)口線。各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器所組成。由于它們在結(jié)構(gòu)上的一些差異,故各口的性質(zhì)和功能也就有了差異。它們之間的異同列于表2-5。2.5.1P0口

多功能的8位口,字節(jié)訪問地址為80H,位訪問地址為80H~87H。⒈位結(jié)構(gòu)

P0口位結(jié)構(gòu)原理圖見圖2-11。

P0口中一個多路開關(guān):多路開關(guān)的輸入有兩個,地址/數(shù)據(jù)輸出;輸出鎖存器的輸出/Q。多路開關(guān)的輸出用于控制輸出FETQ0的導(dǎo)通和截止。多路開關(guān)的切換由內(nèi)部控制信號控制。

⑵P0口的輸出上拉電路導(dǎo)通和截止受內(nèi)部控制信號和地址/數(shù)據(jù)信號共同(相“與”)來控制。

當(dāng)內(nèi)部信號置1時,多路開關(guān)接通地址/數(shù)據(jù)輸出端。當(dāng)?shù)刂罚瘮?shù)據(jù)輸出線置1時,控制上拉電路的“與”門輸出為1,上拉FET導(dǎo)通,同時地址/數(shù)據(jù)輸出通過反相器輸出0,控制下拉FET截止,這樣A點(diǎn)電位上拉,地址/數(shù)據(jù)輸出線為1。當(dāng)?shù)刂罚瘮?shù)據(jù)輸出線置0時,“與”門輸出為0,上拉FET截止,同時地址/數(shù)據(jù)輸出通過反相器輸出1,控制下拉FET導(dǎo)通,這樣A點(diǎn)電位下拉,地址/數(shù)據(jù)輸出線為0。此時的輸出狀態(tài)隨地址/數(shù)據(jù)線而變,P0口可以作為地址/數(shù)據(jù)復(fù)用總線使用。這時上下兩個FET處于反相,構(gòu)成了推拉式的輸出電路,其負(fù)載能力大大增加。此時的P0口相當(dāng)一個雙向口。

⑷當(dāng)內(nèi)部信號置0時,多路開關(guān)接通輸出鎖存器的Q端·由于內(nèi)部控制信號為0,與門關(guān)閉,上拉FET截止,形成P0口的輸出電路為漏極開路輸出。

·輸出鎖存器的Q端引至下拉FET柵極,P0口的輸出狀態(tài)由下拉電路決定。

●在P0口作輸出口用時,若P0.i輸出1,輸出鎖存器的Q端為0,下拉FET截止,這時P0.i為漏極開路輸出;若P0.i輸出0,輸出鎖存器的Q端為1,下拉FET導(dǎo)通,P0.i輸出低電平?!裨赑0口作輸入口用時,為了使P0.i能正確讀入數(shù)據(jù),必須先使P0.i置1。這樣,下拉FET也截止,P0.i處于懸浮狀態(tài)。A點(diǎn)的電平由外設(shè)的電平而定,通過輸入緩沖器讀入CPU,P0口相當(dāng)于一個高阻抗的輸入口。⒉P0口的功能

⑴作I/O口使用相當(dāng)于一個真正的雙向口:輸出鎖存、輸入緩沖,但輸入時需先將口置1;每根口線可以獨(dú)立定義為輸入或輸出。它具有雙向口的一切特點(diǎn)。與其它口的區(qū)別是,輸出時為漏極開路輸出,與NMOS的電路接口時必須要用電阻上拉,才能有高電平輸出;輸入時為懸浮狀態(tài),為一個高阻抗的輸入口。

⑵作地址/數(shù)據(jù)復(fù)用總線用此時P0口為一個準(zhǔn)雙向口。但是有上拉電阻,作數(shù)據(jù)輸入時,口也不是懸浮狀態(tài)。作地址/數(shù)據(jù)復(fù)用總線用。作數(shù)據(jù)總線用時,輸入/輸出8位數(shù)據(jù)D0~D7;作地址總線用時,輸出低8位地址A0~A7。當(dāng)P0口作地址/數(shù)據(jù)復(fù)用總線用之后,就再也不能作I/O口使用了。

8位口,字節(jié)訪問地址為90H,位訪問地址為90H~97H。

⒈位結(jié)構(gòu)和工作原理

P1口的位結(jié)構(gòu)如圖2-12所示。

包含輸出鎖存器、輸入緩沖器BUF1(讀引腳)、BUF2(讀鎖存器)以及由FET晶體管Q0與上拉電阻組成的輸出/輸入驅(qū)動器。P1口的工作過程分析如下:

P1.i位作輸出口用時:CPU輸出0時,D=0,Q=0,Q=l,晶體管Q0導(dǎo)通,A點(diǎn)被下拉為低電平,即輸出0;CPU輸出1時,D=l,Q=1,Q=0,晶體管Q0截止,A點(diǎn)被上拉為高電平,即輸出l。2.5.2P1口

P1.i位作輸入口用時:先向P1.i位輸出高電平,使A點(diǎn)提升為高電平,此操作稱為設(shè)置P1.i為輸入線。若外設(shè)輸入為1時A點(diǎn)為高電平,由BUFI讀入總線后B點(diǎn)也為高電平;若外設(shè)輸入為0時A點(diǎn)為低電平,由BUF1讀入總線后B點(diǎn)也為低電平。⒉、P1口的特點(diǎn)

輸出鎖存器,輸出時沒有條件;

輸入緩沖,輸入時有條件,即需要先將該口設(shè)為輸入狀態(tài),先輸出1;

工作過程中無高阻懸浮狀態(tài),也就是該口不是輸入態(tài)就是輸出態(tài)。具有這種特性的口不屬于“真正”的雙向口,而被稱為“準(zhǔn)”雙向口。

⒊P1口的操作

⑴字節(jié)操作和位操作CPU對于P1口可以作為一個8位口來操作,也可以按位來操作。有關(guān)字節(jié)操作的指令有:輸出: MOV P1,A ;P1←A MOV P1,#data ;P1←#data MOV P1,direct ;P1←direct輸入: MOV A,P1 ;A←P1MOV direct,Pl ;direct←Pl有關(guān)位操作的指令有: 置位、清除:SETBP1.i ;P1.i←1 CLR Pl.i ;P1.i←0 輸入、輸出:MOVP1.i,C ;P1.i←CY MOVC,P1.i ;CY←P1.i 判跳: JB P1.i,rel;P1.i=1,跳轉(zhuǎn) JBC P1.i,rel;P1.i=1,跳轉(zhuǎn)且 ;清P1.i=0 邏輯運(yùn)算:ANL C,P1.i ;CY←(P1.i·CY) ORLC,P1.i ;CY←(P1.i+CY)P1.i中的i=0,…7。P1口不僅可以以8位一組進(jìn)行輸入、輸出操作,還可以逐位分別定義各口線為輸入線或輸出線。例如: ORL P1,#00000010B 使P1.l位口線輸出l,而使其余各位不變。 ANL P1,#11111101B 使P1.1位線輸出0,而使其余各位不變。⑵讀引腳操作和讀鎖存器操作從P1口的位結(jié)構(gòu)圖中可以看出,有兩種讀口的操作:一種是讀引腳操作,一種是讀鎖存器操作。

在響應(yīng)CPU輸出的讀引腳信號時,端口本身引腳的電平值通過緩沖器BUF1進(jìn)入內(nèi)部總線。這種類型的指令,執(zhí)行之前必須先將端口鎖存器置1,使A點(diǎn)處于高電平,否則會損壞引腳,而且也使信號無法讀出。

這種類型的指令有: MOV A,P1 ;A←P1 MOV direct,P1 ;direct←P1

在執(zhí)行讀鎖存器的指令時,CPU首先完成將鎖存器的值通過緩沖器BUF2讀入內(nèi)部,進(jìn)行修改,然后重新寫到鎖存器中去,這就是“讀一修改一寫”指令。 這種類型的指令包含所有的口的邏輯操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。

⑶P1口的多功能線在80C52中,P1.0和P1.1口線是多功能的,即除作一般雙向I/O口線之外,還具有下列功能:

P1.0:T2的外部輸入端T2;P1.1:T2的外部控制端T2EX。

多功能的8位口,字節(jié)訪問地址為A0H,位訪問地址為A0H~A7H。

⒈P2口位結(jié)構(gòu)和工作原理

P2口位結(jié)構(gòu)原理圖示于圖2-13。多路開關(guān)的輸入有兩個:一個是口輸出鎖存器的輸出端Q;一個是地址寄存器(PC或DPTR)的高位輸出端。多路開關(guān)的輸出經(jīng)反相器反相后去控制輸出FET的Q0。多路開關(guān)的切換由內(nèi)部控制信號控制。輸出鎖存器的輸出端是Q而不是Q,多路開關(guān)之后需接反相器。

2.5.3P2口

P2口的工作狀態(tài)是I/O口狀態(tài)。

在內(nèi)部控制信號的作用下,多路開關(guān)的輸入投向輸出鎖存器的輸出Q(C點(diǎn))側(cè),這樣多路開關(guān)將接通輸出鎖存器。若經(jīng)由內(nèi)部總線輸出0,輸出鎖存器的Q端為0,信號經(jīng)多路開關(guān)和反相器后輸出1,Q0導(dǎo)通,A點(diǎn)為0,輸出低電平;若經(jīng)由內(nèi)部總線輸出1,輸出鎖存器的Q端為1,反相器后輸出0,Q0截止,A點(diǎn)為1,輸出高電平。

P2口的工作狀態(tài)是輸出高8位地址。在內(nèi)部控制信號的作用下,多路開關(guān)的輸入投向地址輸出(B點(diǎn))側(cè),這樣多路開關(guān)將接通地址寄存器輸出。A點(diǎn)的電平將隨地址輸出的0、1而0、1地變化。⒉

P2口的功能⑴作I/O口使用時,P2口為一準(zhǔn)雙向口。⑵作地址輸出時,P2口可以輸出程序存儲器或片外數(shù)據(jù)存儲器的高8位地址,與P0輸出的低地址一起構(gòu)成16位地址線,從而可分別尋址64KB的程序存儲器或片外數(shù)據(jù)存儲器。地址線是8位一起自動輸出的。⒊P2口使用中注意的問題⑴由于P2口的輸出鎖存功能,在取指周期內(nèi)或外部數(shù)據(jù)存儲器讀、寫選通期間,輸出的高8位地址是鎖存的,故無需外加地址鎖存器。⑵在系統(tǒng)中如果外接有程序存儲器,由于訪問片外程序存儲器的連續(xù)不斷的取指操作,P2口需要不斷送出高位地址,這時P2口的全部口線均不宜再作I/O口使用。2.5.4P3口多功能的8位口,字節(jié)訪問地址為B0H,位訪問地址為B0H~B7H。⒈位結(jié)構(gòu)與工作原理P3口的位結(jié)構(gòu)原理如圖2-14所示。

與非門有兩個輸入端:一個為口輸出鎖存器的Q端,另一個為替代功能的控制輸出。與非門的輸出端控制輸出FET管Q0。

有兩個輸入緩沖器,替代輸入功能取自第一個緩沖器的輸出端;I/O口的通用輸入信號取自第二個緩沖器的輸出端。輸出工作過程:

當(dāng)替代輸出功能B點(diǎn)置1時,輸出鎖存器的輸出可以順利通到引腳P3.i。其工作狀況與P1口相類似。這時P3口的工作狀態(tài)為I/O口,顯然此時該口具有準(zhǔn)雙向口的性質(zhì)。

當(dāng)輸出鎖存器的輸出置1時,替代輸出功能可以順利通到引腳P3.i。

若替代輸出為0時,因與非門的C點(diǎn)已置l,現(xiàn)B點(diǎn)為0,故與非門的輸出為l,使Q0導(dǎo)通,從而使A點(diǎn)也為0。若替代輸出為1時,與非門的輸出為0,Q0截止,從而使A點(diǎn)也為高電平。這時P3口的工作狀態(tài)處于替代輸出功能狀態(tài)。⒉P3口的功能⑴可作I/O口使用,為準(zhǔn)雙向口。既可以字節(jié)操作,也可以位操作;既可以8位口操作,也可以逐位定義口線為輸入線或輸出線;既可以讀引腳,也可以讀鎖存器,實(shí)現(xiàn)“讀一修改一輸出”操作。⑵可以作為替代功能的輸入、輸出。

替代輸入功能:P3.0:RXD,串行輸入口。P3.2:INT0,外部中斷0的請求。P3﹒3:INT1,外部中斷1的請求。P3.4:T0,T0外部計數(shù)脈沖輸入。P3.5:T1,T1外部計數(shù)脈沖輸入。

替代輸出功能: P3.l:TXD,串行輸出口。 P3.6:WR外部數(shù)據(jù)存儲器或I/O端口寫選通。 P3.7:RD外部數(shù)據(jù)存儲器或I/O端口讀選通。2.6布爾(位)處理器一個完整的一位微計算機(jī),它具有自已的CPU、寄存器、I/O、存儲器和指令集。一位機(jī)在開關(guān)決策、邏輯電路仿真和實(shí)時控制方面非常有效。位處理器系統(tǒng)包括以下幾個功能部件:⑴位累加器:借用進(jìn)位標(biāo)志位CY。在布爾運(yùn)算中CY是數(shù)據(jù)源之一,又是運(yùn)算結(jié)果的存放處,位數(shù)據(jù)傳送的中心。根據(jù)CY的狀態(tài)實(shí)現(xiàn)程序條件轉(zhuǎn)移:JCrel、JNCrel。⑵位尋址的RAM:內(nèi)部RAM位尋址區(qū)中的0~127位(20H~2FH)。⑶位尋址的寄存器:特殊功能寄存器(SFR)中的可以位尋址的位。⑷位尋址的I/O口:并行I/O口中的可以位尋址的位(如P1.0)。⑸位操作指令系統(tǒng):位操作指令可實(shí)現(xiàn)對位的置位、清0、取反、位狀態(tài)判跳、傳送、位邏輯運(yùn)算、位輸入/輸出等操作。

共有4種工作方式●復(fù)位●程序執(zhí)行●低功耗●編程和校驗。2.780C51單片微機(jī)的工作方式

⒈復(fù)位操作主要功能是把PC初始化為0000H,使單片微機(jī)從0000H單元開始執(zhí)行程序。當(dāng)由于程序運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,可以按復(fù)位鍵以重新啟動,也可以通過監(jiān)視定時器來強(qiáng)迫復(fù)位。

2.7.1復(fù)位方式除PC之外,復(fù)位操作還對其它一些特殊功能寄存器有影響,它們的復(fù)位狀態(tài)見表2–6。復(fù)位操作還對單片微機(jī)的個別引腳信號有影響。例如在復(fù)位期間,ALE和PSEN信號變?yōu)闊o效狀態(tài),即ALE=l,PSEN=l。

⒉復(fù)位信號及其產(chǎn)生

⑴復(fù)位信號RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)2個機(jī)器周期以上。若使用頻率為6MHz的晶振,則復(fù)位信號應(yīng)持續(xù)4μs以上。產(chǎn)生復(fù)位信號的電路邏輯圖如圖2-15所示。整個復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(RST)送施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個機(jī)器周期的S5P2時刻對施密特觸發(fā)器的輸出進(jìn)行采樣,然后才能得到內(nèi)部復(fù)位操作所需要的信號。復(fù)位操作有上電自動復(fù)位、按鍵電平復(fù)位和外部脈沖復(fù)位三種方式,示于圖2-16中

單片微機(jī)的基本工作方式。復(fù)位后PC=0000H,程序執(zhí)行總是從0000H開始的。一般在0000H開始的單元中存放一條無條件轉(zhuǎn)移指令,跳轉(zhuǎn)到實(shí)際主程序的入口去執(zhí)行。比如: ORG 0000H SJMP MAIN ;轉(zhuǎn)主程序

2.7.2程序執(zhí)行方式

80C51有兩種低功耗方式,即待機(jī)方式和掉電保護(hù)方式。待機(jī)方式和掉電保護(hù)方式時涉及的硬件如圖2-17所示。 待機(jī)方式和掉電保護(hù)方式都是由PCON的有關(guān)位來控制的。2.7.3低功耗工作方式

SMOD:波特率倍增位,在串行通訊時使用。GF1、GF0:通信標(biāo)志位1、0。 WLF:看門狗定時器T3重裝標(biāo)志位。PD:掉電方位式,PD=1,則進(jìn)入掉電方式。 IDL:待機(jī)方式位,IDL=1,則進(jìn)入待機(jī)方式。若PD和IDL同時為1,則先激活掉電方式。SMOD

---GF1GF0PDIDL電源控制及波特率選擇寄存器PCON

⑴使用指令使PCON寄存器IDL位置1,則80C51進(jìn)入待機(jī)方式

由圖2-17中可看出這時振蕩器仍然運(yùn)行,并向中斷邏輯、串行口和定時器/計數(shù)器電路提供時鐘,中斷功能繼續(xù)存在

向CPU提供時鐘的電路被阻斷,CPU不能工作,與CPU有關(guān)的如SP、PC、PSW、ACC以及全部通用寄存器都被凍結(jié)在原狀態(tài)。⒈待機(jī)方式⑵可以采用中斷方式或硬件復(fù)位來退出待機(jī)方式。 在待機(jī)方式下,若產(chǎn)生一個外部中斷請求信號,在單片微機(jī)響應(yīng)中斷的同時,PCON.0位(IDL位)被硬件自動清“0”,單片微機(jī)就退出待機(jī)方式而進(jìn)入正常工作方式。在中斷服務(wù)程序中安排一條RETI指令,就可以使單片微機(jī)恢復(fù)正常工作,從設(shè)置待機(jī)方式指令的下一條指令開始繼續(xù)執(zhí)行程序。⒉掉

電保護(hù)方式

⑴PCON寄存器的PD位控制單片微機(jī)進(jìn)入掉電保護(hù)方式。 當(dāng)80C51檢測到電源故障時,除進(jìn)行信息保護(hù)外,還應(yīng)把PCON.1位置“1”,使之進(jìn)入掉電保護(hù)方式。單片微機(jī)一切工作都停止,只有內(nèi)部RAM單元的內(nèi)容被保護(hù)。

⑵只能依靠復(fù)位退出掉電保護(hù)方式。 80C51備用電源由Vcc端引入。當(dāng)Vcc恢復(fù)正常后,只要硬件復(fù)位信號維持10ms,就能使單片微機(jī)退出掉電保護(hù)方式,CPU則從進(jìn)入待機(jī)方式的下一條指令開始重新執(zhí)行程序。在待機(jī)和掉電保護(hù)期間引腳的狀態(tài)見表2-7。

當(dāng)電源電壓為5V,時鐘頻率為12MHz時,80C51正常運(yùn)行時電源電流為20mA。休閑方式時,電源電流降為5mA,掉電方式時,電源電流降為75μA??梢姷凸目刂茖档凸氖欠浅S行У摹?/p>

對于片內(nèi)具有EP

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論