單片機(jī)原理及接口技術(shù)(共13章)第2章 硬件結(jié)構(gòu)_第1頁(yè)
單片機(jī)原理及接口技術(shù)(共13章)第2章 硬件結(jié)構(gòu)_第2頁(yè)
單片機(jī)原理及接口技術(shù)(共13章)第2章 硬件結(jié)構(gòu)_第3頁(yè)
單片機(jī)原理及接口技術(shù)(共13章)第2章 硬件結(jié)構(gòu)_第4頁(yè)
單片機(jī)原理及接口技術(shù)(共13章)第2章 硬件結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第2章AT89S51單片機(jī)

的硬件結(jié)構(gòu)

2【內(nèi)容概要】

本章介紹AT89S51單片機(jī)的片內(nèi)硬件結(jié)構(gòu)。讀者應(yīng)牢記AT89S51單片機(jī)的片內(nèi)硬件結(jié)構(gòu),以及片內(nèi)外設(shè)資源的基本功能及工作原理,重點(diǎn)掌握AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)、常見(jiàn)的特殊功能寄存器的基本功能以及復(fù)位電路與時(shí)鐘電路的設(shè)計(jì),掌握單片機(jī)最小系統(tǒng)的概念,最后介紹了低功耗節(jié)電模式。本章的學(xué)習(xí)目的是為單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)打下基礎(chǔ)。

單片機(jī)應(yīng)用特點(diǎn)是程序來(lái)控制硬件,讀者應(yīng)首先熟知并掌握AT89S51片內(nèi)硬件的基本結(jié)構(gòu)和特點(diǎn)。2.1AT89S51單片機(jī)的硬件組成AT89S51單片機(jī)片內(nèi)硬件結(jié)構(gòu)如圖2-1所示,它把那些作為控制應(yīng)用所必需的基本外圍部件都集成在一個(gè)集成電路芯片上。AT89S51單片機(jī)具有如下外圍部件及特性:(1)8位CPU;(2)數(shù)據(jù)存儲(chǔ)器(128BRAM);(3)程序存儲(chǔ)器(4KBFlashROM);(4)4個(gè)8位可編程并行I/O口(P0口、P1口、P2口和P3口);(5)2個(gè)可編程的16位定時(shí)器/計(jì)數(shù)器;圖2-1AT89S51單片機(jī)片內(nèi)結(jié)構(gòu)5(6)1個(gè)通用的全雙工的異步收發(fā)串行口(UART);(7)中斷系統(tǒng)具有5個(gè)中斷源、5個(gè)中斷向量;(8)特殊功能寄存器(SFR)26個(gè);(9)1個(gè)看門(mén)狗定時(shí)器(WDT);(10)低功耗節(jié)電的空閑模式和掉電模式,且具有掉電模式下的中斷恢復(fù)模式。與AT89C51相比,AT89S51具有更突出的優(yōu)點(diǎn),具體如下:(1)增加了在線可編程(ISP)功能,使得現(xiàn)場(chǎng)程序調(diào)試和修改更加方便靈活;(2)數(shù)據(jù)指針DPTR增加到兩個(gè),方便了對(duì)片外RAM的訪問(wèn);6(3)增加了看門(mén)狗定時(shí)器,提高了系統(tǒng)的抗干擾能力;(4)增加了斷電標(biāo)志;(5)增加了掉電狀態(tài)下的中斷恢復(fù)模式。AT89S51片內(nèi)的各部件通過(guò)片內(nèi)單一總線連接而成(見(jiàn)圖2-1),其基本結(jié)構(gòu)依舊是CPU加上外設(shè)部件的傳統(tǒng)微型計(jì)算機(jī)結(jié)構(gòu)模式,但CPU對(duì)各種外設(shè)部件的控制是采用特殊功能寄存器SFR(SpecialFunctionRegister)的集中控制方式。下面對(duì)圖2-1中的片內(nèi)各部件作簡(jiǎn)單介紹。(1)CPU(微處理器):8位的CPU,包括了運(yùn)算器和控制器兩大部分,此外還有面向控制的位處理和位控功能。(2)數(shù)據(jù)存儲(chǔ)器(RAM):片內(nèi)為128B(增強(qiáng)型的52子系列為256B),片外最多還可外擴(kuò)64KB的數(shù)據(jù)存儲(chǔ)器。(3)程序存儲(chǔ)器(FlashROM):用來(lái)存儲(chǔ)程序。AT89S51片內(nèi)有4KB的Flash存儲(chǔ)器(AT89S52片內(nèi)有8KB的Flash存儲(chǔ)器;AT89S53/AT89S54、/AT89S55片內(nèi)集成了12KB/20KB/20KB的Flash存儲(chǔ)器),如果片內(nèi)程序存儲(chǔ)器容量不夠,片外最多可外擴(kuò)至64KB程序存儲(chǔ)器。(4)中斷系統(tǒng):具有5個(gè)中斷源,2級(jí)中斷優(yōu)先權(quán)。(5)定時(shí)器/計(jì)數(shù)器:片內(nèi)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器(增強(qiáng)型的52子系列有3個(gè)16位的定時(shí)器/計(jì)數(shù)器),具有4種工作方式。(6)串行口:1個(gè)全雙工的異步串行口(UART),具有4種工作方式??蛇M(jìn)行串行通信,擴(kuò)展并行I/O口,還可與多個(gè)單片機(jī)相連構(gòu)成多機(jī)串行通信系統(tǒng)。(7)4個(gè)8位的并行口:P0口、P1口、P2口和P3口。(8)特殊功能寄存器(SFR):共有26個(gè)特殊功能寄存器,用于CPU對(duì)片內(nèi)各外設(shè)部件進(jìn)行管理、控制和監(jiān)視。特殊功能寄存器實(shí)際上是片內(nèi)各7外設(shè)部件的控制寄存器和狀態(tài)寄存器,這些特殊功能寄存器映射在片內(nèi)RAM區(qū)的80H~FFH的地址區(qū)間內(nèi)。(9)1個(gè)看門(mén)狗定時(shí)器WDT,當(dāng)單片機(jī)由于干擾而使程序陷入死循環(huán)或跑飛狀態(tài)時(shí),可引起單片機(jī)復(fù)位,使程序恢復(fù)正常運(yùn)行。AT89S51完全兼容AT89C51單片機(jī),使用AT89C51單片機(jī)的系統(tǒng),在保留原來(lái)軟硬件的條件下,可用AT89S51直接代換。2.2AT89S51的引腳功能掌握AT89S51單片機(jī),應(yīng)首先熟悉并掌握各引腳的功能。AT89S51與各種8051單片機(jī)的引腳是互相兼容的。目前,AT89S51單片機(jī)多采用40只引腳的塑料雙列直插封裝(DIP)方式,如圖2-2所示。此外,還有44引腳的PLCC和TQFP封裝方式的芯片。8圖2-2AT89S51雙列直插封裝方式的引腳40只引腳按功能可分為如下3類(lèi):(1)電源及時(shí)鐘引腳—VCC、VSS;XTAL1、XTAL2;(2)控制引腳—PSEN*、ALE/PROG*、EA*/

VPP、RST(即RESET);(3)I/O口引腳—P0、P1、P2與P3,為4個(gè)8位并行I/O口的外部引腳。下面結(jié)合圖2-2介紹各引腳的功能。2.2.1電源及時(shí)鐘引腳1.電源引腳(1)VCC(40腳):接+5V電源。(2)VSS(20腳):接數(shù)字地。102.時(shí)鐘引腳(1)XTAL1(19腳):片內(nèi)振蕩器的反相放大器和外部時(shí)鐘發(fā)生器的輸入端。使用片內(nèi)的振蕩器時(shí),該引腳外接石英晶體和微調(diào)電容。當(dāng)采用外部的獨(dú)立時(shí)鐘源時(shí),本引腳接外部時(shí)鐘振蕩器的信號(hào)。(2)XTAL2(18腳):片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器時(shí),該引腳連接外部石英晶體和微調(diào)電容。當(dāng)使用外部時(shí)鐘源時(shí),本引腳懸空。2.2.2控制引腳控制引腳提供控制信號(hào),有的引腳還具有復(fù)用功能。(1)RST(RESET,9腳)復(fù)位信號(hào)輸入端,高電平有效。在此引腳加上持續(xù)時(shí)間大于2個(gè)機(jī)器周期的高電平,就可使單片機(jī)復(fù)位。在單片機(jī)正常工作時(shí),此引腳應(yīng)為≤0.5V的低電平。當(dāng)看門(mén)狗定時(shí)器溢出輸出時(shí),該引腳將輸出長(zhǎng)達(dá)96個(gè)時(shí)鐘振蕩周期的11高電平。(2)EA*/

VPP(EnableAddress/VoltagePulseofPrograming,31腳)(ExternalAccessEnable)為該引腳的第一功能:外部程序存儲(chǔ)器訪問(wèn)允許控制端。當(dāng)EA*

=1時(shí),在單片機(jī)片內(nèi)的PC值不超出0FFFH(即不超出片內(nèi)4KBFlash存儲(chǔ)器的最大地址范圍)時(shí),單片機(jī)讀片內(nèi)程序存儲(chǔ)器(4KB)中的程序代碼,但PC值超出0FFFH(即超出片內(nèi)4KBFlash存儲(chǔ)器地址范圍)時(shí),將自動(dòng)轉(zhuǎn)向讀取片外60KB(1000H~FFFFH)程序存儲(chǔ)器中的程序代碼。當(dāng)EA*

=0時(shí),只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地址范圍為0000H~FFFFH,片內(nèi)的4KBFlash程序存儲(chǔ)器不起作用。VPP為該引腳的第二功能,在對(duì)片內(nèi)Flash進(jìn)行編程時(shí),VPP引腳接入編程電壓。12(3)ALE/PROG*(AddressLatchEnable/PROGramming,30腳)ALE的第一功能為CPU訪問(wèn)外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供低8位地址鎖存信號(hào),將單片機(jī)P0口發(fā)出的低8位地址鎖存在片外地址鎖存器中。此外,單片機(jī)在正常運(yùn)行時(shí),ALE端一直有正脈沖信號(hào)輸出,此頻率為時(shí)鐘振蕩器頻率fosc的1/6。該正脈沖振蕩信號(hào)可作外部定時(shí)或觸發(fā)信號(hào)使用。但是要注意,每當(dāng)AT89S51讀寫(xiě)外部RAM或I/O時(shí),要丟失一個(gè)ALE脈沖。所以ALE引腳的輸出信號(hào)頻率并不是準(zhǔn)確的fosc1/6。如果不需要ALE端輸出脈沖信號(hào),可將特殊功能寄存器AUXR(地址為8EH,將在本章后面介紹)的第0位(ALE禁止位)置1,來(lái)禁止ALE

13操作,但在執(zhí)行訪問(wèn)外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器操作時(shí),ALE仍然有效。也就是說(shuō),ALE的禁止位不影響對(duì)單片機(jī)對(duì)外部存儲(chǔ)器的訪問(wèn)。

PROG*為該引腳的第二功能,在對(duì)片內(nèi)Flash存儲(chǔ)器編程時(shí),此引腳作為編程脈沖輸入端。(4)PSEN*(ProgramStrobeENable,29腳)片內(nèi)或片外程序存儲(chǔ)器的讀選通信號(hào),低電平有效。142.2.3并行I/O口引腳(1)P0口:P0.7~P0.0引腳漏極開(kāi)路的雙向I/O口。當(dāng)AT89S51擴(kuò)展外部存儲(chǔ)器及I/O接口芯片時(shí),P0口作為地址總線(低8位)及數(shù)據(jù)總線的分時(shí)復(fù)用端口。P0口也可作為通用I/O口使用,但需加上拉電阻,這時(shí)為準(zhǔn)雙向口。P0口可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。(2)P1口:P1.7~P1.0引腳準(zhǔn)雙向I/O口,引腳內(nèi)部接有上拉電阻,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P1口是完全可提供給用戶使用的準(zhǔn)雙向I/O口。

P1.5/MOSI、P1.6/MISO和P1.7/SCK也可用于對(duì)片內(nèi)Flash存儲(chǔ)器的串行編程和校驗(yàn),它們分別是串行數(shù)據(jù)輸入、串行數(shù)據(jù)輸出和移位脈沖引腳。(3)P2口:P2.7~P2.0引腳準(zhǔn)雙向I/O口,引腳內(nèi)部接有上拉電阻,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。當(dāng)AT89S51擴(kuò)展外部存儲(chǔ)器及I/O口時(shí),P2口作為高8位地址總線用,輸出高8位地址。P2口也可作為通用的I/O口使用。(4)P3口:P3.7~P3.0準(zhǔn)雙向I/O口,引腳內(nèi)部接有上拉電阻。P3口可作為通用的I/O口使用,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口還可提供第二功能,其第二功能定義如表2-1,讀者應(yīng)熟記。1617

綜上所述,P0口作為地址總線(低8位)及數(shù)據(jù)總線使用時(shí),為雙向口。作為通用的I/O口使用時(shí),需加上拉電阻,這時(shí)為準(zhǔn)雙向口。而P1口、P2口、P3口均為準(zhǔn)雙向口。雙向口P0與P1口、P2口、P3口這3個(gè)準(zhǔn)雙向口相比,多了一個(gè)高阻輸入的“懸浮”態(tài)。這是由于P0口作為數(shù)據(jù)總線使用時(shí),多個(gè)數(shù)據(jù)源都掛在數(shù)據(jù)總線上,當(dāng)P0口不需與其他數(shù)據(jù)源打交道時(shí),需要與數(shù)據(jù)總線高阻“懸浮”隔離。而準(zhǔn)雙向I/O口則無(wú)高阻的“懸浮”狀態(tài)。另外,準(zhǔn)雙向口作通用I/O的輸入口使用時(shí),一定要向該口先寫(xiě)入“1”。以上的準(zhǔn)雙向口與雙向口的差別,讀者在學(xué)習(xí)本章2.5節(jié)的P0~P3口的內(nèi)部結(jié)構(gòu)后,將會(huì)有更深入的理解。至此,AT89S51單片機(jī)的40只引腳已介紹完畢,讀者應(yīng)熟記每一個(gè)引腳的功能,這對(duì)于掌握AT89S51單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)十分重要。182.3AT89S51的CPUAT89S51的CPU是由運(yùn)算器和控制器構(gòu)成,具體見(jiàn)圖2-1。2.3.1運(yùn)算器運(yùn)算器主要用來(lái)對(duì)操作數(shù)進(jìn)行算術(shù)、邏輯和位操作運(yùn)算。主要包括算術(shù)邏輯運(yùn)算單元ALU、累加器A、位處理器、程序狀態(tài)字寄存器PSW及兩個(gè)暫存器等。1.算術(shù)邏輯運(yùn)算單元ALUALU的功能強(qiáng),不僅可對(duì)8位變量進(jìn)行邏輯與、或、異或以及循環(huán)、求補(bǔ)和清0等操作,還可以進(jìn)行加、減、乘、除等基本算術(shù)運(yùn)算。ALU還具有位操作功能,可對(duì)位(bit)變量進(jìn)行位處理,如置“1”、清“0”、求補(bǔ)、測(cè)試轉(zhuǎn)移及邏輯“與”、“或”等操作。2.累加器A累加器A是CPU中使用最頻繁的一個(gè)8位寄存器。累加器的作用如下。(1)是ALU單元的輸入數(shù)據(jù)源之一,同時(shí)又是ALU運(yùn)算結(jié)果的存放單元。(2)CPU中的數(shù)據(jù)傳送大多都通過(guò)累加器A,故累加器A又相當(dāng)于數(shù)據(jù)的中轉(zhuǎn)站。為解決累加器結(jié)構(gòu)所帶來(lái)的“瓶頸堵塞”問(wèn)題,AT89S51單片機(jī)增加了一部分可以不經(jīng)過(guò)累加器A的傳送指令。累加器A的進(jìn)位位Cy(位于程序狀態(tài)字特殊功能寄存器PSW中)是特殊的,因?yàn)樗瑫r(shí)又是位處理器的位累加器。3.程序狀態(tài)字寄存器PSWAT89S51單片機(jī)的程序狀態(tài)字寄存器(ProgramStatusWord,PSW)位于單片機(jī)片內(nèi)的特殊功能寄存器區(qū),字節(jié)地址為D0H。PSW的不同位包含了2021圖2-3PSW的格式程序運(yùn)行狀態(tài)的不同信息,其中4位保存當(dāng)前指令執(zhí)行后的狀態(tài),以供程序查詢和判斷。PSW格式見(jiàn)圖2-3。PSW中各個(gè)位的功能如下。(1)Cy(PSW.7)進(jìn)位標(biāo)志位:也可寫(xiě)為C。在執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算指令時(shí),若有進(jìn)位/借位,則Cy

=

1;否則,Cy=0。在位處理器中,它是位累加器。(2)Ac(PSW.6)輔助進(jìn)位標(biāo)志位:Ac標(biāo)志位用于在BCD碼運(yùn)算時(shí)進(jìn)行十進(jìn)位調(diào)整。即在運(yùn)算時(shí),當(dāng)D3位向D4位產(chǎn)生進(jìn)位或借位時(shí),Ac=1;否則,Ac=0。(3)F0(PSW.5)用戶使用的標(biāo)志位:可用指令來(lái)使它置“1”或清“0”,也可用指令來(lái)測(cè)試該標(biāo)志位,根據(jù)測(cè)試結(jié)果控制程序的流向。編程時(shí),用戶應(yīng)當(dāng)充分利用該標(biāo)志位。22(4)RS1、RS0(PSW.4、PSW.3)4組工作寄存器區(qū)選擇控制位1和位0:這兩位用來(lái)選擇片內(nèi)RAM區(qū)中的4組工作寄存器區(qū)中的某一組為當(dāng)前工作寄存區(qū),RS1、RS0與所選擇的4組工作寄存器區(qū)的對(duì)應(yīng)關(guān)系如表2-2所示。(5)OV(PSW.2)溢出標(biāo)志位:當(dāng)執(zhí)行算術(shù)指令時(shí),OV用來(lái)指示運(yùn)算結(jié)果是否產(chǎn)生溢出。如果結(jié)果產(chǎn)生溢出,OV=1;否則,OV=0。(6)PSW.1位:保留位,未用。(7)P(PSW.0)奇偶標(biāo)志位:該標(biāo)志位表示指令執(zhí)行完時(shí),累加器A中“1”的個(gè)數(shù)是奇數(shù)還是偶數(shù)。P=1,表示A中“1”的個(gè)數(shù)為奇數(shù)。P=0,表示A中“1”的個(gè)數(shù)為偶數(shù)。該標(biāo)志位對(duì)串行口通信中的數(shù)據(jù)傳輸有重要的意義。在串行通信中,常用奇偶檢驗(yàn)的方法來(lái)檢驗(yàn)數(shù)據(jù)串行傳輸?shù)目煽啃浴?.3.2控制器控制器的主要任務(wù)是識(shí)別指令,并根據(jù)指令的性質(zhì)控制單片機(jī)片內(nèi)各部件,從而保證單片機(jī)各部分能自動(dòng)協(xié)調(diào)地工作。24控制器主要包括程序計(jì)數(shù)器、指令寄存器、指令譯碼器、定時(shí)及控制電路等。其功能是控制指令的讀入、譯碼和執(zhí)行,從而對(duì)單片機(jī)的各功能部件進(jìn)行定時(shí)和邏輯控制。程序計(jì)數(shù)器PC是控制器中最基本的寄存器,它是一個(gè)獨(dú)立的16位計(jì)數(shù)器,用戶不能直接使用指令對(duì)PC進(jìn)行讀寫(xiě)。當(dāng)單片機(jī)復(fù)位時(shí),PC中的內(nèi)容為0000H,即CPU

從程序存儲(chǔ)器0000H單元取指令,開(kāi)始執(zhí)行程序。PC的基本工作過(guò)程是:CPU讀取指令時(shí),PC內(nèi)容作為欲讀取指令的地址發(fā)送給程序存儲(chǔ)器,然后程序存儲(chǔ)器按此地址輸出指令字節(jié),同時(shí)PC自動(dòng)加1,這也是為什么PC被稱(chēng)為程序計(jì)數(shù)器的原因。由于PC實(shí)質(zhì)上是作為程序存儲(chǔ)器的地址指針,所以也稱(chēng)其為程序指針。

25PC內(nèi)容的變化軌跡決定了程序的流程。由于PC是用戶不可直接訪問(wèn)的,當(dāng)順序執(zhí)行程序時(shí)自動(dòng)加1;執(zhí)行轉(zhuǎn)移程序或子程序或中斷子程序調(diào)用時(shí),由運(yùn)行的指令自動(dòng)將其內(nèi)容更改成所要轉(zhuǎn)移的目的地址。程序計(jì)數(shù)器的計(jì)數(shù)寬度決定了訪問(wèn)程序存儲(chǔ)器的地址范圍。AT89S51單片機(jī)中的PC位數(shù)為16位,故可對(duì)64KB(=216B)的程序存儲(chǔ)器進(jìn)行尋址。2.4AT89S51單片機(jī)存儲(chǔ)器的結(jié)構(gòu)AT89S51單片機(jī)存儲(chǔ)器結(jié)構(gòu)為哈佛結(jié)構(gòu),即程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間是各自獨(dú)立的。AT89S51單片機(jī)的存儲(chǔ)器空間可劃分為如下4類(lèi)。261.程序存儲(chǔ)器空間單片機(jī)能夠按照一定的次序工作,是由于程序存儲(chǔ)器中存放了經(jīng)調(diào)試正確的程序。程序存儲(chǔ)器可以分為片內(nèi)和片外兩部分。AT89S51單片機(jī)的片內(nèi)程序存儲(chǔ)器為4KB的Flash存儲(chǔ)器,編程和擦除完全是電氣實(shí)現(xiàn),且速度快??墒褂镁幊唐鲗?duì)其編程,也可在線編程。當(dāng)AT89S51單片機(jī)的片內(nèi)的4KB的Flash存儲(chǔ)器不夠用時(shí),用戶可在片外可擴(kuò)展程序存儲(chǔ)器,最多可擴(kuò)展至64KB程序存儲(chǔ)器。272.?dāng)?shù)據(jù)存儲(chǔ)器空間數(shù)據(jù)存儲(chǔ)器空間分為片內(nèi)與片外兩部分。AT89S51單片機(jī)內(nèi)部有128B的RAM(增強(qiáng)型的52子系列為256B),用來(lái)存放可讀/寫(xiě)的數(shù)據(jù)。當(dāng)AT89S51單片機(jī)的片內(nèi)RAM不夠用時(shí),可在片外擴(kuò)展最多64KB的RAM的能力,究竟擴(kuò)展多少RAM,由用戶根據(jù)實(shí)際需要來(lái)定。3.特殊功能寄存器AT89S51單片機(jī)片內(nèi)共有26個(gè)特殊功能寄存器SFR(SpecialFunctionRegister)。SFR實(shí)際上是各外圍部件的控制寄存器及狀態(tài)寄存器,綜合反映了整個(gè)單片機(jī)基本系統(tǒng)內(nèi)部實(shí)際的工作狀態(tài)及工作方式。284.位地址空間AT89S51單片機(jī)內(nèi)共有211個(gè)可尋址位,構(gòu)成了位地址空間。它們位于片RAM區(qū)地址20H~2FH(共128位)和特殊功能寄存器區(qū)(片內(nèi)RAM區(qū)字節(jié)地址80H~FFH,共計(jì)83位)。2.4.1程序存儲(chǔ)器空間程序存儲(chǔ)器是只讀存儲(chǔ)器(ROM),用于存放程序和表格之類(lèi)的固定常數(shù)。AT89S51的片內(nèi)程序存儲(chǔ)器為4KB的Flash存儲(chǔ)器,地址范圍為0000H~0FFFH。AT89S51單片機(jī)有16位地址總線,可外擴(kuò)的程序存儲(chǔ)器空間最大為64KB,地址范圍為0000H~FFFFH。有關(guān)片內(nèi)與片外擴(kuò)展的程序存儲(chǔ)器在使用時(shí)應(yīng)注意以下問(wèn)題。(1)整個(gè)程序存儲(chǔ)器空間可分為片內(nèi)和片外兩部分,CPU究竟是訪問(wèn)片內(nèi)的還是片外的程序存儲(chǔ)器,可由引腳上所接的電平來(lái)確定。29當(dāng)EA*=1,PC值≤0FFFH(為片內(nèi)4KB

Flash存儲(chǔ)器的最大地址)時(shí),CPU只讀取片內(nèi)的Flash程序存儲(chǔ)器中的程序代碼,當(dāng)PC值>0FFFH會(huì)自動(dòng)轉(zhuǎn)向讀取片外程序存儲(chǔ)器空間1000H~FFFFH內(nèi)的程序代碼。當(dāng)EA*=0,單片機(jī)只讀取片外程序存儲(chǔ)器(地址范圍為0000H~FFFFH)中的程序代碼。CPU不理會(huì)片內(nèi)4KB(地址范圍0000H~0FFFH)的Flash存儲(chǔ)器。(2)程序存儲(chǔ)器的某些單元被固定用于各中斷源的中斷服務(wù)程序的入口地址。64KB程序存儲(chǔ)器空間中有5個(gè)特殊單元分別對(duì)應(yīng)于5個(gè)中斷源的中斷服務(wù)子程序的中斷入口,如表2-3所示。32用匯編語(yǔ)言編程時(shí),通常在這5個(gè)中斷入口地址處都放1條跳轉(zhuǎn)指令跳向?qū)?yīng)的中斷服務(wù)子程序,而不是直接存放中斷服務(wù)子程序。這是因?yàn)閮蓚€(gè)中斷入口間隔僅有8個(gè)單元,如果這8個(gè)單元存放中斷服務(wù)子程序,往往是不夠用的。AT89S51復(fù)位后,程序存儲(chǔ)器地址指針PC的內(nèi)容為0000H,程序從程序存儲(chǔ)器地址0000H開(kāi)始執(zhí)行程序。由于外部中斷0的中斷服務(wù)程序入口地址為0003H,為使主程序不與外部中斷0的中斷服務(wù)程序發(fā)生沖突,用匯編語(yǔ)言編程時(shí),一般在0000H單元存放一條跳轉(zhuǎn)指令,轉(zhuǎn)向主程序的入口地址。2.4.2數(shù)據(jù)存儲(chǔ)器空間數(shù)據(jù)存儲(chǔ)器空間分為片內(nèi)與片外兩部分。1.片內(nèi)數(shù)據(jù)存儲(chǔ)器AT89S51單片機(jī)的片內(nèi)數(shù)據(jù)存儲(chǔ)器(RAM)共有128個(gè)單元,字節(jié)地址為00H~7FH。圖2-4為AT89S51片內(nèi)數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)。3334圖2-4AT89S51片內(nèi)RAM的結(jié)構(gòu)地址為00H~1FH的32個(gè)單元是4組通用工作寄存器區(qū),每個(gè)區(qū)包含8B的工作寄存器,編號(hào)為R7~R0。用戶可以通過(guò)指令改變特殊功能寄存器PSW中的RS1、RS0這兩位來(lái)切換選擇當(dāng)前的工作寄存器區(qū),如表2-2所示。地址為20H~2FH的16個(gè)單元的128位(8位×16)可進(jìn)行位尋址,也可以進(jìn)行字節(jié)尋址。地址為30H~7FH的單元為用戶RAM區(qū),只能進(jìn)行字節(jié)尋址,用作存放數(shù)據(jù)以及作為堆棧區(qū)使用。2.片外數(shù)據(jù)存儲(chǔ)器當(dāng)片內(nèi)128B的RAM不夠用時(shí),需要外擴(kuò)數(shù)據(jù)存儲(chǔ)器,AT89S51單片機(jī)最多可外擴(kuò)64KB的RAM。注意,雖然片內(nèi)RAM與片外RAM的低128B的地址是相同的,但是由于是兩個(gè)不同的數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)時(shí)使用不同的指令,所以不會(huì)發(fā)生數(shù)據(jù)沖突。352.4.3特殊功能寄存器AT89S51單片機(jī)中的特殊功能寄存器的單元地址映射在片內(nèi)RAM區(qū)的80H~FFH區(qū)域中,共有26個(gè),離散地分布在該區(qū)域中,表2-4所示為SFR的名稱(chēng)及其分布。其中有些SFR還可進(jìn)行位尋址,其位地址已在表2-4中列出。與AT89C51相比,AT89S51新增加了5個(gè)SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST(見(jiàn)表2-4中的序號(hào)為5、6、14、19和20的寄存器)。3637從表2-4中可以發(fā)現(xiàn),凡是可以進(jìn)行位尋址的SFR,其字節(jié)地址的末位只能是0H或8H。另外,若CPU讀/寫(xiě)沒(méi)有定義的單元,將得到一個(gè)不確定的隨機(jī)數(shù)。SFR塊中的累加器A和程序狀態(tài)字寄存器PSW已在前面作過(guò)介紹。下面簡(jiǎn)單介紹SFR塊中的某些SFR,余下的SFR與片內(nèi)外圍部件密切相關(guān),將在后續(xù)介紹片內(nèi)外圍部件時(shí)進(jìn)行說(shuō)明。1.堆棧指針SP堆棧指針SP的內(nèi)容指示出堆棧頂部在內(nèi)部RAM塊中的位置。它可指向內(nèi)部RAM00H~7FH的任何單元。AT89S51的堆棧結(jié)構(gòu)屬于向上生長(zhǎng)型的堆棧(即每向堆棧壓入1字節(jié)數(shù)據(jù)時(shí),SP的內(nèi)容自動(dòng)增1)。單片機(jī)復(fù)位后,SP中的內(nèi)容為07H,使得堆棧實(shí)際上從08H單元開(kāi)始,考慮到08H~1FH單元分別是屬于1~3組的工作寄存器區(qū),所以在程序設(shè)計(jì)中要用到這些工作寄存器區(qū)最好在復(fù)位后且運(yùn)行程序前,把SP值改置為60H或更大的值,以避免堆棧區(qū)與工作寄存器區(qū)發(fā)生沖突。堆棧主要是為子程序調(diào)用和中斷操作而設(shè)立的,具體功能有兩個(gè):保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)保護(hù)。(1)保護(hù)斷點(diǎn)。因?yàn)闊o(wú)論是子程序調(diào)用操作還是中斷服務(wù)子程序調(diào)用操作,主程序都會(huì)被“打斷”,但最終都要返回到主程序繼續(xù)執(zhí)行程序。因此,應(yīng)預(yù)先把主程序的斷點(diǎn)在堆棧中保護(hù)起來(lái),為程序的正確返回做準(zhǔn)備。(2)現(xiàn)場(chǎng)保護(hù)。在單片機(jī)執(zhí)行子程序或中斷服務(wù)子程序時(shí),很可能要用到單片機(jī)中的一些寄存器單元,這就會(huì)破壞主程序運(yùn)行時(shí)這些寄存器單元的原有內(nèi)容。所以在執(zhí)行子程序或中斷服務(wù)程序之前,要把單片機(jī)中有關(guān)寄存器單元的內(nèi)容保存起來(lái),送入堆棧,這就是所謂的“現(xiàn)場(chǎng)保護(hù)”。40堆棧的操作有兩種:一種是數(shù)據(jù)壓入(PUSH)堆棧,另一種是數(shù)據(jù)彈出(POP)堆棧。當(dāng)1字節(jié)數(shù)據(jù)壓入堆棧時(shí),SP先自動(dòng)加1,再把1字節(jié)數(shù)據(jù)壓入堆棧;1字節(jié)數(shù)據(jù)彈出堆棧后,SP自動(dòng)減1。例如,(SP)=60H,CPU執(zhí)行1條子程序調(diào)用指令或響應(yīng)中斷后,PC內(nèi)容(斷點(diǎn)地址)進(jìn)棧,PC的低8位PCL的內(nèi)容壓入到61H單元,PC的高8位PCH的內(nèi)容壓入到62H,此時(shí),(SP)=62H。2.寄存器BAT89S51單片機(jī)在進(jìn)行乘法和除法操作時(shí)要使用寄存器B。在不執(zhí)行乘、除法操作的情況下,可把它當(dāng)作一個(gè)普通寄存器來(lái)使用。乘法運(yùn)算時(shí),兩個(gè)乘數(shù)分別在A、B中,執(zhí)行乘法指令后,乘積存放在BA寄存器對(duì)中。B中放乘積的高8位,A中放乘積的低8位。除法運(yùn)算時(shí),被除數(shù)取自A,除數(shù)取自B,商存放在A中,余數(shù)存放于B中。413.AUXR寄存器AUXR是輔助寄存器,格式見(jiàn)圖2-5。42圖2-5AUXR寄存器的格式DISALE:ALE的禁止/允許位。0:ALE有效,發(fā)出ALE脈沖;1:ALE僅在CPU訪問(wèn)外部存儲(chǔ)器時(shí)有效,不訪問(wèn)外部存儲(chǔ)器時(shí),ALE引腳不輸出脈沖信號(hào),可減少對(duì)外部電路的干擾。DISRTO:禁止/允許看門(mén)狗定時(shí)器WDT溢出時(shí)的復(fù)位輸出。0:WDT溢出時(shí),允許向RST引腳輸出一個(gè)高電平脈沖,使單片機(jī)復(fù)位;1:禁止WDT溢出時(shí)的復(fù)位輸出。WDIDLE:WDT在空閑模式下的禁止/允許位。0:允許WDT在空閑模式下計(jì)數(shù);1:禁止WDT在空閑模式下計(jì)數(shù)。434.?dāng)?shù)據(jù)指針DPTR0和DPTR1DPTR0和DPTR1為雙數(shù)據(jù)指針寄存器。是為了便于訪問(wèn)數(shù)據(jù)存儲(chǔ)器而設(shè)置的。DPTR0為8051單片機(jī)原有的數(shù)據(jù)指針,DPTR1為新增加的數(shù)據(jù)指針。AUXR1的DPS位(見(jiàn)圖2-6)用于選擇這兩個(gè)數(shù)據(jù)指針。當(dāng)DPS=0時(shí),選用DPTR0;當(dāng)DPS=1時(shí),選用DPTR1。AT89S51復(fù)位時(shí),默認(rèn)選用DPTR0。DPTR0(或DPTR1)是一個(gè)16位的SFR,其高位字節(jié)寄存器用DP0H(或DP1H)表示,低位字節(jié)寄存器用DP0L(或DP1L)表示。DPTR0(或DPTR1)既可以作為一個(gè)16位寄存器來(lái)用,也可以作為兩個(gè)獨(dú)立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)來(lái)用。44455.AUXR1寄存器AUXR1的格式如圖2-6所示。其中:DPS—數(shù)據(jù)指針寄存器選擇位。

0:選擇數(shù)據(jù)指針寄存器DPTR0;

1:選擇數(shù)據(jù)指針寄存器DPTR1。6.看門(mén)狗定時(shí)器WDT看門(mén)狗定時(shí)器WDT包含1個(gè)14位計(jì)數(shù)器和看門(mén)狗復(fù)位寄存器(WDTRST)。當(dāng)CPU由于干擾,程序陷入死循環(huán)或跑飛狀態(tài)時(shí),看門(mén)狗定時(shí)器WDT提供了一種使程序恢復(fù)正常運(yùn)行的有效手段。46有關(guān)WDT在抗干擾設(shè)計(jì)中的應(yīng)用,將在本章的2.9節(jié)中介紹。上面介紹的特殊功能寄存器,除了SP和B以外,其余的均為AT89S51在AT89C51的基礎(chǔ)上新增加的SFR。2.4.4位地址空間AT89S51在RAM和SFR中共有211個(gè)尋址位的位地址,位地址范圍為00H~FFH,其中00H~7FH這128位處于片內(nèi)RAM字節(jié)地址20H~2FH單元中,如表2-5所示。其余的83個(gè)可尋址位分布在特殊功能寄存器SFR中,如表2-6所示??杀晃粚ぶ返募拇嫫饔?1個(gè),共有位地址88個(gè),其中5個(gè)位未用,其余83個(gè)位的位地址離散地分布于片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)字節(jié)地址為80H~FFH的范圍內(nèi),其最低位的位地址與其字節(jié)地址相同,并且其字節(jié)地址的末位都為0H或8H。48圖2-7所示為AT89S51單片機(jī)中各類(lèi)存儲(chǔ)器的結(jié)構(gòu)圖,從圖中可清楚地看出AT89S51單片機(jī)的各類(lèi)存儲(chǔ)器在存儲(chǔ)器空間的位置。圖2-7AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)2.5AT89S51單片機(jī)的并行I/O端口AT89S51單片機(jī)共有4個(gè)雙向的8位并行I/O端口,即P0~P3,表2-4中的特殊功能寄存器P0、P1、P2和P3就是這4個(gè)端口的輸出鎖存器。4個(gè)端口除了按字節(jié)輸入/輸出外,還可按位尋址,便于實(shí)現(xiàn)位控功能的實(shí)現(xiàn)。2.5.1P0口P0口是一雙功能的8位并行端口,字節(jié)地址為80H,位地址為80H~87H。P0口的位電路結(jié)構(gòu)如圖2-8所示。

5152圖2-8P0口某一位的位電路結(jié)構(gòu)1.P0口的工作原理(1)P0口用作系統(tǒng)的地址/數(shù)據(jù)總線用當(dāng)AT89S51外擴(kuò)存儲(chǔ)器或I/O時(shí),P0口作為單片機(jī)系統(tǒng)復(fù)用的地址/數(shù)據(jù)總線使用。此時(shí),圖2-8中的“控制”信號(hào)為1,硬件自動(dòng)使轉(zhuǎn)接開(kāi)關(guān)MUX打向上面,接通反相器的輸出,同時(shí)使“與門(mén)”處于開(kāi)啟狀態(tài)。當(dāng)輸出的“地址/數(shù)據(jù)”信息為1時(shí),“與門(mén)”輸出為1,上方的場(chǎng)效應(yīng)管導(dǎo)通,下方的場(chǎng)效應(yīng)管截止,P0.x引腳輸出為1;當(dāng)輸出的“地址/數(shù)據(jù)”信息為0時(shí),上方的場(chǎng)效應(yīng)管截止,下方的場(chǎng)效應(yīng)管導(dǎo)通,P0.x引腳輸出為0??梢?jiàn)P0.x引腳的輸出狀態(tài)隨“地址/數(shù)據(jù)”控制信號(hào)的狀態(tài)變化而變化。上方的場(chǎng)效應(yīng)管起到內(nèi)部上拉電阻的作用。當(dāng)P0口作為數(shù)據(jù)線輸入時(shí),僅從外部存儲(chǔ)器(或外部I/O)讀入信息,對(duì)應(yīng)的“控制”信號(hào)為0,MUX接通鎖存器的端。由于P0口作為地址/數(shù)據(jù)復(fù)用方式訪問(wèn)外部存儲(chǔ)器時(shí),CPU自動(dòng)向P0口寫(xiě)入FFH,使下方的場(chǎng)效應(yīng)管截止,由于控制信號(hào)為0,上方的場(chǎng)效應(yīng)管也截止,從而保證數(shù)據(jù)信息的高阻抗輸入,從外部存儲(chǔ)器或I/O輸入的數(shù)據(jù)信息直接由P0.x引腳通過(guò)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。由以上分析,P0口具有高電平、低電平和高阻抗輸入3種狀態(tài)的端口,因此,P0口作為地址/數(shù)據(jù)總線使用時(shí),是一真正的雙向端口,簡(jiǎn)稱(chēng)雙向口。(2)P0口用作通用I/O口使用P0口不作地址/數(shù)據(jù)總線使用時(shí),也可作為通用的I/O口使用。此時(shí),對(duì)應(yīng)的“控制”信號(hào)為0,MUX打向下面,接通鎖存器的端,“與門(mén)”輸出為0,上方的場(chǎng)效應(yīng)管截止,形成的P0口輸出電路為漏極開(kāi)路輸出。P0口用作通用I/O輸出口時(shí),來(lái)自CPU的“寫(xiě)”脈沖加在D鎖存器的CP端,內(nèi)部總線上的數(shù)據(jù)寫(xiě)入D鎖存器,并由引腳P0.x輸出。當(dāng)D鎖存器為1時(shí),端為0,下方場(chǎng)效應(yīng)管截止,輸出為漏極開(kāi)路,此時(shí),必須外接上拉電阻才能有高電平輸出;當(dāng)D鎖存器為0時(shí),下方場(chǎng)效應(yīng)管導(dǎo)通,P0口輸出為低電平。P0口作為通用I/O輸入口時(shí),有兩種讀入方式:“讀鎖存器”和“讀引腳”。當(dāng)CPU發(fā)出“讀鎖存器”指令時(shí),鎖存器的狀態(tài)由Q端經(jīng)上方的三態(tài)緩沖器BUF1進(jìn)入內(nèi)部總線;當(dāng)CPU發(fā)出“讀引腳”指令時(shí),鎖存器的輸出狀態(tài)=1(即端為0),從而使下方場(chǎng)效應(yīng)管截止,引腳的狀態(tài)經(jīng)下方的三態(tài)緩沖器BUF2進(jìn)入內(nèi)部總線。2.P0口總結(jié)綜上所述,P0口具有如下特點(diǎn):(1)當(dāng)P0口用作地址/數(shù)據(jù)總線口使用時(shí),是一個(gè)真正的雙向口,用作與外部擴(kuò)展的存儲(chǔ)器或I/O連接,輸出低8位地址和輸出/輸入8位數(shù)據(jù)。(2)當(dāng)P0口用作通用I/O口使用時(shí),P0口各引腳需要在片外接上拉電阻,此時(shí)端口不存在高阻抗的懸浮狀態(tài),因此是一個(gè)準(zhǔn)雙向口。大多數(shù)情況下,單片機(jī)片外都擴(kuò)展RAM或I/O接口芯片,此時(shí)P0口只能作為復(fù)用的地址/數(shù)據(jù)總線使用。如果單片機(jī)片外沒(méi)有外擴(kuò)RAM和I/O接口芯片,此時(shí)P0口才能作為通用I/O口使用。2.5.2P1口P1口為通用I/O端口,字節(jié)地址為90H,位地址為90H~97H。位電路結(jié)構(gòu)如圖2-9所示。圖2-9P1口某一位的位電路結(jié)構(gòu)1.P1口的工作原理P1口只能作為通用I/O口使用。(1)P1口作為輸出口時(shí),若CPU輸出1,Q=1,=0,場(chǎng)效應(yīng)管截止,P1口引腳的輸出為1;若CPU輸出0,Q=0,=1,場(chǎng)效應(yīng)管導(dǎo)通,P1口引腳的輸出為0。(2)P1口作為輸入口時(shí),分為“讀鎖存器”和“讀引腳”兩種方式?!白x鎖存器”時(shí),鎖存器的輸出端Q的狀態(tài)經(jīng)輸入緩沖器BUF1進(jìn)入內(nèi)部總線;“讀引腳”時(shí),先向鎖存器寫(xiě)1,使場(chǎng)效應(yīng)管截止,P1.x引腳上的電平經(jīng)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。2.P1口總結(jié)P1口由于有內(nèi)部上拉電阻,沒(méi)有高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。作為輸出口時(shí),不需要在片外接上拉電阻。P1口“讀引腳”輸入時(shí),必須先向鎖存器P1寫(xiě)入1。2.5.3P2口P2口是一個(gè)雙功能口,字節(jié)地址為A0H,位地址為A0H~A7H。P2口的位電路結(jié)構(gòu)如圖2-10所示。圖2-10P2口某一位的位電路結(jié)構(gòu)1.P2口的工作原理(1)P2口用作地址總線口。在內(nèi)部控制信號(hào)作用下,MUX與“地址”接通。當(dāng)“地址”線為0時(shí),場(chǎng)效應(yīng)管導(dǎo)通,P2口引腳輸出0;當(dāng)“地址”線為1時(shí),場(chǎng)效應(yīng)管截止,P2口引腳輸出1。(2)P2口用作通用I/O口。在內(nèi)部控制信號(hào)作用下,MUX與鎖存器的Q端接通。CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P2.x引腳輸出1;CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P2.x引腳輸出0。輸入時(shí),分為“讀鎖存器”和“讀引腳”兩種方式?!白x鎖存器”時(shí),Q端信號(hào)經(jīng)輸入緩沖器BUF1進(jìn)入內(nèi)部總線;“讀引腳”時(shí),先向鎖存器寫(xiě)1,使場(chǎng)效應(yīng)管截止,P2.x引腳上的電平經(jīng)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。

2.P2口總結(jié)P2口作為地址輸出線使用時(shí),可輸出外部存儲(chǔ)器的高8位地址,與P0口輸出的低8位地址一起構(gòu)成16位地址,共可尋址64KB的片外地址空間。當(dāng)P2口作為高8位地址輸出口時(shí),輸出鎖存器的內(nèi)容保持不變。P2口作為通用I/O口使用時(shí),為準(zhǔn)雙向口,功能與P1口一樣。一般情況下,P2口大多作為高8位地址總線口使用,這時(shí)就不能再作為通用I/O口。如果不作為地址總線口使用,可作為通用I/O口使用。2.5.4P3口由于AT89S51的引腳數(shù)目有限,因此在P3口電路中增加了引腳的第二功能(第二功能定義見(jiàn)表2-1)。P3口的每一位都可以分別定義為第二輸入功能或第二輸出功能。P3口的字節(jié)地址為B0H,位地址為B0H~B7H。P3口的位電路結(jié)構(gòu)見(jiàn)圖2-11。1.P3口的工作原理(1)P3口用作第二輸入/輸出功能。當(dāng)選擇第二輸出功能時(shí),該位的鎖存器需要置“1”,使“與非門(mén)”為開(kāi)啟狀態(tài)。當(dāng)?shù)诙敵鰹?時(shí),場(chǎng)效應(yīng)管截止,P3.x引腳輸出為1;當(dāng)?shù)诙敵鰹?時(shí),場(chǎng)效應(yīng)管導(dǎo)通,P3.x引腳輸出為0。圖2-11P3口某一位的位電路結(jié)構(gòu)當(dāng)選擇第二輸入功能時(shí),該位的鎖存器和第二輸出功能端均應(yīng)置1,保證場(chǎng)效應(yīng)管截止,P3.x引腳的信息由輸入緩沖器BUF3的輸出獲得。(2)P3口用作第一功能—通用I/O口。當(dāng)P3口用作通用I/O的輸出時(shí),“第二輸出功能”端應(yīng)保持高電平,“與非門(mén)”為開(kāi)啟狀態(tài)。CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P3.x引腳輸出為1;CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P3.x引腳輸出為0。

當(dāng)P3口用作通用I/O的輸入時(shí),P3.x位的輸出鎖存器和“第二輸出功能”端均應(yīng)置1,場(chǎng)效應(yīng)管截止,P3.x引腳信息通過(guò)輸入BUF3和BUF2進(jìn)入內(nèi)部總線,完成“讀引腳”操作。當(dāng)P3口用作通用I/O的輸入時(shí),也可執(zhí)行“讀鎖存器”操作,此時(shí)Q端信息經(jīng)過(guò)緩沖器BUF1進(jìn)入內(nèi)部總線。2.P3口總結(jié)P3口內(nèi)部有上拉電阻,不存在高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。由于P3口每一引腳有第一功能與第二功能,究竟是使用哪個(gè)功能,完全是由單片機(jī)執(zhí)行的指令控制來(lái)自動(dòng)切換的,用戶不需要進(jìn)行任何設(shè)置。引腳輸入部分有兩個(gè)緩沖器,第二功能的輸入信號(hào)取自緩沖器BUF3的輸出端,第一功能的輸入信號(hào)取自緩沖器BUF2的輸出端。

2.6時(shí)鐘電路與時(shí)序時(shí)鐘電路用于產(chǎn)生AT89S51單片機(jī)工作時(shí)所必需的控制信號(hào),單片機(jī)的內(nèi)部電路正是在時(shí)鐘信號(hào)的控制下,嚴(yán)格地按時(shí)序執(zhí)行指令進(jìn)行工作。CPU執(zhí)行指令時(shí),首先到程序存儲(chǔ)器中取出需要執(zhí)行的指令操作碼,然后譯碼,并由時(shí)序電路產(chǎn)生一系列控制信號(hào)完成指令所規(guī)定的操作。

CPU發(fā)出的時(shí)序信號(hào)有兩類(lèi):一類(lèi)用于對(duì)片內(nèi)各個(gè)功能部件的控制,用戶無(wú)需了解;另一類(lèi)用于對(duì)片外存儲(chǔ)器或I/O端口的控制,這部分時(shí)序?qū)τ诜治?、設(shè)計(jì)硬件接口電路至關(guān)重要,這也是單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)者普遍關(guān)心和重視的問(wèn)題。

682.6.1時(shí)鐘電路設(shè)計(jì)AT89S51單片機(jī)各外設(shè)部件的運(yùn)行都以時(shí)鐘控制信號(hào)為基準(zhǔn),有條不紊、一拍一拍地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。AT89S51單片機(jī)的最高時(shí)鐘頻率為33MHz。1.內(nèi)部時(shí)鐘方式AT89S51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳外部跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,圖2-12所示為AT89S51單片機(jī)內(nèi)部時(shí)鐘方式的電路。69圖2-12AT89S51內(nèi)部時(shí)鐘方式的電路

電路中的電容

C1和

C2

的典型值通常選擇為

30pF。晶體振蕩頻率通常選擇6MHz、12MHz(可得到準(zhǔn)確的定時(shí))或11.0592MHz(可得到準(zhǔn)確的串行通信波特率)的石英晶體。2.外部時(shí)鐘方式外部時(shí)鐘方式使用現(xiàn)成的外部振蕩器產(chǎn)生時(shí)鐘脈沖信號(hào),常用于多片AT89S51單片機(jī)同時(shí)工作,以便于多片AT89S51單片機(jī)之間的同步。外部時(shí)鐘源直接接到XTAL1端,XTAL2端懸空,其電路如圖2-13所示。7172圖2-13

外部時(shí)鐘方式電路3.時(shí)鐘信號(hào)的輸出當(dāng)使用片內(nèi)振蕩器時(shí),XTAL1、XTAL2引腳還能為應(yīng)用系統(tǒng)中的其他芯片提供時(shí)鐘,但需增加驅(qū)動(dòng)能力。其引出的方式有兩種,如圖2-14所示。73圖2-14

時(shí)鐘信號(hào)的兩種引出方式2.6.2時(shí)鐘周期、機(jī)器周期、指令周期與指令時(shí)序

各種指令時(shí)序與時(shí)鐘周期相關(guān)。1.時(shí)鐘周期

時(shí)鐘控制信號(hào)的基本時(shí)間單位。若晶振頻率為fosc,則時(shí)鐘周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。2.機(jī)器周期CPU完成一個(gè)基本操作所需時(shí)間為機(jī)器周期。執(zhí)行一條指令分為幾個(gè)機(jī)器周期。每個(gè)機(jī)器周期完成一個(gè)基本操作,如取指令、讀或?qū)憯?shù)據(jù)等。每12個(gè)時(shí)鐘周期為1個(gè)機(jī)器周期751個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期,分6個(gè)狀態(tài):S1~S6。每個(gè)狀態(tài)又分兩拍:P1和P2。因此,一個(gè)機(jī)器周期中的12個(gè)時(shí)鐘周期表示為S1P1、S1P2、S2P1、S2P2、…、S6P2,見(jiàn)圖2-15。76圖2-15AT89S51的機(jī)器周期3.指令周期指令周期是執(zhí)行一條指令所需的時(shí)間。AT89S51單片機(jī)中指令按字節(jié)來(lái)分,可分為單字節(jié)、雙字節(jié)與三字節(jié)指令。因此執(zhí)行一條指令的時(shí)間也不同。對(duì)于簡(jiǎn)單的單字節(jié)指令,取出指令立即執(zhí)行,只需一個(gè)機(jī)器周期的時(shí)間。而有些復(fù)雜的指令,如轉(zhuǎn)移、乘、除指令則需兩個(gè)或多個(gè)機(jī)器周期。從指令的執(zhí)行時(shí)間看,單字節(jié)和雙字節(jié)指令一般為單機(jī)器周期和雙機(jī)器周期,三字節(jié)指令都是雙機(jī)器周期,只有乘、除指令占用4個(gè)機(jī)器周期。772.7復(fù)位操作和復(fù)位電路復(fù)位是單片機(jī)的初始化操作,只需給AT89S51單片機(jī)的復(fù)位引腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可使AT89S51單片機(jī)復(fù)位。2.7.1復(fù)位操作復(fù)位時(shí),PC初始化為0000H,程序從0000H單元開(kāi)始執(zhí)行。

除系統(tǒng)的正常初始化外,當(dāng)程序出錯(cuò)(如程序跑飛)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),需按復(fù)位鍵使RST腳為高電平,使AT89S51擺脫“跑飛”或“死鎖”狀態(tài)而重新從0000H開(kāi)始執(zhí)行程序。

復(fù)位操作還對(duì)其他一些寄存器有影響,這些寄存器復(fù)位時(shí)的狀態(tài)見(jiàn)表2-7。

由表2-7可看出,復(fù)位時(shí),SP=07H

,而P0~P3引腳均為高電平。在某些控制應(yīng)用中,要注意考慮P0~P3引腳的高電平對(duì)接在這些引腳上的外部電路的影響。

例如,當(dāng)P1口某個(gè)引腳外接一個(gè)繼電器繞組,當(dāng)復(fù)位時(shí),該引腳為高電平,繼電器繞組就會(huì)有電流通過(guò),就會(huì)吸合繼電器開(kāi)關(guān),使開(kāi)關(guān)接通,可能會(huì)引起意想不到的后果。792.7.2復(fù)位電路設(shè)計(jì)AT89S51

的復(fù)位是由外部復(fù)位電路實(shí)現(xiàn)的。典型的復(fù)位電路見(jiàn)圖

2-16。上電復(fù)位的工作原理是+5V(VCC)電源通過(guò)電容C與電阻Rk回路,給電容C充電加給RST引腳上一個(gè)短暫的高電平信號(hào),此信號(hào)隨著VCC對(duì)電容C的充電過(guò)程而逐漸回落,即RST引腳上的高電平持續(xù)時(shí)間取決于電容C充電時(shí)間。充電時(shí)間越長(zhǎng),復(fù)位時(shí)間越長(zhǎng),增大電容或電阻都可以增加復(fù)位時(shí)間。

除了上電復(fù)位外,有時(shí)還需要人工按鍵復(fù)位。按下按鍵后,通過(guò)兩個(gè)電阻Rs和Rk的分壓,在RST端產(chǎn)生高電平,按鍵按下的時(shí)間決定了復(fù)位的時(shí)間。81圖2-16

復(fù)位電路當(dāng)時(shí)鐘頻率選用6MHz時(shí),CR的典型取值為10μF,兩個(gè)電阻Rs和Rk的典型值分別為220?和2k?。一般來(lái)說(shuō),單片機(jī)的復(fù)位速度比外圍I/O接口電路快些。因此在實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)中,為保證系統(tǒng)可靠復(fù)位,在單片機(jī)應(yīng)用程序的初始化程序段應(yīng)安排一定的復(fù)位延遲時(shí)間,以保證單片機(jī)與外圍I/O接口電路都能可靠地復(fù)位。832.8AT89S51單片機(jī)的最小應(yīng)用系統(tǒng)AT89S51單片機(jī)本身片內(nèi)有4KB閃爍存儲(chǔ)器,128B的RAM單元,4個(gè)I/O口,外接時(shí)鐘電路和復(fù)位電路即構(gòu)成了一個(gè)AT89S51單片機(jī)最小應(yīng)用系統(tǒng),如圖2-1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論