《單片機系統(tǒng)設計及工程應用》課件第2章_第1頁
《單片機系統(tǒng)設計及工程應用》課件第2章_第2頁
《單片機系統(tǒng)設計及工程應用》課件第2章_第3頁
《單片機系統(tǒng)設計及工程應用》課件第2章_第4頁
《單片機系統(tǒng)設計及工程應用》課件第2章_第5頁
已閱讀5頁,還剩129頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2.151系列單片機家族成員2.251系列單片機內部組成2.3單片機CPU基本模型2.451系列單片機存儲器結構2.5單片機的并行端口及應用2.6單片機時序2.7時鐘及復位電路習題2

MCS-51單片機是由美國的Intel公司開發(fā)研制的。該系列的單片機以其典型的體系結構和完善的專用寄存器集中管理方式,方便的邏輯位操作功能及豐富的指令系統(tǒng),堪稱一代“名機”,為之后的其他單片機的發(fā)展奠定了基礎。正因為其優(yōu)越的性能和完善的結構,導致后來的許多單片機生產廠商多沿用或參考了其體系結構。像Atmel、Philips、Dallas等著名的半導體公司都推出了兼容MCS-51的單片機產品,我國臺灣的Winbond公司也推出了兼容MCS-51的單片機產品。這些著名廠商的加盟使51系列單片機獲得了飛速發(fā)展,進一步豐富和發(fā)展了51系列單片機,產品性能得到了很大提升。

為了使廣大讀者更好地了解和掌握51系列單片機的產品特點,以下對51系列單片機的家族成員作以簡要介紹2.151系列單片機家族成員2.1.1Intel公司的MCS-51系列單片機

MCS-51系列單片機是Intel公司于1980年推出的產品,與MCS-48(Intel公司于1976年推出的產品)單片機相比,其結構更先進,功能更強,增加了更多的電路單元和功能模塊,指令數(shù)達111條。MCS-51系列單片機是相當成功的產品,直到現(xiàn)在,MCS-51系列或與其兼容的單片機仍是單片機應用領域中的主流產品。

MCS-51系列單片機雖種類繁多,但總體來說可分為兩個子系列:MCS-51子系列和MCS-52子系列。MCS-51子系列中典型機型有8031、8051和8751三種產品,而MCS-52

子系列中也有8032、8052和87523種典型機型。各子系列的資源配置見表2.1。

由表2.1可知,在子系列內各類芯片的主要區(qū)別在于片內有無程序存儲器及存儲器的類型(PROM、EPROM)。

MCS-51與MCS-52子系列不同的是片內程序存儲器ROM從4KB增至8KB;片內數(shù)據存儲器由128個字節(jié)增至256個字節(jié);增加了一個定時器/計數(shù)器;增加了1~2個中斷源。另外,按照制造工藝可分為:HMOS工藝(高密度短溝道MOS工藝)和CHMOS工藝(互補金屬氧化物HMOS工藝)。在單片機型號中含字母C表示其制造工藝為CHMOS工藝,其余均為HMOS工藝。采用CHMOS技術制造的單片機功耗低。

如8051功耗約為630mW,而80C51的功耗僅為120mW。低功耗有利于直流供電的應用場合,對便攜式野外作業(yè)的儀器設備有非常重要的意義。表2.1MCS-51系列單片機資源配置一覽表2.1.2Atmel公司的AT89系列單片機

美國Atmel公司是世界著名的半導體制造公司,除生產各種專用集成電路外,Atmel公司還為通信、家電、儀器儀表、IT行業(yè)及各種應用系統(tǒng)提供性價比高的產品。Atmel公司最引人注目的是它的E2PROM電可擦除技術、Flash存儲器技術和優(yōu)秀的生產工藝與封裝技術。1994年,Atmel公司率先把MCS-51內核與其擅長的Flash存儲技術相結合,推

出了轟動業(yè)界的AT89系列單片機。Atmel公司的這些先進技術用于單片機生產,使單片機在結構和性能等方面更具明顯優(yōu)勢,AT89系列產品進入中國市場十多年來已獲得了巨

大成功。至今,AT89系列單片機在51兼容機市場上仍占有很大份額,其產品受到了眾多用戶的喜愛。

Atmel公司的AT89系列單片機以AT89C51和AT89C52為代表,其主要單片機品種及其特性見表2.2。它們是低電壓、低功耗、高性能的8位單片機,除了與MCS-51指令系

統(tǒng)兼容以外,還具有許多優(yōu)點:器件采用Atmel公司的高密度、非易失性存儲技術生產,內部含F(xiàn)lash存儲器,可反復擦寫1000次以上,有效地降低了開發(fā)成本;有更寬的工

作電壓范圍(可達4.0~6.0V);軟件設置的電源省電模式能停止CPU的工作進入睡眠狀態(tài),睡眠期間,定時器/計數(shù)器、串行口等均停止工作,RAM中的數(shù)據被“凍結”,直到下次被中斷激活或硬件復位方可恢復工作。表2.2AT89系列單片機配置一覽表

AT89C51和AT89C52有3種封裝形式。圖2.1給出了雙列直插式封裝(DIP,DualIn-linePackage),DIP封裝與MCS-51系列單片機的引腳完全兼容,可互換使用。CMOS工藝制造的低功耗芯片也采用塑封方型扁平式封裝(PQFP,PlasticQuadFlatPackage)和塑封有引線芯片載體封裝(PLCC,PlasticLeadedChipCarrier)形式,這兩種封裝采用44個引腳,其中4個引腳不用,其引腳排列如圖2.2所示。圖2.151系列單片機DIP封裝圖圖2.251系列單片機PQFP和PLCC封裝圖(a)PQFP封裝圖;(b)PLCC封裝圖2.1.3Atmel公司的AT89C2051單片機

除了上述AT89系列單片外,Atmel還提供一種低價位、高性能、小尺寸的8位單片機AT89C2051。AT89C2051兼容MCS-51指令系統(tǒng),其功能強大,但它只有20個引腳,采用DIP-20封裝形式,其引腳配置如圖2.3所示。圖2.3AT89C2051引腳圖

AT89C2051內部含2KB的Flash存儲器,128B的RAM。與AT89C51相比,AT89C2051少了P0和P2兩個并行端口。它為用戶提供了15條可編程雙向輸入/輸出(I/O)口線,

這些I/O線能提供20mA的電流,可直接驅動LED顯示器,為應用系統(tǒng)的開發(fā)帶來了方便。AT89C2051為用戶提供的15條可編程雙向輸入/輸出口線中,P1是一個完整的8位

雙向I/O口(P1.7~P1.0),另有兩個外中斷口(INT0,INT1),兩個16位可編程定時計數(shù)器信號輸入端(T0,T1),全雙向串行通信口數(shù)據接收端RXD和數(shù)據發(fā)送端TXD,一個模擬比較放大器輸入端(P1.0,P1.1為同相或反相輸入端)。

AT89C2051的時鐘頻率可以為零,即具備可用軟件設置的睡眠省電功能。省電模式中,片內RAM被凍結,內部時鐘停止振蕩,所有功能停止工作,直至系統(tǒng)被硬件復位方

可繼續(xù)運行。AT89C2051單片機為用戶提供了一個高性價比的系統(tǒng)設計方案。2.1.4Philips公司的51系列單片機

Philips公司在發(fā)展51系列單片機的低功耗、高速度和增強型功能上做出了不少貢獻。Philips公司的51系列單片機以P89C51為代表,該產品基于80C51內核、采用Philips高密度CMOS技術設計制造,包含中央處理單元,4K字節(jié)非易失性Flash只讀程序存儲器,128字節(jié)內部數(shù)據存儲器RAM,32個雙向輸入/輸出(I/O)口線,3個16位定時/計數(shù)器和6個中斷源,4個優(yōu)先級中斷嵌套結構,可用于多機通信的串行I/O口,I/O擴展或全雙工UART,片內時鐘振蕩電路。此外,P89C51采用低功耗靜態(tài)設計,寬工作頻率(DC~33MHz),寬工作電壓范圍(2.7~5.5V),兩種軟件方式選擇電源空閑和掉電模式。空閑模式下,凍結CPU,而RAM

定時器、串行口和中斷系統(tǒng)維持其功能。由于是靜態(tài)設計,因此在掉電模式下,時鐘振蕩停止,RAM數(shù)據會得以保存,停止芯片內其他功能。CPU被喚醒后,從時鐘斷點處恢復執(zhí)行程序。P89C51有DIP40、PLCC44和LQFP44等多種封裝形式。P89C51單片機的主要功能如下:

基于MCS-51內核和指令系統(tǒng);

4KBFlash只讀程序存儲器(ROM);

32個雙向I/O口線;

128×8bit內部RAM(可擴充64KB外部存儲器);

3個16位可編程定時器/計數(shù)器;

時鐘頻率0~33MHz;

6個中斷源;

雙DPTR數(shù)據指針寄存器;

電源空閑和掉電模式;

布爾處理器;

全靜態(tài)操作,雙數(shù)據指示器;

4個中斷優(yōu)先級嵌套;

外中斷喚醒電源掉電模式;

全雙工增強UARL通道;

可編程時鐘輸出(數(shù)據幀錯誤檢測、自動地址識別)。2.2.151系列單片機內部結構

圖2.4是按功能劃分的MCS-51系列單片機內部功能模塊框圖,各模塊及其基本功能為:

(1)一個8位中央處理器CPU。它由運算器和控制部件構成,包括振蕩電路和時鐘電路,主要完成單片機的運算和控制功能,是單片機的核心部件,決定了單片機的主要性能。(2)4KB(MCS-52子系列為8KB)的片內程序存儲器,用于存放目標程序及一些原始數(shù)據和表格。51系列單片機的地址總線為16位,確定了其程序存儲器可尋址范圍為64KB。2.251系列單片機內部結構及引腳功能

(3)128B(52子系列為256字節(jié))的片內數(shù)據存儲器RAM。習慣上把片內數(shù)據存儲器稱為片內RAM,它是單片機中使用最頻繁的數(shù)據存儲器。由于其容量有限,合理的分配和使用好片內RAM有利于提高編程效率。

(4)18個(52子系列為21個)特殊功能寄存器SFR。用于控制和管理片內算術邏輯部件ALU、并行I/O接口、串行通信口、定時器/計數(shù)器、中斷系統(tǒng)、電源等功能模塊的工作方式和運行狀態(tài)。

(5)4個8位并行I/O接口:P0口、P1口、P2口、P3口(共32線),用于輸入或輸出數(shù)據和形成系統(tǒng)總線。圖2.4單片機內部功能模塊圖

(6)1個串行通信接口??蓪崿F(xiàn)單片機系統(tǒng)與計算機或與其他通信系統(tǒng)實現(xiàn)數(shù)據通信。

串行口可設置為4種工作方式,分別用于多機系統(tǒng)通信、I/O端口擴展或全雙工異步通信(UART)。

(7)2個(52子系列為3個)16位定時器/計數(shù)器。它可以設置為計數(shù)方式對外部事件進行計數(shù),也可以設置為定時方式。計數(shù)或定時范圍可通過編程來設定,具有中斷功能,一旦計數(shù)或定時時間到,可向CPU發(fā)出中斷請求,以便及時處理突發(fā)事件,提高系統(tǒng)的實時處理能力。

(8)具有5個(52子系列為6個或7個)中斷源。可以處理外部中斷、定時器/計數(shù)器中斷和串行口中斷。常用于實時控制、故障自動處理、單片機系統(tǒng)與計算機或與外設間的數(shù)據通信及人—機對話等。2.2.251系列單片機外部引腳及功能

51系列單片機的封裝形式見圖2.1和圖2.2所示,其引腳功能分類如圖2.5所示。

51系列單片機的40個引腳中有電源和地線引腳,2個外接時鐘源引腳,4個控制信號或與其他電源復用的引腳和32條I/O口線。

1.主電源引腳Vcc和Vss

Vcc(40腳):接+5V電源正端;

Vss(20腳):接電源地。圖2.5引腳功能分類示意圖

2.外接時鐘引腳XTALl和XTAL2

XTAL1(19腳):外接石英晶體振蕩器的一端。在單片機內部有一個反相放大器,XTAL1是該反相放大器的輸入端,它與外接時鐘源構成了片內振蕩器。當采用外部時鐘信號時,對于HMOS單片機,該引腳接地;對于CHMOS單片機,該引腳作為時鐘振蕩信號的輸入端。

XTAL2(18腳):外接石英晶體振蕩器的另一端。它接至單片機內部振蕩器的反相放大器的輸出端。當采用外部時鐘時,對于HMOS單片機,該引腳作為時鐘振蕩信號的輸入端;對于CHMOS芯片,該引腳懸空。

3.控制信號或與其他電源復用引腳

控制信號與其他電源復用引腳有RST/VPD、ALE/PROG、

和/VPP等4種形式。

(1)RST/VPD(9腳):RST即RESET,VPD為備用電源,該引腳為單片機的上電復位或掉電保護端。當單片機振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平,即可實

現(xiàn)系統(tǒng)復位,使單片機回到初始狀態(tài)(復位電路詳情可參閱2.7.2節(jié))。

當VCC發(fā)生故障、降低到低電平規(guī)定值或掉電時,該引腳可接上備用電源VPD(+5±0.5V)為內部RAM供電,以保證RAM中的數(shù)據不丟失。

(2)ALE/PROG(30腳):地址鎖存允許信號。當訪問外部存儲器時,在每個機器周期內ALE信號會出現(xiàn)兩個正脈沖,用于鎖存出現(xiàn)在P0口的低8位地址信息。在不訪問外部存儲器時,ALE端仍以上述頻率(振蕩器頻率的1/6)周期性地輸出正脈沖信號,此信號可作為外部其他部件的時鐘脈沖或用于定時目的。例如,為單片機擴展A/D轉換器時,常

常把ALE作為A/D轉換器的時鐘源使用。但要注意,在訪問片外數(shù)據存儲器期間,ALE信號會跳過一個正脈沖信號(詳見2.6.2節(jié)),因此在頻率穩(wěn)定性或定時精度要求較高的場合,若把ALE作為時鐘信號就不妥當了。

對于片內含有EPROM的單片機,在EPROM編程期間,該引腳作為編程脈沖/PROG的輸入端。

(3)

(29腳):片外程序存儲器讀選通信號輸出端,低電平有效。當從外部程序存儲器讀取指令或讀取常數(shù)期間,每個機器周期兩次有效,以通過數(shù)據總線口讀取

指令或數(shù)據。訪問外部數(shù)據存儲器期間,信號將不出現(xiàn)。

(4)

/VPP(31腳):為訪問外部程序存儲器控制信號,低電平有效。當端為高電平時,單片機訪問片內程序存儲器4KB(MCS-52子系列為8KB)。若超出此范圍時,自動轉去執(zhí)行外部程序存儲器的程序。當端為低電平時,無論片內有無程序存儲器,均只訪問外部程序存儲器。

對于片內含有EPROM的單片機,在EPROM編程期間,該引腳用于接編程電源VPP。

4.輸入/輸出(I/O)引腳P0口、P1口、P2口及P3口

(1)P0口(39腳~32腳):P0.0~P0.7。當不接外部存儲器,也不擴展I/O接口時,它可作為準雙向8位輸入/輸出接口。當接有外部存儲器或擴展I/O接口時,P0口為地

址/數(shù)據分時復用端口。它分時提供低8位地址信息和8位雙向數(shù)據信息。

(2)P1口(1腳~8腳):P1.0~P1.7。為準雙向I/O接口。對于MCS-52子系列單片機,P1.0與P1.1還有第2功能:P1.0可用作定時器/計數(shù)器2的計數(shù)脈沖輸入端T2;P1.1用作定時器/計數(shù)器2的外部控制端T2EX。

(3)P2口(21腳~28腳):P2.0~P2.7,可作為普通準雙向I/O接口。當構成系統(tǒng)總線時,P2口作為高8位地址總線,傳送高8位地址信息。

(4)P3口(10腳~17腳):P3.0~P3.7。為雙功能端口,可以作為一般的準雙向I/O接口使用,而每1位都具有第2功能,并且P3口的每一條引腳均可獨立定義為第1功能的輸入/輸出或第2功能。P3口的第2功能詳見表2.3。表2.3P3口第2功能表綜上所述,MCS-51系列單片機外特性有以下特點:

(1)單片機功能多,引腳少,因而許多引腳都具有第2功能;

(2)單片機對外呈3總線形式,由P2、P0口構成16位地址總線;由P0口分時復用作為低8位地址總線與數(shù)據總線;由ALE、、與P3口中的、組成控制總線。

(3)由于51系列單片機有16位地址線,因此存儲器的尋址范圍為64KB,程序存儲器實行統(tǒng)一編址,片內、外共可尋址64KB。中央處理器CPU是單片機內部的核心部件,它決定了單片機的指令系統(tǒng)及主要功能。CPU由運算器和控制器兩部分組成。

運算器是以算術邏輯單元ALU為核心,加上累加器A、寄存器B、程序狀態(tài)字PSW及專門用于位操作的布爾處理機等組成的,它可以實現(xiàn)數(shù)據的算術運算、邏輯運算、位變

量處理和數(shù)據傳送等操作。2.3單片機CPU基本模型控制器是單片機的神經中樞,它包括控制邏輯(時基電路、復位電路)、程序計數(shù)器PC、指令寄存器、指令譯碼器、堆棧指針SP、數(shù)據指針寄存器DPTR以及信息傳送控制等部件??刂破饕灾髡耦l率為基準產生CPU的時序,對指令進行譯碼,然后發(fā)出各種控制信號,完成一系列定時控制的微操作,協(xié)調單片機內部各功能部件之間的數(shù)據傳送、數(shù)據運算等操作,對外發(fā)出地址鎖存ALE、外部程序存儲器選通,數(shù)據存儲器讀(

)、寫(

)等控制信號;處理復位RST和外部程序存儲器訪問控制信號,是單片機的控制中心。為了使讀者更直觀地理解CPU內部各模塊及其基本功能,迅速掌握51系列單片機的使用方法與編程技術,圖2.6給出了51系列單片機CPU的基本編程模型。圖2.6CPU基本編程模型2.3.1算術邏輯單元ALU、累加器ACC及寄存器B

算術邏輯單元ALU不僅能完成8位二進制數(shù)的加、減、乘、除、加1、減1及BCD加法的十進制調整等算術運算,還可以實現(xiàn)8位變量的邏輯“與”、“或”、“異或”、“清

零”及“置位”等邏輯操作,并具有數(shù)據傳送、程序轉移等功能。

累加器ACC簡稱累加器A,是一個8位寄存器,它是CPU中使用最頻繁的寄存器。

利用ALU作算術、邏輯運算的操作數(shù)之一多來自于A,運算結果也常保存于A。寄存器B在ALU進行乘、除法運算時有其專門的作用。執(zhí)行乘法指令時,運算前存放其中一個乘數(shù),指令執(zhí)行后存放積的高8位;執(zhí)行除法指令時,運算前B存放除數(shù),指令執(zhí)行后存放余數(shù);不作乘、除法運算時,則作為通用寄存器使用。

2.3.2程序狀態(tài)字PSW

程序狀態(tài)字PSW又稱為程序狀態(tài)寄存器,是一個8位標志寄存器,保存指令執(zhí)行結果的特征信息,以供程序查詢和判別,其含義如下:

CY(PSW.7):進位標志位。由硬件或軟件置位和清零,表示運算結果是否有進位(或借位)。如果運算結果在最高位有進位輸出(加法時)或有借位輸入(減法時),則CY=1,否則CY=0。

AC(PSW.6):輔助進位(或稱半進位)標志。它表示兩個8位數(shù)運算時,低4位有無進(借)位的狀況。當?shù)?位相加(或相減)時,若D3位向D4位有進位(或有借位)時,AC=1,否則AC=0。在BCD碼運算的十進制調整中要用到該標志。

F0(PSW.5):用戶自定義標志位。用戶可根據自己的需要用軟件對F0賦以一定的含義,并根據F0=1或0來決定程序的執(zhí)行方式。

RS1(PSW.4)、RS0(PSW.3):工作寄存器組選擇位??捎密浖梦换蚯辶?,用以確定當前使用的工作寄存器組。OV(PSW.2):溢出標志位。由硬件置位或清零。它反映運算結果是否有溢出(即運算結果的正確性),有溢出時(結果不正確)OV=1,否則OV=0。

溢出標志OV和進位標志CY是兩種不同性質的標志。溢出是指有正、負號的兩數(shù)運算時,運算結果超出了累加器以補碼所能表示一個有符號數(shù)的范圍(-128~+127)。而

進位則表示兩數(shù)運算最高位(D7)相加(或相減)有無進(或借)位。一般來說,對帶符號數(shù)的運算關心溢出標志位,而對無符號數(shù)的運算則關心進位標志位。

PSW.1:未定義。

P(PSW.0):奇偶標志位。在執(zhí)行指令后,單片機根據累加器A中1的個數(shù)是奇數(shù)還是偶數(shù)自動給該標志置位或清零。若A中1的個數(shù)為奇數(shù),則P=l,否則P=0。該

標志位常用于串行通信的奇偶校驗位。2.3.3程序計數(shù)器PC

程序計數(shù)器PC用于存放CPU要執(zhí)行的下一條指令的地址。程序中的每條指令都有自己的存放地址(指令都存放在ROM區(qū)的某一單元),CPU要執(zhí)行某條指令時,就把該條

指令的地址碼(即PC中的值)送到地址總線,從ROM中讀取指令,當PC中的地址碼被送上地址總線后,PC會自動指向CPU要執(zhí)行的下一條指令的地址。執(zhí)行指令時,CPU按PC

的指示地址從ROM中讀取指令,所讀取指令碼送入指令寄存器中,由指令譯碼器對指令進行譯碼,發(fā)出相應的控制信號,從而完成指令所指定的操作。

PC是一個16位的專用寄存器,尋址范圍為64KB(0000H~FFFFH)。系統(tǒng)復位后PC的初始值為0000H。程序計數(shù)器在物理上是獨立的,它不屬于特殊功能寄存器SFR塊。即PC本身并沒有地址,因而不可尋址,用戶無法對它進行讀/寫,但是可以通過轉移、調用、返回等指

令改變其內容,以控制程序按要求轉移。2.3.4堆棧指針SP

51系列單片機的堆棧區(qū)設定在片內RAM中。在特殊功能寄存器中有一個堆棧指針寄存器SP,用SP指示棧頂?shù)奈恢?。SP是8位專用寄存器,系統(tǒng)復位后SP的值為07H。數(shù)

據入棧時,先將堆棧指針SP的內容加1,然后將數(shù)據送入堆棧(SP指向的內部RAM單元);數(shù)據出棧時,將SP所指向的內部RAM單元的內容送入POP指令給出的直接地址單

元,再將堆棧指針SP的內容減1。2.3.5數(shù)據指針寄存器DPTR

數(shù)據指針寄存器DPTR是一個16位的專用寄存器,DPTR主要用于存放16位的地址碼。當CPU訪問64KB的外部數(shù)據存儲器時,DPTR作為間接寄存器使用;當CPU訪問64KB的程序存儲器時,DPTR用作基址寄存器。

DPTR在特殊功能寄存器SFR中占用兩個單元,其高字節(jié)寄存器為DPH,低字節(jié)寄存器為DPL。DPTR既可作為一個16位的寄存器來使用,也可作為兩個獨立的8位的寄存器DPH和DPL來使用。2.4.1存儲器分類及配置

51系列單片機存儲器采用哈佛(Har-vard)結構,即將程序存儲器和數(shù)據存儲器分開,程序存儲器和數(shù)據存儲器有各自的尋址方式、尋址空間和控制系統(tǒng)。這種結構對于面向控制對象的單片機系統(tǒng)來說應用十分方便。為了滿足用戶需求,單片機盡可能地利用其自身資源提供多種存儲器。2.451系列單片機存儲器結構

51系列單片機存儲器有如下幾種分類方法:

按物理結構分為:片內程序存儲器、片外程序存儲器、片內數(shù)據存儲器和片外數(shù)據存儲器4個部分。

按功能分為:程序存儲器、內部數(shù)據存儲器、特殊功能寄存器、位尋址區(qū)和外部數(shù)據存儲器5部分。

按邏輯分為:程序存儲器、內部數(shù)據存儲器和外部數(shù)據存儲器3部分,如圖2.7所示。圖2.751系列單片機存儲器結構(a)程序存儲器;(b)內部數(shù)據存儲器;(c)外部數(shù)據存儲器2.4.2程序存儲器

1.程序存儲器的編址

程序存儲器是用來存放已調試完成的程序和常數(shù)表格的。由于單片機主要用于控制系統(tǒng),因此一旦系統(tǒng)研制成功,其硬件、應用程序和常數(shù)表格均已定型。為了提高系統(tǒng)的可靠性,應用程序通常固化在程序存儲器中。CPU為了有序的工作設置了一個專用寄存器——程序計數(shù)器PC,用以存放將要執(zhí)行的指令地址。PC的長度為16位,故程序存儲器的尋址范圍為64KB(0000H~FFFFH),也就是說,51系列單片機具有64KB的程序存儲器空間。根據程序存儲器的組成原理,片內程序存儲器分為ROM型、PROM型、EPROM型和E2PROM型存儲器。單片機型號不同,其片內程序存儲器的種類也就不同,容量也有所差異。當片內程序存儲器容量不夠時,可以擴展外部程序存儲器。如80C51、87C51和89C51單片機內部分別有4KBPROM、4KBEPROM和4KBE2PROM型程序存儲器,其片內程序存儲器編址為0000H~0FFFH,片外擴展編址為1000H~FFFFH。

80C52、87C52和89C52,內部分別有8KBPROM、8KBEPROM和8KBE2PROM型程序存儲器,片內編址為0000H~1FFFH,片外擴展編址則為2000H~FFFFH。而80C31和80C32片內沒有程序存儲器,只能用片外擴展的程序存儲器,地址空間為0000H~FFFFH,如圖2.7(a)所示。由此可見程序存儲器的編址規(guī)律為:先片內、后片外,片內、片外連續(xù)統(tǒng)一編址,兩者一般不要重疊。

CPU執(zhí)行程序時,是從片內程序存儲器讀取指令,還是從片外程序存儲器讀取指令,由單片機引腳電平的高低來決定。=1為高電平時,先執(zhí)行片內程序存儲器的程序,當PC的值超過0FFFH(對應MCS-51子系列低4KB)或FFFH(對應MCS-52子系列低8KB)時,將自動轉向片外程序存儲器執(zhí)行;=0為低電平時,CPU執(zhí)行片外程序存儲器的程序。片內無程序存儲器的80C31、80C32單片機,引腳應設置為低電平。片內有程序存儲器的芯片,如果引腳接低電平,將強行執(zhí)行片外程序存儲器中的程序,多用于在片外程序存儲器中存放調試程序,使計算機工作在調試狀態(tài)。該調試程序的編址可與片內程序存儲器的編址重疊,借電平的變化實現(xiàn)分別訪問。由此可見,究竟執(zhí)行片內還是片外程序存儲器的程序,由引腳的電平決定,而片內、外程序存儲器的地

址0000H~FFFFH是連續(xù)的,即片內、片外的程序存儲器同屬一個邏輯空間。

2.程序入口地址

在系統(tǒng)設計時,程序占用的地址空間原則上可由用戶任意安排。但51系列單片機程序初始運行的入口地址是固定的,用戶不能隨意更改。程序存儲器中有復位和中斷源共

7個固定的入口地址,見表2.4。表2.451系列單片機復位、中斷入口地址單片機復位后程序計數(shù)器PC的內容為0000H,CPU從0000H單元開始讀取指令執(zhí)行程序。0000H單元是系統(tǒng)的起始地址,一般在該單元存放一條無條件轉移指令LJMP

addr16跳轉至用戶程序的起始地址開始執(zhí)行。

除0000H單元外,其他6個特殊單元分別對應6個中斷源的中斷服務程序的入口地址,用戶也應該在這些入口地址存放1條無條件轉移指令,跳轉至相應中斷源的中斷服務程序起始地址。

另外,當CPU從片外程序存儲器讀取指令時,要相應提供片外程序存儲器的地址信號和控制信號ALE、。關于片外擴展程序存儲器訪問地址及控制信號的作用將在第6章中介紹。2.4.3內部數(shù)據存儲器

1.內部數(shù)據存儲器地址

51系列單片機的內部數(shù)據存儲器屬隨機存儲器RAM,由數(shù)據存儲器和特殊功能寄存器兩部分組成,如圖2.7(b)所示。數(shù)據存儲器RAM有128B,其地址為00H~7FH;特殊功能寄存器SFR模塊占128B,其地址為80H~FFH,兩者地址連續(xù)但不重疊。圖2.8片內RAM區(qū)在MCS-52子系列中,RAM模塊有256B,地址為00H~FFH,它比51子系列多128B。

其中,高128字節(jié)的地址和SFR模塊的地址是重疊的,地址編址都是80H~FFH。但由于CPU訪問內部數(shù)據存儲器和特殊功能寄存器時,使用不同的尋址方式,因此并不會引起混亂。

2.內部數(shù)據存儲器RAM

如圖2.8所示,內部數(shù)據存儲器RAM區(qū)分為工作寄存器區(qū)、位尋址區(qū)和數(shù)據緩沖區(qū)3個部分。

1)工作寄存器區(qū)

內部RAM區(qū)的00H~1FH為工作寄存器區(qū),分為4個工作寄存器組,每組有8個工作寄存器用R0~R7表示,共占用32個內部RAM單元。寄存器組和RAM地址的對應關系,見表2.5。表2.5工作寄存器對應RAM地址表工作寄存器共有4組,但程序每次只能選擇一組作為當前工作寄存器組使用。究竟選擇哪一組由程序狀態(tài)字PSW中的PSW.4(RS1)和PSW.3(RS0)兩位來確定,其對應關系

見表2.6。CPU通過指令修改PSW中RS1和RS0兩位的狀態(tài),即可選定一個工作寄存器組。這一特點使51系列單片機具有快速現(xiàn)場保護功能,在調用子程序、執(zhí)行中斷服務程序等場合十分有用,可以提高程序的效率和中斷響應速度。若程序中并不要4個工作寄存器組,那么其他工作寄存器組所對應的單元也可以作為一般的數(shù)據緩沖區(qū)使用。在實際應用中,內部RAM的00H~1FH單元盡量作為工作寄存器區(qū)使用,這對程序設計十分有利。表2.6工作寄存器組的選擇表

2)位尋址區(qū)

RAM區(qū)中20H~2FH單元為位尋址區(qū),這16個單元(共計128位)的每1位都有一個位地址,其范圍為00H~7FH,見表2.7。位尋址區(qū)的每一位可當作為軟件觸發(fā)器,由程序直接進行位處理。通??梢园迅鞣N程序狀態(tài)標志、位控制變量、位狀態(tài)暫存于位尋址區(qū)內。當然,位尋址的RAM單元也可以按字節(jié)操作作為一般的數(shù)據緩沖器使用。表2.7內部RAM中的位地址表

3)數(shù)據存儲區(qū)

RAM區(qū)中30H~7FH是數(shù)據存儲區(qū),即用戶RAM區(qū),共80個單元。(MCS-52子系列片內RAM有256個單元,寄存器組和位尋址區(qū)地址及MCS-51子系列一致。用戶RAM區(qū)

從30H到FFH,共208個單元。)

4)堆棧與堆棧指針

51系列單片機的堆棧區(qū)設定在片內RAM中。SP為堆棧指針寄存器,其長度為8位,系統(tǒng)復位后SP的初值為07H。堆棧是向上生長型,如圖2.9所示。圖2.9堆棧示意圖單片機堆棧區(qū)域不是固定的,原則上可設在內部RAM的任意區(qū)域,但為了避開使用頻率較高的工作寄存器區(qū)和位尋址區(qū),一般設在30H以后的范圍內。例如,可用MOVSP,#60H設置SP為60H,系統(tǒng)工作時堆棧就從60H開始向上生成。

3.特殊功能寄存器SFR

特殊功能寄存器SFR又稱為專用寄存器。用于控制和管理單片機算術邏輯部件、并行I/O口鎖存器、串行通信口、定時器/計數(shù)器、中斷系統(tǒng)等功能模塊的工作設置和狀態(tài)保存,SFR的地址為80H~FFH。51系列單片機中,除程序計數(shù)器PC外,MCS-51子系列有18個專用寄存器,其中3個為雙字節(jié)寄存器(DPTR和兩個16位定時計數(shù)器計數(shù)單元),共占用了21個存儲單元;MCS-52子系列在MCS-51子系列的基礎上增加了3個專用寄存器,其中2個為雙字節(jié)寄存器,因此,MCS-52子系列共有21個專用寄存器,其中5個為雙字節(jié)寄存器,共占用26個存儲單元。按地址排列的各特殊功能寄存器名

稱、標識符、地址等見表2.8。表2.8特殊功能寄存器名稱、標識符、地址從表2.8中可以看出:特殊功能寄存器反映了單片機的狀態(tài),實際上是單片機的狀態(tài)及芯片引腳有關的寄存器。與內部功能控制有關的寄存器有運算部件寄存器A、B、PSW,

堆棧指針SP,數(shù)據指針DPTR,定時器/計數(shù)器控制,中斷控制和串行口控制等。而與芯片引腳有關的寄存器有P0、P1、P2、P3,它們實際上是4個鎖存器,每個鎖存器再附加

上相應的輸出驅動器和輸入緩沖器就構成了并行口。以上各特殊功能寄存器的用途將在有關章節(jié)中做詳細介紹。

SFR塊的地址空間為80H~FFH,但僅有21個(MCS-51子系列)或26個(MCS-52子系列)字節(jié)作為特殊功能寄存器分布在這128個字節(jié)范圍內,其余字節(jié)無定義,用戶也不能使用這些單元。若對其進行訪問,則將得到一個不確定的隨機數(shù)。在51單片機的內部數(shù)據寄存器RAM塊和特殊功能寄存器SFR塊中,有一部分地址空間可以按位尋址,按位尋址的地址空間又稱之為位尋址區(qū)。位尋址區(qū)一部分在內部RAM

的20H~2FH16個字節(jié)寄存器內,共128位;另一部分為SFR的80H~FFH空間的可按位尋址的寄存器。字節(jié)地址能被8整除的專用寄存器都可以實現(xiàn)位尋址,個別不能被8整除的專用寄存器也可以實現(xiàn)位尋址,其位地址見表2.7和表2.8。

這些位尋址單元與布爾指令集構成了51系列單片機具有的布爾處理系統(tǒng),它是一個完整的布爾處理機,在開關判別決策、邏輯功能實現(xiàn)和實時控制等方面是非常有用的。2.4.4外部數(shù)據存儲器

外部數(shù)據存儲器一般由靜態(tài)RAM芯片擴展而成。用戶可根據需要確定擴展存儲器容量的大小。51單片機是利用1個特殊功能寄存器——數(shù)據指針寄存器DPTR,以寄存器

間接尋址方式訪問外部數(shù)據存儲器。由于地址總線為16位,DPTR也是16位,其可尋址的范圍為64KB,因此擴展外部數(shù)據存儲器的最大容量是64KB。由于訪問片外數(shù)據存儲器有專用的MOVX指令,訪問內部數(shù)據存儲器用MOV指令,因此其內部數(shù)據存儲器和外部數(shù)據存儲器地址可以相同,不會產生錯誤。即片內數(shù)據

存儲器128個字節(jié)地址為00H~7FH,而片外數(shù)據存儲器地址為0000H~FFFFH。

當需要擴展的外部數(shù)據存儲器容量較小時,也可用8位地址,其編址范圍為00H~FFH。

應用系統(tǒng)擴展的I/O接口地址與外部數(shù)據存儲器統(tǒng)一編址,所有的外圍接口地址均占用外部RAM的單元地址,采用相同的尋址方式訪問。因此,系統(tǒng)設計時要合理地分配地址空間,保證譯碼的惟一性。2.5.1并行端口的內部結構

1.P0口的結構及用途

P0口由P0.0~P0.7共8位組成。它是一個三態(tài)雙向口,可作為地址/數(shù)據分時復用口,也可作為通用I/O接口,其每一位的位結構原理如圖2.10所示。鎖存器起輸出鎖存作用,8個鎖存器構成了特殊功能寄存器P0;場效應管V1、V2組成輸出驅動器,以增大帶負載能力;三態(tài)門1是讀引腳輸入緩沖器;三態(tài)門2用于讀鎖存器的狀態(tài);與門3、反相器4及模擬轉換開關構成了輸出控制電路。2.5單片機的并行端口及應用圖2.10P0口位結構圖在單片機系統(tǒng)中,P0口有兩種用途:

(1)分時復用作為地址/數(shù)據總線。

當需要對單片機進行外部擴展時,P0口作為地址/數(shù)據分時復用總線(參見圖2.5)。

在訪問片外存儲器而需從P0口輸出地址或數(shù)據信號時,控制信號C應為高電平“1”,使轉換開關MUX把反相器4的輸出端A與V1接通,同時把與門3打開。當?shù)刂坊驍?shù)據

為“1”時,經反相器4使V1截止,同時經與門3使V2導通,P0.X引腳上出現(xiàn)相應的高電平“1”;當?shù)刂坊驍?shù)據為“0”時,經反相器4使V1導通,同時經與門3使V2截止,引腳上出現(xiàn)相應的低電平“0”。這樣就將地址/數(shù)據信號輸出到外部引腳P0.X上了。

(2)P0口作為通用I/O口使用。

當P0口作為通用I/O口使用時,對應的控制信號C為0,轉換開關MUX把輸出級與鎖存器輸出端B接通,同時因與門3輸出為0使V2截止,此時,輸出級是漏極開路電路。在CPU向端口輸出數(shù)據時,只要寫脈沖加在鎖存器時鐘端CLK上,與內部總線相連的D端數(shù)據取反后出現(xiàn)在端,又經輸出V1反相,在P0引腳上出現(xiàn)的數(shù)據正好是內部總線的數(shù)據。當要從P0口輸入數(shù)據時,只要給一個讀引腳信號,引腳狀態(tài)便經輸入緩沖器讀入內部總線。

P0口作為通用I/O口使用時,需要注意以下幾點:

①P0口在輸出數(shù)據時,由于V2截止,輸出級是漏極開路電路,要使“1”信號正常輸出,必須外接上拉電阻。

②P0口作為通用I/O口使用時,是準雙向口。當P0口作為通用I/O口使用時,由于控制信號C的作用使V2一直處于截止狀態(tài)。在輸入數(shù)據時,應先把端口置1(寫1),

此時鎖存器的端為0,使輸出級的場效應管V1也處于截止狀態(tài),引腳處于懸浮狀態(tài),才可作高阻輸入。輸入數(shù)據時,引腳上的外部信號既加在三態(tài)緩沖器1的輸入端,又加在V1的漏極。若在此之前曾輸出鎖存過數(shù)據0,則V1是導通的,這樣引腳上的電位就始終被鉗位在低電平,使輸入高電平無法讀入。因此,在輸入數(shù)據時,應人為地先向端口寫1,使V1截止,方可作為高阻輸入,否則可能燒壞端口。③在P0用作地址/數(shù)據分時復用功能連接外部存儲器時,由于訪問外部存儲器期間,CPU會自動向P0口的鎖存器寫入0FFH,對用戶而言,P0口此時則是真正的三態(tài)雙

向口,不必外接上拉電阻。

2.P1口的結構及用途

P1口為準雙向口,只能作為通用I/O口使用,其內部位結構如圖2.11所示。P1口與P0口的區(qū)別在于輸出驅動部分,其輸出驅動部分由一個場效應管V1與內部上拉電阻組成。當其某位輸出高電平時,可以提供拉電流負載,不必像P0口那樣需要外接上拉電阻。圖2.11P1口位結構圖

P1口只有通用I/O接口一種功能(對51子系列),其輸入/輸出原理特性與P0口作為通用I/O接口使用時一樣。

另外,對于52子系列單片機P1口的P1.0和P1.1引腳除作為通用I/O端口外,還具有第2功能,即P1.0作為定時器/計數(shù)器2的外部計數(shù)脈沖輸入端T2,P1.1作為定時器/計數(shù)器2的外部控制輸入端T2EX。

3.P2口的結構及用途

P2口既可作為普通I/O端口使用,也可作為地址總線使用。其內部位結構如圖2.12所示。當作為準雙向通用I/O口使用時,控制信號使轉換開關接向左側,鎖存器Q端經反相器3接V1,其工作原理與P1相同。圖2.12P2口位結構圖當作為外部擴展存儲器的高8位地址總線使用時,控制信號使轉換開關接向右側,由程序計數(shù)器PC送來的高8位地址信號,或數(shù)據指針DPTR的高8位地址信號經反相器3和V1輸出到P2口的引腳上,輸出高8位地址信息A15~A8。在上述情況下,端口鎖存器的內容不受影響,所以,取指或訪問外部存儲器結束后,由于轉換開關又接至左側,使輸出驅動器與鎖存器Q端相連,引腳上將恢復原來的數(shù)據。

4.P3口的結構及用途

P3口內部結構如圖2.13所示,P3口是個多功能端口,它除了可以作為通用I/O端口外,還具有第2功能,見表2.3。

作為I/O端口使用時,第2功能輸出控制信號為高電平,與非門等效為一個反相器,與P2口情況類似。作為第2功能輸出時,CPU會自動向鎖存器寫入“1”,打開與非門3,

這時與非門同樣等效于一個反相器,第2功能輸出信號經與非門3→V1管的柵極→控制漏極→P3.X引腳;作為第2功能輸入時,“第2功能輸出”控制端、鎖存器輸出端均為“1”,與非門3輸出低電平,V1管截止,輸入信號經引腳→緩沖器4→第2功能輸入。圖2.13P3口位結構圖2.5.2并行端口的應用

經過上述圖2.10~圖2.13對并行口P0~P3的內部結構的介紹可以看出,P0口在有外部擴展存儲器時用作地址/數(shù)據總線,此時是一個真正的雙向口;在沒有外部擴展存儲器時,P0口可作為通用的I/O端口,此時只是一個準雙向口。P0口、P2口和P3口都具有第2功能,除第2功能外也可用作通用I/O端口。而P1口只能用作通用I/O口。在此,對這些端口用作通用I/O端口的特點作如下說明。

1.P0口~P3口用作輸入/輸出端口

P0口~P3口用作通用I/O口時,P0口必須外接上拉電阻,而其他端口不需要外接上拉電阻,除此之外,四個并行口用法相似。對于每一個并行口,如果作為普通的輸入

輸出端口,根據需要均可定義一部分引腳作為輸入腳,另一部分引腳作為輸出腳,沒有使用的引腳也可懸空。

注意:系統(tǒng)復位后P0口、P1口、P2口和P3口輸出均為高電平,在系統(tǒng)的軟硬件設計時要特別注意被控對象的初始狀態(tài),防止出現(xiàn)誤動

2.端口的輸入/輸出指令

如圖2.14所示,用P1口的P1.0~P1.3作為輸入,讀取開關K0~K3上的數(shù)據,用P1.4~P1.7作為輸出,控制發(fā)光二極管L0~L3。注意,P1口是準雙向口,其特點是在輸入數(shù)據

時,應先把對應的輸入位置1(寫1),此時鎖存器的[AKQ-]端為0,使輸出級的場效應管V1截止,該位才可作高阻輸入,其他端口作輸入時也應同樣處理。設置完輸入位后,用MOV

指令可直接訪問端口引腳。圖2.14P1口輸入/輸出控制電路例如,用下列程序輸入K0~K3上的數(shù)據,控制對應發(fā)光二極管L0~L3的亮和滅。

MAIN:MOVA,#0FH;主程序開始

MOVP1,A ;數(shù)據送P1口,設置P1.0~P1.3為輸入NEXT:MOVA,P1 ;讀K0~K3上的數(shù)據

SWAPA ;A的低4位與高4位交換

ORLA,#0FH;A的高4位不變,低4位為全1MOVP1,A;送數(shù)據到L0~L3,設置P1.0~P1.3為輸入LCALLDELAY;調用延時子程序(子程序略)

LJMPNEXT ;循環(huán)上述的MOV指令直接訪問端口引腳,訪問端口引腳時也可用下列的指令格式:

MOVA,P1

MOV@Ri,P1;Ri代表R1或R2

MOVP1,A

MOV@Ri,A

MOVC,P1.0;位傳送指令,K0數(shù)據輸入到CY標志位

MOVP1.4,C

;C

Y數(shù)據輸出到P1.4

3.端口的“讀—修改—寫”操作

CPU在執(zhí)行MOVA,P1指令時,產生“讀引腳”命令(見圖2.11P1口位結構圖),所以,MOV指令直接訪問端口引腳,稱為讀引腳指令。除MOV指令讀引腳外,51單片機

有一類讀鎖存器指令,通常把這類指令稱為“讀—修改—寫”指令,例如:

ANLP1,A;(P1)←(P1)∧(A)

ORLP1,#data;(P1)←(P1)∨data

DECP1;(P1)←(P1)-1這些指令的執(zhí)行過程分為“讀-修改-寫”三步,先將P1口鎖存器的數(shù)據讀入CPU,

在ALU中進行運算,運算結果再送回P1口。執(zhí)行“讀-修改-寫”類指令時,CPU產生“讀鎖存器”命令,通過三態(tài)門2讀回鎖存器Q端的數(shù)據來代表引腳狀態(tài)。

如果要把某個端口的當前狀態(tài)直接讀入CPU,不能用MOV指令直接訪問端口引腳,否則可能會發(fā)生錯誤。例如,用一根端口線去驅動一個晶體管的基極,如圖2.15所示。

當向此端口線輸出1時,端口鎖存器Q=1,[AKQ-]=0,使V1截止(見圖2.11),輸出高電平驅動外接三極管V,當三極管導通時,引腳上的電平被拉到低電平(0.7V左右)。此時,

若從引腳直接讀回數(shù)據,原本輸出為1的狀態(tài)則會錯讀為0,所以要從鎖存器Q端讀取數(shù)據。圖2.15驅動三極管屬于讀鎖存器而不是讀引腳的指令有(指令的詳細功能在第3章討論):

邏輯與指令ANL例如:ANLP1,A

邏輯或指令ORL例如:ORLP2,A

邏輯異或指令XRL例如:XRLP3,A

位監(jiān)測指令JBC例如:JBCP1.1,LABEL

位取反指令CPL例如:CPLP3.0

位傳送指令MOV例如:MOVC,P1.7

增量指令INC例如:INCP2

減量指令DEC例如:DECP2

循環(huán)跳轉指令DJNZ例如:DJNZP2,LABEL2.5.3并行端口的負載能力

Intel公司的8031、8051、8751等產品,其四個并行端口中,P0口的每個引腳輸出能夠驅動8個TTL門電路,即輸出電流不大于800μA。其余三個端口P1、P2和P3口的每個引腳輸出能夠驅動4個TTL門電路。

Atmel公司的AT89C51、52及AT89C2051等產品,其端口能提供20mA的電流,可直接驅動LED顯示器。2.6.1幾個基本概念

振蕩周期:指為單片機提供定時信號振蕩源的周期,即為CPU引腳XTAL2上振蕩脈沖的周期。一個振蕩周期也稱為一個節(jié)拍,用P表示,通常稱為P節(jié)拍,如圖2.16所示。2.6單片機時序圖2.16CPU基本時序圖狀態(tài)周期:2個振蕩周期為1個狀態(tài)周期,也稱為時鐘周期,簡稱為S狀態(tài)或S狀態(tài)周期。每個S狀態(tài)周期包含兩個節(jié)拍脈沖,S的前半周期稱為節(jié)拍P1,S的后半周期稱為節(jié)拍P2。一般情況下,CPU中的算術邏輯運算在P1有效期間完成,在P2有效期間進行內部寄存器間的信息傳送。

機器周期:機器周期是單片機的基本操作周期,一個機器周期包含6個狀態(tài)周期S1~S6,12個振蕩周期。也就是說,在12個時節(jié)拍內,CPU才可能完成一個獨立的操作。指令周期:指CPU執(zhí)行一條指令所需要的時間。由于執(zhí)行不同的指令所需要的時間長短不同,因此通常是以指令消耗的機器周期的多少為依據來確定指令周期的。MCS-51系統(tǒng)中,一個指令周期通常含1~4個機器周期。大多數(shù)指令是單字節(jié)單周期指令,還有一些指令是單字節(jié)雙周期指令和雙字節(jié)雙周期指令,而乘法指令MUL和除法指令DIV都是單字節(jié)四周期指令(參見附錄B)。

例2.6.1

設MCS-51單片機的外接晶體振蕩器的振蕩頻率為12MHz,求該單片機的振蕩周期、狀態(tài)周期、機器周期和指令周期。

解振蕩周期=1/12μs

狀態(tài)周期=1/6μs

機器周期=振蕩周期×12=1μs

指令周期=1~4μs2.6.2CPU取指令和執(zhí)行指令的時序

CPU在執(zhí)行指令時,對每條指令的執(zhí)行都分為取指令和執(zhí)行指令兩個階段,圖2.18給出了MCS-51單片機取指令和執(zhí)行指令的時序。由于取指令和執(zhí)行指令是在單片機內部進行的,在外部無法觀察到單片機內部的時序信號,因此在圖2.17中畫出了外部引腳XTAL2的振蕩信號和ALE引腳上的輸出信號作為時間參考,幫助讀者理解取指令和執(zhí)行指令的過程。

ALE稱為地址鎖存允許信號,是單片機的一個輸出信號。一般情況下,ALE信號是周期信號,在每個機器周期內ALE信號會出現(xiàn)兩個正脈沖,出現(xiàn)時刻為S1P2和S4P2,信號的有效寬度為一個S狀態(tài)。ALE的主要作用是,當CPU訪問外部存儲器時,利用ALE上的正脈沖鎖存出現(xiàn)在P0口的低8位地址,因此把ALE稱為地址鎖存允許信號。在不訪問外部存儲器時,ALE端仍以上述不變的頻率(振蕩器頻率的1/6)周期性地出現(xiàn)正脈沖信號,因此,ALE信號也可作為對外輸出的時鐘脈沖信號或用于定時目的。但要注意,在訪問片外數(shù)據存儲器期間,ALE脈沖會跳過一個正脈沖信號,ALE就不是周期信號了,此時作為時鐘輸出就不妥當了。但一般程序中,用于訪問外存指令使用得不多,因此,在對時鐘頻率要求不高的情況下,仍可用其作為時鐘信號使用。例如,經常把ALE用作A/D轉換器ADC0809的時鐘信號等。執(zhí)行指令時,CPU從內部或外部ROM中取出指令操作碼及操作數(shù),然后再執(zhí)行這條指令。大部分指令在整個指令執(zhí)行過程中,在每個機器周期內ALE信號出現(xiàn)兩次。每出現(xiàn)一次ALE信號,CPU就依次進行取指令操作,但并不是每條指令在ALE生效時都能有效地讀取指令,在此,我們針對單字節(jié)單周期指令、雙字節(jié)單周期指令、單字節(jié)雙周期指令及訪問外部數(shù)據存儲器MOVX等幾種典型指令,介紹其取指令和執(zhí)行指令的時序。圖2.17MCS-5l指令的取指/執(zhí)行時序(a)單字節(jié)單周期指令的取指令和執(zhí)行指令時序;(b)雙字節(jié)單周期指令的取指令和執(zhí)行指令時序;(c)單字節(jié)雙周期指令的取指令和執(zhí)行指令時序;(d)MOVX單字節(jié)雙周期指令的取指令和執(zhí)行指令時序圖2.17(a)為單字節(jié)單周期指令(如指令INCA)的取指令和執(zhí)行指令的時序。

CPU在S1P2時刻開始讀取指令操作碼,在S4P2時刻開始仍有一次讀操作,但讀出的字節(jié)被丟棄(因為是單字節(jié)指令),且讀后的PC之值不加1,CPU在S6P2時完成指令相應

的操作。因此,對于單字節(jié)單周期指令,CPU在一個機器周期內完成取指令和執(zhí)行指令,一個指令周期包含一個機器周期。圖2.17(b)為雙字節(jié)單周期指令(如指令ADDA,#30H)的取指令和執(zhí)行指令的時序。

CPU在S1P2時刻開始讀取指令代碼的第一個字節(jié),在S4P2時刻開始讀取指令代碼的第二個字節(jié),在S6P2時完成指令相應的操作,取指令和執(zhí)行指令共需要一個機器周期。

圖2.17(c)為單字節(jié)雙周期指令的取指令和執(zhí)行指令時序,它在兩個機器周期內發(fā)生4次讀操作,后3次讀操作是無效的,這時一個指令周期包含兩個機器周期。圖2.17(d)為訪問外部數(shù)據存儲器指令MOVX的取指令和執(zhí)行指令的時序。MOVX是一條單字節(jié)雙周期指令,具有其特殊性。執(zhí)行MOVX時,仍然在第一個機器周期的S1P2

時刻開始讀取指令操作碼,在S4P2時刻開始仍有一次讀操作,但讀出的字節(jié)被丟棄,且讀后的PC之值不加1。從第一個機器周期的S5開始,CPU送出外部數(shù)據存儲器的地址,隨后讀或寫外部數(shù)據存儲器,直到在第二機器周期的S3結束,在此期間在ALE端不輸出有效信號(即ALE會少輸出一個正脈沖信號,ALE就不是周期信號了)。在第二機器周期,即外部數(shù)據存儲器已被尋址和選通后,也不產生取指令操作,而是進行外部數(shù)據存儲器的讀/寫。2.7.1時鐘電路

在單片機內部有一個振蕩器,可用兩種方式為單片機提供時鐘信號:一種是內部時鐘方式;另一種是外部時鐘方式,如圖2.18(a)、(b)所示。根據應用領域及完成的任務

不同,可選用不同的時鐘電路。一般情況下,單機系統(tǒng)采用外接石英晶振與內部運放組成時鐘振蕩器作為系統(tǒng)時鐘源。而在多機系統(tǒng)中,單片機只作為一個功能模塊使用時,為了節(jié)省硬件和統(tǒng)一系統(tǒng)的時鐘信號,常采用外時鐘源。2.7時鐘及復位電路圖2.18MCS-51單片機時鐘產生方式(a)內部時鐘方式;(b)外部時鐘方式采用內部時鐘方式時,我們只需要提供振蕩源,通常以石英晶體振蕩器和兩個片電容組成外部振蕩源,其電路如圖2.18(a)所示。片內的高增益反相放大器通過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論