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

下載本文檔

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

文檔簡介

2.151系列單片機(jī)家族成員2.251系列單片機(jī)內(nèi)部組成2.3單片機(jī)CPU基本模型2.451系列單片機(jī)存儲器結(jié)構(gòu)2.5單片機(jī)的并行端口及應(yīng)用2.6單片機(jī)時(shí)序2.7時(shí)鐘及復(fù)位電路習(xí)題2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32個(gè)雙向I/O口線;

128×8bit內(nèi)部RAM(可擴(kuò)充64KB外部存儲器);

3個(gè)16位可編程定時(shí)器/計(jì)數(shù)器;

時(shí)鐘頻率0~33MHz;

6個(gè)中斷源;

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

電源空閑和掉電模式;

布爾處理器;

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

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

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

全雙工增強(qiáng)UARL通道;

可編程時(shí)鐘輸出(數(shù)據(jù)幀錯(cuò)誤檢測、自動(dòng)地址識別)。2.2.151系列單片機(jī)內(nèi)部結(jié)構(gòu)

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

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

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

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

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

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

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

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

(8)具有5個(gè)(52子系列為6個(gè)或7個(gè))中斷源??梢蕴幚硗獠恐袛唷⒍〞r(shí)器/計(jì)數(shù)器中斷和串行口中斷。常用于實(shí)時(shí)控制、故障自動(dòng)處理、單片機(jī)系統(tǒng)與計(jì)算機(jī)或與外設(shè)間的數(shù)據(jù)通信及人—機(jī)對話等。2.2.251系列單片機(jī)外部引腳及功能

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

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

1.主電源引腳Vcc和Vss

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

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

2.外接時(shí)鐘引腳XTALl和XTAL2

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

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

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

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

和/VPP等4種形式。

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

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

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

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

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

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

(3)

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

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

(4)

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

對于片內(nèi)含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接編程電源VPP。

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

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

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

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

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

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

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

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

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

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

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

)、寫(

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

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

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

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

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

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

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

CY(PSW.7):進(jìn)位標(biāo)志位。由硬件或軟件置位和清零,表示運(yùn)算結(jié)果是否有進(jìn)位(或借位)。如果運(yùn)算結(jié)果在最高位有進(jìn)位輸出(加法時(shí))或有借位輸入(減法時(shí)),則CY=1,否則CY=0。

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

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

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

溢出標(biāo)志OV和進(jìn)位標(biāo)志CY是兩種不同性質(zhì)的標(biāo)志。溢出是指有正、負(fù)號的兩數(shù)運(yùn)算時(shí),運(yùn)算結(jié)果超出了累加器以補(bǔ)碼所能表示一個(gè)有符號數(shù)的范圍(-128~+127)。而

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

PSW.1:未定義。

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

標(biāo)志位常用于串行通信的奇偶校驗(yàn)位。2.3.3程序計(jì)數(shù)器PC

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

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

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

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

令改變其內(nèi)容,以控制程序按要求轉(zhuǎn)移。2.3.4堆棧指針SP

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

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

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

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

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

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

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

按物理結(jié)構(gòu)分為:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器4個(gè)部分。

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

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

1.程序存儲器的編址

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

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

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

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

2.程序入口地址

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

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

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

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

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

1.內(nèi)部數(shù)據(jù)存儲器地址

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

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

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

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

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

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

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

2)位尋址區(qū)

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

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

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

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

4)堆棧與堆棧指針

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

3.特殊功能寄存器SFR

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

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

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

上相應(yīng)的輸出驅(qū)動(dòng)器和輸入緩沖器就構(gòu)成了并行口。以上各特殊功能寄存器的用途將在有關(guān)章節(jié)中做詳細(xì)介紹。

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

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

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

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

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

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

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

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

1.P0口的結(jié)構(gòu)及用途

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

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

當(dāng)需要對單片機(jī)進(jìn)行外部擴(kuò)展時(shí),P0口作為地址/數(shù)據(jù)分時(shí)復(fù)用總線(參見圖2.5)。

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

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

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

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

P0口作為通用I/O口使用時(shí),需要注意以下幾點(diǎn):

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

②P0口作為通用I/O口使用時(shí),是準(zhǔn)雙向口。當(dāng)P0口作為通用I/O口使用時(shí),由于控制信號C的作用使V2一直處于截止?fàn)顟B(tài)。在輸入數(shù)據(jù)時(shí),應(yīng)先把端口置1(寫1),

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

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

2.P1口的結(jié)構(gòu)及用途

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

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

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

3.P2口的結(jié)構(gòu)及用途

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

4.P3口的結(jié)構(gòu)及用途

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MOVA,P1

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

MOVP1,A

MOV@Ri,A

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

MOVP1.4,C

;C

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

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

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

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

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

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

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

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

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

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

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

邏輯與指令A(yù)NL例如:ANLP1,A

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

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

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

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

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

增量指令I(lǐng)NC例如:INCP2

減量指令DEC例如:DECP2

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

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

Atmel公司的AT89C51、52及AT89C2051等產(chǎn)品,其端口能提供20mA的電流,可直接驅(qū)動(dòng)LED顯示器。2.6.1幾個(gè)基本概念

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

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

例2.6.1

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

解振蕩周期=1/12μs

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

機(jī)器周期=振蕩周期×12=1μs

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

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

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

CPU在S1P2時(shí)刻開始讀取指令操作碼,在S4P2時(shí)刻開始仍有一次讀操作,但讀出的字節(jié)被丟棄(因?yàn)槭菃巫止?jié)指令),且讀后的PC之值不加1,CPU在S6P2時(shí)完成指令相應(yīng)

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

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

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

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

在單片機(jī)內(nèi)部有一個(gè)振蕩器,可用兩種方式為單片機(jī)提供時(shí)鐘信號:一種是內(nèi)部時(shí)鐘方式;另一種是外部時(shí)鐘方式,如圖2.18(a)、(b)所示。根據(jù)應(yīng)用領(lǐng)域及完成的任務(wù)

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論