單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件_第1頁
單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件_第2頁
單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件_第3頁
單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件_第4頁
單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件_第5頁
已閱讀5頁,還剩203頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第章單片機(jī)的片內(nèi)硬件結(jié)構(gòu)第章單片機(jī)的片內(nèi)硬件結(jié)構(gòu)12內(nèi)容概要

本章介紹AT89S51單片機(jī)的片內(nèi)硬件結(jié)構(gòu)。片內(nèi)外設(shè)資源的基本功能及工作原理片內(nèi)存儲(chǔ)器結(jié)構(gòu)常見的特殊功能寄存器的基本功能復(fù)位電路與時(shí)鐘電路的設(shè)計(jì)單片機(jī)最小系統(tǒng)掌握2內(nèi)容概要片內(nèi)外設(shè)資源的基本功能及工作原理片內(nèi)存儲(chǔ)器結(jié)構(gòu)常23指令(程序)硬件控制3指令(程序)硬件控制3圖2-1AT89S51單片機(jī)片內(nèi)結(jié)構(gòu)2.1AT89S51單片機(jī)的硬件組成圖2-1AT89S51單片機(jī)片內(nèi)結(jié)構(gòu)2.1AT89S4AT89S51單片機(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ù)器;AT89S51單片機(jī)具有如下外圍部件及特性:56(6)1個(gè)通用的全雙工的異步收發(fā)串行口(UART);(7)中斷系統(tǒng)具有5個(gè)中斷源、5個(gè)中斷向量;(8)特殊功能寄存器(SFR)26個(gè);(9)1個(gè)看門狗定時(shí)器(WDT);6(6)1個(gè)通用的全雙工的異步收發(fā)串行口(UART);67AT89S51片內(nèi)的各部件通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是CPU加上外圍芯片的傳統(tǒng)微型計(jì)算機(jī)結(jié)構(gòu)模式,但CPU對(duì)各種外圍部件的控制是采用特殊功能寄存器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ǔ)器。7AT89S51片內(nèi)的各部件通過片內(nèi)單一總7(3)程序存儲(chǔ)器(FlashROM):用來存儲(chǔ)程序。AT89S51片內(nèi)有4KB的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ù)器具有4種工作方式。(6)串行口:1個(gè)全雙工的異步串行口(UART),具有4種工作方式。8(3)程序存儲(chǔ)器(FlashROM):用來存儲(chǔ)程序。AT889(7)4個(gè)8位的并行口:P0口、P1口、P2口和P3口。(8)特殊功能寄存器(SFR):共有26個(gè)特殊功能寄存器,用于CPU對(duì)片內(nèi)各外圍部件進(jìn)行管理、控制和監(jiān)視。特殊功能寄存器實(shí)際上是片內(nèi)各外圍部件的控制寄存器和狀態(tài)寄存器,這些特殊功能寄存器映射在片內(nèi)RAM區(qū)的80H~FFH的地址區(qū)間內(nèi)。(9)1個(gè)看門狗定時(shí)器WDT,當(dāng)單片機(jī)由于干擾而使程序陷入死循環(huán)或跑飛狀態(tài)時(shí),可引起單片機(jī)復(fù)位,使程序恢復(fù)正常運(yùn)行。9(7)4個(gè)8位的并行口:P0口、P1口、P2口和P3口。92.2AT89S51的引腳功能

掌握AT89S51單片機(jī),應(yīng)首先熟悉并掌握各引腳的功能。AT89S51與各種8051單片機(jī)的引腳是互相兼容的。目前,AT89S51單片機(jī)多采用40只引腳的塑料雙列直插封裝(DIP)方式,如圖2-2所示。102.2AT89S51的引腳功能1010圖2-2AT89S51雙列直插封裝方式的引腳圖2-2AT89S51雙列直插封裝方式的引腳1140只引腳按功能可分為如下3類:(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介紹各引腳的功能。

電源及時(shí)鐘引腳1.電源引腳(1)VCC(40腳):接+5V電源。(2)VSS(20腳):接數(shù)字地。1240只引腳按功能可分為如下3類:1212

2.時(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í),本引腳懸空。132.時(shí)鐘引腳131314控制引腳控制引腳提供控制信號(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)看門狗定時(shí)器溢出輸出時(shí),該引腳將輸出長(zhǎng)達(dá)96個(gè)時(shí)鐘振蕩周期的高電平。14控制引腳14(2)EA/

VPP(EnableAddress/VoltagePulseofPrograming,31腳)(ExternalAccessEnable)為該引腳的第一功能:外部程序存儲(chǔ)器訪問允許控制端。當(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ǔ)器中的程序代碼。

15(2)EA/

VPP(EnableAddress/Vol1516當(dāng)EA=0時(shí),只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地址范圍為0000H~FFFFH,片內(nèi)的4KBFlash程序存儲(chǔ)器不起作用。

VPP為該引腳的第二功能,在對(duì)片內(nèi)Flash進(jìn)行編程時(shí),VPP引腳接入編程電壓。16當(dāng)EA=0時(shí),只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地16由于PC實(shí)質(zhì)上是作為程序寄存器的地址指針,所以也稱其為程序指針。WDIDLE:WDT在空閑模式下的禁止/允許位。(1)整個(gè)程序存儲(chǔ)器空間可分為片內(nèi)和片外兩部分,CPU究竟是訪問片內(nèi)的還是片外的程序存儲(chǔ)器,可由引腳上所接的電平來確定。CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P2.2)溢出標(biāo)志位:當(dāng)執(zhí)行算術(shù)指令時(shí),OV用來指示運(yùn)算結(jié)果是否產(chǎn)生溢出。ALU還具有位操作功能,可對(duì)位(bit)變量進(jìn)行位處理,如置“1”、清“0”、求補(bǔ)、測(cè)試轉(zhuǎn)移及邏輯“與”、“或”等操作。1個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期,分6個(gè)狀態(tài):S1~S6。1字節(jié)數(shù)據(jù)彈出堆棧后,SP自動(dòng)減1。XTAL1、XTAL2;堆棧的操作有兩種:一種是數(shù)據(jù)壓入(PUSH)堆棧,另一種是數(shù)據(jù)彈出(POP)堆棧。能不能不要人來監(jiān)視,使系統(tǒng)擺脫失控狀態(tài),重新從0000H地址處執(zhí)行程序呢?這時(shí)可采用“看門狗”技術(shù)。單片機(jī)應(yīng)用系統(tǒng)受到干擾可能會(huì)引起程序“跑飛”或“死循環(huán)”,會(huì)使系統(tǒng)失控。而有些復(fù)雜的指令,如轉(zhuǎn)移、乘、除指令則需兩個(gè)或多個(gè)機(jī)器周期。由于外部中斷0的中斷服務(wù)程序入口地址為0003H,為使主程序不與外部中斷0的中斷服務(wù)程序發(fā)生沖突,用匯編語言編程時(shí),一般在0000H單元存放一條跳轉(zhuǎn)指令,轉(zhuǎn)向主程序的入口地址。(2)控制引腳—PSEN、ALE/PROG、EA/

VPP、RST(即RESET);掌握AT89S51單片機(jī),應(yīng)首先熟悉并掌握各引腳的功能。AT89S51單片機(jī)中指令按字節(jié)來分,可分為單字節(jié)、雙字節(jié)與三字節(jié)指令。在掉電模式下,Vcc可由后備電源供電。(5)2個(gè)可編程16位定時(shí)器/計(jì)數(shù)器;(3)程序存儲(chǔ)器(FlashROM):用來存儲(chǔ)程序。(3)ALE/PROG(AddressLatchEnable/PROGramming,30腳)ALE的第一功能為CPU訪問外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供低8位地址鎖存信號(hào),將單片機(jī)P0口發(fā)出的低8位地址鎖存在片外地址鎖存器中。PROG為該引腳的第二功能,在對(duì)片內(nèi)Flash存儲(chǔ)器編程時(shí),此引腳作為編程脈沖輸入端。

17(4)PSEN(ProgramStrobeENable,29腳)片內(nèi)或片外程序存儲(chǔ)器的讀選通信號(hào),低電平有效。由于PC實(shí)質(zhì)上是作為程序寄存器的地址指針,所以也稱其為程序指17并行I/O口引腳(1)P0口:P0.7~P0.0引腳漏極開路的雙向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ù)載。并行I/O口引腳1819(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ù)輸出和移位脈沖引腳。19(2)P1口:P1.7~P1.0引腳19(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口使用。20(3)P2口:P2.7~P2.0引腳202021(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)熟記。21(4)P3口:P3.7~P3.021222222

綜上所述,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口則無高阻的“懸浮”狀態(tài)。另外,準(zhǔn)雙向口作通用I/O的輸入口使用時(shí),一定要向該口先寫入“1”。以上的準(zhǔn)雙向口與雙向口的差別,在學(xué)習(xí)本章2.5節(jié)的P0~P3口的內(nèi)部結(jié)構(gòu)后,將會(huì)有更深入的理解。23綜上所述,P0口作為地址總線(低8位)及數(shù)據(jù)232.3AT89S51的CPU

AT89S51的CPU是由運(yùn)算器和控制器構(gòu)成。運(yùn)算器運(yùn)算器主要用來對(duì)操作數(shù)進(jìn)行算術(shù)、邏輯和位操作運(yùn)算。算術(shù)邏輯運(yùn)算單元ALU累加器A位處理器程序狀態(tài)字寄存器PSW兩個(gè)暫存器2.3AT89S51的CPU算術(shù)邏輯運(yùn)算單元ALU累加器24251.算術(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)移及邏輯“與”、“或”等操作。251.算術(shù)邏輯運(yùn)算單元ALU252.累加器A累加器A是CPU中使用最頻繁的一個(gè)8位寄存器。累加器的作用如下。(1)是ALU單元的輸入數(shù)據(jù)源之一,同時(shí)又是ALU運(yùn)算結(jié)果的存放單元。(2)CPU中數(shù)據(jù)傳送大多都通過累加器A,故累加器A又相當(dāng)于數(shù)據(jù)的中轉(zhuǎn)站。為解決累加器結(jié)構(gòu)所帶來的“瓶頸堵塞”問題,AT89S51單片機(jī)增加了一部分可以不經(jīng)過累加器A的傳送指令。累加器A的進(jìn)位位Cy(位于程序狀態(tài)字特殊功能寄存器PSW中)是特殊的,因?yàn)樗瑫r(shí)又是位處理器的位累加器。262.累加器A2626其中:DPS—數(shù)據(jù)指針寄存器選擇位。5AT89S51單片機(jī)的并行I/O端口CPU不理會(huì)片內(nèi)4KB(地址范圍0000H~0FFFH)的Flash存儲(chǔ)器。圖2-2AT89S51雙列直插封裝方式的引腳當(dāng)EA=0時(shí),只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地址范圍為0000H~FFFFH,片內(nèi)的4KBFlash程序存儲(chǔ)器不起作用。(1)整個(gè)程序存儲(chǔ)器空間可分為片內(nèi)和片外兩部分,CPU究竟是訪問片內(nèi)的還是片外的程序存儲(chǔ)器,可由引腳上所接的電平來確定。AT89S51單片機(jī)中的特殊功能寄存器的單元地址映射在片內(nèi)RAM區(qū)的80H~FFH區(qū)域中,共有26個(gè),離散地分布在該區(qū)域中,表2-4所示為SFR的名稱及其分布。4個(gè)端口除了按字節(jié)輸入/輸出外,還可按位尋址,以便位控功能的實(shí)現(xiàn)。由于P3口每一引腳有第一功能與第二功能,究竟是使用哪個(gè)功能,完全是由單片機(jī)執(zhí)行的指令控制來自動(dòng)切換的,用戶不需要進(jìn)行任何設(shè)置。5節(jié)的P0~P3口的內(nèi)部結(jié)構(gòu)后,將會(huì)有更深入的理解。P3口還可提供第二功能,其第二功能定義如表2-1所示,讀者應(yīng)熟記。“讀鎖存器”時(shí),Q端信號(hào)經(jīng)輸入緩沖器BUF1進(jìn)入內(nèi)部總線;CPU不理會(huì)片內(nèi)4KB(地址范圍0000H~0FFFH)的Flash存儲(chǔ)器。若晶振頻率為fosc,則時(shí)鐘周期Tosc=1/fosc。注意,雖然片內(nèi)RAM與片外RAM的低128B的地址是相同的,但是由于是兩個(gè)不同的數(shù)據(jù)存儲(chǔ)區(qū),訪問時(shí)使用不同的指令,所以不會(huì)發(fā)生數(shù)據(jù)沖突。P0口是一雙功能的8位并行端口,字節(jié)地址為80H,位地址為80H~87H。如果結(jié)果產(chǎn)生溢出,OV=1;P0口可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載?!白x鎖存器”時(shí),Q端信號(hào)經(jīng)輸入緩沖器BUF1進(jìn)入內(nèi)部總線;準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。273.程序狀態(tài)字寄存器PSWAT89S51單片機(jī)的程序狀態(tài)字寄存器(ProgramStatusWord,PSW)位于單片機(jī)片內(nèi)的特殊功能寄存器區(qū),字節(jié)地址為D0H。PSW的不同位包含了程序運(yùn)行狀態(tài)的不同信息,其中4位保存當(dāng)前指令執(zhí)行后的狀態(tài),以供程序查詢和判斷。PSW格式見圖2-3。其中:DPS—數(shù)據(jù)指針寄存器選擇位。273.程序狀態(tài)字寄存器27282828PSW中各個(gè)位的功能如下。(1)Cy(PSW.7)進(jìn)位標(biāo)志位:也可寫為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。29PSW中各個(gè)位的功能如下。292930(3)F0(PSW.5)用戶使用的標(biāo)志位:可用指令來使它置“1”或清“0”,也可用指令來測(cè)試該標(biāo)志位,根據(jù)測(cè)試結(jié)果控制程序的流向。編程時(shí),用戶應(yīng)當(dāng)充分利用該標(biāo)志位。(4)RS1、RS0(PSW.4、PSW.3)4組工作寄存器區(qū)選擇控制位1和位0:這兩位用來選擇片內(nèi)RAM區(qū)中的4組工作寄存器區(qū)中的某一組為當(dāng)前工作寄存區(qū),RS1、RS0與所選擇的4組工作寄存器區(qū)的對(duì)應(yīng)關(guān)系如表2-2所示。30(3)F0(PSW.5)用戶使用的標(biāo)志位:可用指令來使它30單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件31(5)OV(PSW.2)溢出標(biāo)志位:當(dāng)執(zhí)行算術(shù)指令時(shí),OV用來指示運(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)的方法來檢驗(yàn)數(shù)據(jù)串行傳輸?shù)目煽啃浴?2(5)OV(PSW.2)溢出標(biāo)志位:當(dāng)執(zhí)行算術(shù)指令時(shí),OV用3233控制器控制器的主要任務(wù)是識(shí)別指令,并根據(jù)指令的性質(zhì)控制單片機(jī)各功能部件,從而保證單片機(jī)各部分能自動(dòng)協(xié)調(diào)地工作??刂破髦饕ǔ绦蛴?jì)數(shù)器、指令寄存器、指令譯碼器、定時(shí)及控制電路等。其功能是控制指令的讀入、譯碼和執(zhí)行,從而對(duì)單片機(jī)的各功能部件進(jìn)行定時(shí)和邏輯控制。

程序計(jì)數(shù)器PC是控制器中最基本的寄存器,它是一個(gè)獨(dú)立的16位計(jì)數(shù)器,用戶不能直接使用指令對(duì)PC進(jìn)行讀寫。當(dāng)單片機(jī)復(fù)位時(shí),PC中的內(nèi)容為0000H,即CPU

從程序存儲(chǔ)器0000H單元取指令,開始執(zhí)行程序。33控制器控制器主要包括程序計(jì)數(shù)器、指令寄存33

PC的基本工作過程是:CPU讀取指令時(shí),PC內(nèi)容作為欲讀取指令的地址發(fā)送給程序存儲(chǔ)器,然后程序存儲(chǔ)器按此地址輸出指令字節(jié),同時(shí)PC自動(dòng)加1,這也是為什么PC被稱為程序計(jì)數(shù)器的原因。由于PC實(shí)質(zhì)上是作為程序寄存器的地址指針,所以也稱其為程序指針。PC內(nèi)容的變化軌跡決定了程序的流程。由于PC是用戶不可直接訪問的,當(dāng)順序執(zhí)行程序時(shí)自動(dòng)加1;執(zhí)行轉(zhuǎn)移程序或子程序或中斷子程序調(diào)用時(shí),由運(yùn)行的指令自動(dòng)將其內(nèi)容更改成所要轉(zhuǎn)移的目的地址。34PC的基本工作過程是:CPU讀取指令時(shí)3435

程序計(jì)數(shù)器的計(jì)數(shù)寬度決定了訪問程序存儲(chǔ)器的地址范圍。AT89S51單片機(jī)中的PC位數(shù)為16位,故可對(duì)64KB(=216B)的程序存儲(chǔ)器進(jìn)行尋址。35程序計(jì)數(shù)器的計(jì)數(shù)寬度決定了訪問程序存儲(chǔ)器的352.4AT89S51單片機(jī)存儲(chǔ)器的結(jié)構(gòu)

AT89S51單片機(jī)存儲(chǔ)器結(jié)構(gòu)為哈佛結(jié)構(gòu),即程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間是各自獨(dú)立的。AT89S51單片機(jī)的存儲(chǔ)器空間可劃分為如下4類。1.程序存儲(chǔ)器空間單片機(jī)能夠按照一定的次序工作,是由于程序存儲(chǔ)器中存放了經(jīng)調(diào)試正確的程序。程序存儲(chǔ)器可以分為片內(nèi)和片外兩部分。AT89S51單片機(jī)的片內(nèi)程序存儲(chǔ)器為4KB的Flash存儲(chǔ)器,編程和擦除完全是電氣實(shí)現(xiàn),且速度快。可使用編程器對(duì)其編程,也可在線編程。362.4AT89S51單片機(jī)存儲(chǔ)器的結(jié)構(gòu)3636其中:DPS—數(shù)據(jù)指針寄存器選擇位。10低功耗節(jié)電模式AT89S51復(fù)位時(shí),默認(rèn)選用DPTR0。CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P3.可被位尋址的寄存器有11個(gè),共有位地址88個(gè),其中5個(gè)位未用,其余83個(gè)位的位地址離散地分布于片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)字節(jié)地址為80H~FFH的范圍內(nèi),其最低位的位地址與其字節(jié)地址相同,并且其字節(jié)地址的末位都為0H或8H。由于外部中斷0的中斷服務(wù)程序入口地址為0003H,為使主程序不與外部中斷0的中斷服務(wù)程序發(fā)生沖突,用匯編語言編程時(shí),一般在0000H單元存放一條跳轉(zhuǎn)指令,轉(zhuǎn)向主程序的入口地址。AT89S51單片機(jī)有16位地址總線,可外擴(kuò)的程序存儲(chǔ)器空間最大為64KB,地址范圍為0000H~FFFFH。圖2-14時(shí)鐘信號(hào)的兩種引出方式在串行通信中,常用奇偶檢驗(yàn)的方法來檢驗(yàn)數(shù)據(jù)串行傳輸?shù)目煽啃?。例如?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。單片機(jī)能夠按照一定的次序工作,是由于程序存儲(chǔ)器中存放了經(jīng)調(diào)試正確的程序。(2)XTAL2(18腳):片內(nèi)振蕩器反相放大器的輸出端。由于PC是用戶不可直接訪問的,當(dāng)順序執(zhí)行程序時(shí)自動(dòng)加1;AT89S51單片機(jī)的存儲(chǔ)器空間可劃分為如下4類。各種指令時(shí)序與時(shí)鐘周期相關(guān)。AT89S51單片機(jī)的片內(nèi)數(shù)據(jù)存儲(chǔ)器(RAM)共有128個(gè)單元,字節(jié)地址為00H~7FH。用戶可以通過指令改變特殊功能寄存器PSW中的RS1、RS0這兩位來切換選擇當(dāng)前的工作寄存器區(qū),如表2-2所示。程序計(jì)數(shù)器PC是控制器中最基本的寄存器,它是一個(gè)獨(dú)立的16位計(jì)數(shù)器,用戶不能直接使用指令對(duì)PC進(jìn)行讀寫。單片機(jī)應(yīng)用系統(tǒng)受到干擾可能會(huì)引起程序“跑飛”或“死循環(huán)”,會(huì)使系統(tǒng)失控。其中:DPS—數(shù)據(jù)指針寄存器選擇位。當(dāng)AT89S51單片機(jī)的片內(nèi)的4KB的Flash存儲(chǔ)器不夠用時(shí),用戶可在片外可擴(kuò)展程序存儲(chǔ)器,最多可擴(kuò)展至64KB程序存儲(chǔ)器。2.數(shù)據(jù)存儲(chǔ)器空間數(shù)據(jù)存儲(chǔ)器空間分為片內(nèi)與片外兩部分。AT89S51單片機(jī)內(nèi)部有128B的RAM(增強(qiáng)型的52子系列為256B),用來存放可讀/寫的數(shù)據(jù)。當(dāng)AT89S51單片機(jī)的片內(nèi)RAM不夠用時(shí),可在片外擴(kuò)展最多64KB的RAM的能力,究竟擴(kuò)展多少RAM,由用戶根據(jù)實(shí)際需要來定。37其中:DPS—數(shù)據(jù)指針寄存器選擇位。當(dāng)AT837383.特殊功能寄存器

AT89S51單片機(jī)片內(nèi)共有26個(gè)特殊功能寄存器SFR(SpecialFunctionRegister)。SFR實(shí)際上是各外圍部件的控制寄存器及狀態(tài)寄存器,綜合反映了整個(gè)單片機(jī)基本系統(tǒng)內(nèi)部實(shí)際的工作狀態(tài)及工作方式。4.位地址空間

AT89S51單片機(jī)內(nèi)共有211個(gè)可尋址位,構(gòu)成了位地址空間。它們位于片RAM區(qū)地址20H~2FH(共128位)和特殊功能寄存器區(qū)(片內(nèi)RAM區(qū)字節(jié)地址80H~FFH,共計(jì)83位)。383.特殊功能寄存器38程序存儲(chǔ)器空間程序存儲(chǔ)器是只讀存儲(chǔ)器(ROM),用于存放程序和表格之類的固定常數(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)注意以下問題:(1)整個(gè)程序存儲(chǔ)器空間可分為片內(nèi)和片外兩部分,CPU究竟是訪問片內(nèi)的還是片外的程序存儲(chǔ)器,可由引腳上所接的電平來確定。39程序存儲(chǔ)器空間3939

當(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所示。當(dāng)EA=1,PC值≤0FFFH(為片內(nèi)4KB

40相差多少字節(jié)相差多少字節(jié)4142用匯編語言編程時(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開始執(zhí)行程序。由于外部中斷0的中斷服務(wù)程序入口地址為0003H,為使主程序不與外部中斷0的中斷服務(wù)程序發(fā)生沖突,用匯編語言編程時(shí),一般在0000H單元存放一條跳轉(zhuǎn)指令,轉(zhuǎn)向主程序的入口地址。42用匯編語言編程時(shí),通常在這5個(gè)中斷入口地址處都放1條42數(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)。43數(shù)據(jù)存儲(chǔ)器空間434344圖2-4AT89S51片內(nèi)RAM的結(jié)構(gòu)44圖2-4AT89S51片內(nèi)RAM的結(jié)構(gòu)44

地址為00H~1FH的32個(gè)單元是4組通用工作寄存器區(qū),每個(gè)區(qū)包含8B的工作寄存器,編號(hào)為R7~R0。用戶可以通過指令改變特殊功能寄存器PSW中的RS1、RS0這兩位來切換選擇當(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ǔ)器,最多可外擴(kuò)64KB的RAM。注意,雖然片內(nèi)RAM與片外RAM的低128B的地址是相同的,但是由于是兩個(gè)不同的數(shù)據(jù)存儲(chǔ)區(qū),訪問時(shí)使用不同的指令,所以不會(huì)發(fā)生數(shù)據(jù)沖突。45地址為00H~1FH的32個(gè)單元是4組通用工作寄存器區(qū),45特殊功能寄存器AT89S51單片機(jī)中的特殊功能寄存器的單元地址映射在片內(nèi)RAM區(qū)的80H~FFH區(qū)域中,共有26個(gè),離散地分布在該區(qū)域中,表2-4所示為SFR的名稱及其分布。其中有些SFR還可進(jìn)行位尋址,其位地址已在表2-4中列出。與AT89C51相比,AT89S51新增加了5個(gè)SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST(見表2-4中的序號(hào)為5、6、14、19和20的寄存器)。46特殊功能寄存器4646另一類用于對(duì)片外存儲(chǔ)器或I/O端口的控制,這部分時(shí)序?qū)τ诜治觥⒃O(shè)計(jì)硬件接口電路至關(guān)重要,這也是單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)者普遍關(guān)心和重視的問題。(3)ALE/PROG(AddressLatchEnable/PROGramming,30腳)1:ALE僅在CPU訪問外部存儲(chǔ)器時(shí)有效,不訪問外部存儲(chǔ)器時(shí),ALE引腳不輸出脈沖信號(hào),可減少對(duì)外部電路的干擾。注意,雖然片內(nèi)RAM與片外RAM的低128B的地址是相同的,但是由于是兩個(gè)不同的數(shù)據(jù)存儲(chǔ)區(qū),訪問時(shí)使用不同的指令,所以不會(huì)發(fā)生數(shù)據(jù)沖突。復(fù)位操作還對(duì)其他一些寄存器有影響,這些寄存器復(fù)位時(shí)的狀態(tài)見表2-7。(2)P1口作為輸入口時(shí),分為“讀鎖存器”和“讀引腳”兩種方式。準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載??杀晃粚ぶ返募拇嫫饔?1個(gè),共有位地址88個(gè),其中5個(gè)位未用,其余83個(gè)位的位地址離散地分布于片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)字節(jié)地址為80H~FFH的范圍內(nèi),其最低位的位地址與其字節(jié)地址相同,并且其字節(jié)地址的末位都為0H或8H。系統(tǒng)進(jìn)入空閑模式后有兩種方法可退出,第一種是中斷退出。CPU不理會(huì)片內(nèi)4KB(地址范圍0000H~0FFFH)的Flash存儲(chǔ)器。IDL:空閑模式控制位,若IDL=1,則進(jìn)入空閑運(yùn)行模式。由表2-7可看出,復(fù)位時(shí),SP=07H,而P0~P3引腳均為高電平。單片機(jī)能夠按照一定的次序工作,是由于程序存儲(chǔ)器中存放了經(jīng)調(diào)試正確的程序。特殊功能寄存器實(shí)際上是片內(nèi)各外圍部件的控制寄存器和狀態(tài)寄存器,這些特殊功能寄存器映射在片內(nèi)RAM區(qū)的80H~FFH的地址區(qū)間內(nèi)。當(dāng)AT89S51擴(kuò)展外部存儲(chǔ)器及I/O口時(shí),P2口作為高8位地址總線用,輸出高8位地址。當(dāng)D鎖存器為0時(shí),下方場(chǎng)效應(yīng)管導(dǎo)通,P0口輸出為低電平。P=1,表示A中“1”的個(gè)數(shù)為奇數(shù)。1.算術(shù)邏輯運(yùn)算單元ALU單片機(jī)應(yīng)用系統(tǒng)受到干擾可能會(huì)引起程序“跑飛”或“死循環(huán)”,會(huì)使系統(tǒng)失控。ALE的第一功能為CPU訪問外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供低8位地址鎖存信號(hào),將單片機(jī)P0口發(fā)出的47另一類用于對(duì)片外存儲(chǔ)器或I/O端口的控制,這部分時(shí)序?qū)τ诜治?7單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件48從表2-4中可以發(fā)現(xiàn),凡是可以進(jìn)行位尋址的SFR,其字節(jié)地址的末位只能是0H或8H。另外,若CPU讀/寫沒有定義的單元,將得到一個(gè)不確定的隨機(jī)數(shù)。SFR塊中的累加器A和程序狀態(tài)字寄存器PSW已在前面作過介紹。下面簡(jiǎn)單介紹SFR塊中的某些SFR,余下的SFR與片內(nèi)外圍部件密切相關(guān),將在后續(xù)介紹片內(nèi)外圍部件時(shí)進(jìn)行說明。從表2-4中可以發(fā)現(xiàn),凡是可以進(jìn)行位尋址的SFR,其49501.堆棧指針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單元開始,考慮到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ù)。501.堆棧指針SP50

(1)保護(hù)斷點(diǎn)。因?yàn)闊o論是子程序調(diào)用操作還是中斷服務(wù)子程序調(diào)用操作,主程序都會(huì)被“打斷”,但最終都要返回到主程序繼續(xù)執(zhí)行程序。因此,應(yīng)預(yù)先把主程序的斷點(diǎn)在堆棧中保護(hù)起來,為程序的正確返回做準(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)容保存起來,送入堆棧,這就是所謂的“現(xiàn)場(chǎng)保護(hù)”。51(1)保護(hù)斷點(diǎn)。因?yàn)闊o論是子程序調(diào)用操作還是中斷服51堆棧的操作有兩種:一種是數(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。52堆棧的操作有兩種:一種是數(shù)據(jù)壓入(PUSH52532.寄存器BAT89S51單片機(jī)在進(jìn)行乘法和除法操作時(shí)要使用寄存器B。在不執(zhí)行乘、除法操作的情況下,可把它當(dāng)作一個(gè)普通寄存器來使用。乘法運(yùn)算時(shí),兩個(gè)乘數(shù)分別在A、B中,執(zhí)行乘法指令后,乘積存放在BA寄存器對(duì)中。B中放乘積的高8位,A中放乘積的低8位。

除法運(yùn)算時(shí),被除數(shù)取自A,除數(shù)取自B,商存放在A中,余數(shù)存放于B中。532.寄存器B533.AUXR寄存器AUXR是輔助寄存器,格式見圖2-5。54圖2-5AUXR寄存器的格式3.AUXR寄存器54圖2-5AUXR寄存器的格式54

DISALE:ALE的禁止/允許位。0:ALE有效,發(fā)出ALE脈沖;1:ALE僅在CPU訪問外部存儲(chǔ)器時(shí)有效,不訪問外部存儲(chǔ)器時(shí),ALE引腳不輸出脈沖信號(hào),可減少對(duì)外部電路的干擾。

DISRTO:禁止/允許看門狗定時(shí)器WDT溢出時(shí)的復(fù)位輸出。0:WDT溢出時(shí),允許向RST引腳輸出一個(gè)高電平脈沖,使單片機(jī)復(fù)位;1:禁止WDT溢出時(shí)的復(fù)位輸出。55DISALE:ALE的禁止/允許位。555556

WDIDLE:WDT在空閑模式下的禁止/允許位。0:允許WDT在空閑模式下計(jì)數(shù);1:禁止WDT在空閑模式下計(jì)數(shù)。56WDIDLE:WDT在空閑模式下的禁止/允許位。56本章介紹AT89S51單片機(jī)的片內(nèi)硬件結(jié)構(gòu)。AT89S51單片機(jī)共有4個(gè)雙向的8位并行I/O端口,即P0~P3,表2-4中的特殊功能寄存器P0、P1、P2和P3就是這4個(gè)端口的輸出鎖存器。x引腳通過輸入緩沖器BUF2進(jìn)入內(nèi)部總線。由于沒有了時(shí)鐘信號(hào),內(nèi)部的所有部件均停止工作,但片內(nèi)的RAM和SFR的原來內(nèi)容都被保留,有關(guān)端口的輸出狀態(tài)值都保存在對(duì)應(yīng)的特殊功能寄存器中。指令周期是執(zhí)行一條指令所需的時(shí)間。用匯編語言編程時(shí),通常在這5個(gè)中斷入口地址處都放1條跳轉(zhuǎn)指令跳向?qū)?yīng)的中斷服務(wù)子程序,而不是直接存放中斷服務(wù)子程序。第二種是硬件復(fù)位退出。7/SCK也可用于對(duì)片內(nèi)Flash存儲(chǔ)器的串行編程和校驗(yàn),它們分別是串行數(shù)據(jù)輸入、串行數(shù)據(jù)輸出和移位脈沖引腳。另外,準(zhǔn)雙向口作通用I/O的輸入口使用時(shí),一定要向該口先寫入“1”。(1)當(dāng)P0口用作地址/數(shù)據(jù)總線口使用時(shí),是一個(gè)真正的雙向口,用作與外部擴(kuò)展的存儲(chǔ)器或I/O連接,輸出低8位地址和輸出/輸入8位數(shù)據(jù)。當(dāng)1字節(jié)數(shù)據(jù)壓入堆棧時(shí),SP先自動(dòng)加1,再把1字節(jié)數(shù)據(jù)壓入堆棧;CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P2.P3口還可提供第二功能,其第二功能定義如表2-1所示,讀者應(yīng)熟記。由于PC實(shí)質(zhì)上是作為程序寄存器的地址指針,所以也稱其為程序指針。準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。(3)ALE/PROG(AddressLatchEnable/PROGramming,30腳)單片機(jī)應(yīng)用系統(tǒng)受到干擾可能會(huì)引起程序“跑飛”或“死循環(huán)”,會(huì)使系統(tǒng)失控。在掉電模式下,Vcc可由后備電源供電。x引腳信息通過輸入BUF3和BUF2進(jìn)入內(nèi)部總線,完成“讀引腳”操作。P1口為通用I/O端口,字節(jié)地址為90H,位地址為90H~97H。4.?dāng)?shù)據(jù)指針DPTR0和DPTR1DPTR0和DPTR1為雙數(shù)據(jù)指針寄存器。是為了便于訪問數(shù)據(jù)存儲(chǔ)器而設(shè)置的。DPTR0為8051單片機(jī)原有的數(shù)據(jù)指針,DPTR1為新增加的數(shù)據(jù)指針。

AUXR1的DPS位(見圖2-6)用于選擇這兩個(gè)數(shù)據(jù)指針。當(dāng)DPS=0時(shí),選用DPTR0;當(dāng)DPS=1時(shí),選用DPTR1。AT89S51復(fù)位時(shí),默認(rèn)選用DPTR0。57本章介紹AT89S51單片機(jī)的片內(nèi)硬件結(jié)構(gòu)。4.?dāng)?shù)據(jù)指針DP5758

DPTR0(或DPTR1)是一個(gè)16位的SFR,其高位字節(jié)寄存器用DP0H(或DP1H)表示,低位字節(jié)寄存器用DP0L(或DP1L)表示。DPTR0(或DPTR1)既可以作為一個(gè)16位寄存器來用,也可以作為兩個(gè)獨(dú)立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)來用。58DPTR0(或DPTR1)是一個(gè)16位的58595.AUXR1寄存器AUXR1是輔助寄存器,其格式如圖2-6所示。其中:DPS—數(shù)據(jù)指針寄存器選擇位。

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

1:選擇數(shù)據(jù)指針寄存器DPTR1。595.AUXR1寄存器其中:DPS—數(shù)據(jù)指針寄存器選59606.看門狗定時(shí)器WDT看門狗定時(shí)器WDT包含1個(gè)14位計(jì)數(shù)器和看門狗復(fù)位寄存器(WDTRST)。當(dāng)CPU由于干擾,程序陷入死循環(huán)或跑飛狀態(tài)時(shí),看門狗定時(shí)器WDT提供了一種使程序恢復(fù)正常運(yùn)行的有效手段。606.看門狗定時(shí)器WDT6061位地址空間AT89S51在RAM和SFR中共有211個(gè)尋址位的位地址,位地址范圍為00H~FFH,其中00H~7FH這128位處于片內(nèi)RAM字節(jié)地址20H~2FH單元中,如表2-5所示。61位地址空間61單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件62其余的83個(gè)可尋址位分布在特殊功能寄存器SFR中,如表2-6所示。可被位尋址的寄存器有11個(gè),共有位地址88個(gè),其中5個(gè)位未用,其余83個(gè)位的位地址離散地分布于片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)字節(jié)地址為80H~FFH的范圍內(nèi),其最低位的位地址與其字節(jié)地址相同,并且其字節(jié)地址的末位都為0H或8H。63其余的83個(gè)可尋址位分布在特殊功能寄存器S63單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件64圖2-7AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)圖2-7AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)652.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)??赑0口是一雙功能的8位并行端口,字節(jié)地址為80H,位地址為80H~87H。P0口的位電路結(jié)構(gòu)如圖2-8所示。

662.5AT89S51單片機(jī)的并行I/O端口66666767671.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)接開關(guān)MUX打向上面,接通反相器的輸出,同時(shí)使“與門”處于開啟狀態(tài)。當(dāng)輸出的“地址/數(shù)據(jù)”信息為1時(shí),“與門”輸出為1,上方的場(chǎng)效應(yīng)管導(dǎo)通,下方的場(chǎng)效應(yīng)管截止,P0.x引腳輸出為1;1.P0口的工作原理6869當(dāng)輸出的“地址/數(shù)據(jù)”信息為0時(shí),上方的場(chǎng)效應(yīng)管截止,下方的場(chǎng)效應(yīng)管導(dǎo)通,P0.x引腳輸出為0??梢奝0.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ù)用方式訪問外部存儲(chǔ)器時(shí),CPU自動(dòng)向P0口寫入FFH,使下方的場(chǎng)效應(yīng)管截止,由于控制信號(hào)為0,上方的場(chǎng)效應(yīng)管也截止,從而保證數(shù)據(jù)信息的高阻抗輸入,從外部存儲(chǔ)器或I/O輸入的數(shù)據(jù)信息直接由P0.x引腳通過輸入緩沖器BUF2進(jìn)入內(nèi)部總線。69當(dāng)輸出的“地址/數(shù)據(jù)”信息為0時(shí),上69由以上分析,P0口具有高電平、低電平和高阻抗輸入3種狀態(tài)的端口,因此,P0口作為地址/數(shù)據(jù)總線使用時(shí),是一真正的雙向端口,簡(jiǎn)稱雙向口。(2)P0口用作通用I/O口使用P0口不作地址/數(shù)據(jù)總線使用時(shí),也可作為通用的I/O口使用。此時(shí),對(duì)應(yīng)的“控制”信號(hào)為0,MUX打向下面,接通鎖存器的端,“與門”輸出為0,上方的場(chǎng)效應(yīng)管截止,形成的P0口輸出電路為漏極開路輸出。由以上分析,P0口具有高電平、低電平和高阻抗70P0口用作通用I/O輸出口時(shí),來自CPU的“寫”脈沖加在D鎖存器的CP端,內(nèi)部總線上的數(shù)據(jù)寫入D鎖存器,并由引腳P0.x輸出。當(dāng)D鎖存器為1時(shí),端為0,下方場(chǎng)效應(yīng)管截止,輸出為漏極開路,此時(shí),必須外接上拉電阻才能有高電平輸出;當(dāng)D鎖存器為0時(shí),下方場(chǎng)效應(yīng)管導(dǎo)通,P0口輸出為低電平。P0口用作通用I/O輸出口時(shí),來自CPU的“7172

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)部總線。72P0口作為通用I/O輸入口時(shí),有兩種讀入方722.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ī)片外沒有外擴(kuò)RAM和I/O接口芯片,此時(shí)P0口才能作為通用I/O口使用。2.P0口總結(jié)73口P1口為通用I/O端口,字節(jié)地址為90H,位地址為90H~97H。位電路結(jié)構(gòu)如圖2-9所示。圖2-9P1口某一位的位電路結(jié)構(gòu)口圖2-9P1口某一位的位電路結(jié)構(gòu)741.P1口的工作原理P1口只能作為通用I/O口使用。(1)P1口作為輸出口時(shí),若CPU輸出1,Q=1,Q’=0,場(chǎng)效應(yīng)管截止,P1口引腳的輸出為1;若CPU輸出0,Q=0,Q’=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í),先向鎖存器寫1,使場(chǎng)效應(yīng)管截止,P1.x引腳上的電平經(jīng)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。1.P1口的工作原理752.P1口總結(jié)P1口由于有內(nèi)部上拉電阻,沒有高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。作為輸出口時(shí),不需要在片外接上拉電阻。P1口“讀引腳”輸入時(shí),必須先向鎖存器P1寫入1??赑2口是一個(gè)雙功能口,字節(jié)地址為A0H,位地址為A0H~A7H。P2口的位電路結(jié)構(gòu)如圖2-10所示。2.P1口總結(jié)76(9)1個(gè)看門狗定時(shí)器(WDT);當(dāng)然,本最小應(yīng)用系統(tǒng)只能作為小型的數(shù)字量的測(cè)控單元。而有些復(fù)雜的指令,如轉(zhuǎn)移、乘、除指令則需兩個(gè)或多個(gè)機(jī)器周期。CPU發(fā)出的時(shí)序信號(hào)有兩類:一類用于對(duì)片內(nèi)各個(gè)功能部件的控制,用戶無需了解;用匯編語言編程時(shí),通常在這5個(gè)中斷入口地址處都放1條跳轉(zhuǎn)指令跳向?qū)?yīng)的中斷服務(wù)子程序,而不是直接存放中斷服務(wù)子程序。外部時(shí)鐘方式使用現(xiàn)成的外部振蕩器產(chǎn)生時(shí)鐘脈沖信號(hào),常用于多片AT89S51單片機(jī)同時(shí)工作,以便于多片AT89S51單片機(jī)之間的同步。在掉電模式下,Vcc可由后備電源供電。P1口“讀引腳”輸入時(shí),必須先向鎖存器P1寫入1。“讀鎖存器”時(shí),Q端信號(hào)經(jīng)輸入緩沖器BUF1進(jìn)入內(nèi)部總線;DPTR0(或DPTR1)既可以作為一個(gè)16位寄存器來用,也可以作為兩個(gè)獨(dú)立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)來用。因此執(zhí)行一條指令的時(shí)間也不同。當(dāng)P0口作為數(shù)據(jù)線輸入時(shí),僅從外部存儲(chǔ)器(或外部I/O)讀入信息,對(duì)應(yīng)的“控制”信號(hào)為0,MUX接通鎖存器的端。1字節(jié)數(shù)據(jù)彈出堆棧后,SP自動(dòng)減1。圖2-5AUXR寄存器的格式P1口“讀引腳”輸入時(shí),必須先向鎖存器P1寫入1。8AT89S51單片機(jī)的最小應(yīng)用系統(tǒng)CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P2.PSW的不同位包含了程序運(yùn)行狀態(tài)的不同信息,其中4位保存當(dāng)前指令執(zhí)行后的狀態(tài),以供程序查詢和判斷。當(dāng)?shù)诙敵鰹?時(shí),場(chǎng)效應(yīng)管截止,P3.準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。圖2-10P2口某一位的位電路結(jié)構(gòu)(9)1個(gè)看門狗定時(shí)器(WDT);圖2-10P2口某771.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。1.P2口的工作原理7879(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í),先向鎖存器寫1,使場(chǎng)效應(yīng)管截止,P2.x引腳上的電平經(jīng)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。79(2)P2口用作通用I/O口。792.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.P2口總結(jié)80口由于AT89S51的引腳數(shù)目有限,因此在P3口電路中增加了引腳的第二功能(第二功能定義見表2-1)。P3口的每一位都可以分別定義為第二輸入功能或第二輸出功能。P3口的字節(jié)地址為B0H,位地址為B0H~B7H。P3口的位電路結(jié)構(gòu)見圖2-11???1圖2-11P3口某一位的位電路結(jié)構(gòu)圖2-11P3口某一位的位電路結(jié)構(gòu)821.P3口的工作原理(1)P3口用作第二輸入/輸出功能。當(dāng)選擇第二輸出功能時(shí),該位的鎖存器需要置“1”,使“與非門”為開啟狀態(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。當(dāng)選擇第二輸入功能時(shí),該位的鎖存器和第二輸出功能端均應(yīng)置1,保證場(chǎng)效應(yīng)管截止,P3.x引腳的信息由輸入緩沖器BUF3的輸出獲得。1.P3口的工作原理8384(2)P3口用作第一功能—通用I/O口。當(dāng)P3口用作通用I/O的輸出時(shí),“第二輸出功能”端應(yīng)保持高電平,“與非門”為開啟狀態(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。84(2)P3口用作第一功能—通用I/O口。84當(dāng)P3口用作通用I/O的輸入時(shí),P3.x位的輸出鎖存器和“第二輸出功能”端均應(yīng)置1,場(chǎng)效應(yīng)管截止,P3.x引腳信息通過輸入BUF3和BUF2進(jìn)入內(nèi)部總線,完成“讀引腳”操作。當(dāng)P3口用作通用I/O的輸入時(shí),也可執(zhí)行“讀鎖存器”操作,此時(shí)Q端信息經(jīng)過緩沖器BUF1進(jìn)入內(nèi)部總線。當(dāng)P3口用作通用I/O的輸入時(shí),P3.x位85862.P3口總結(jié)

P3口內(nèi)部有上拉電阻,不存在高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。由于P3口每一引腳有第一功能與第二功能,究竟是使用哪個(gè)功能,完全是由單片機(jī)執(zhí)行的指令控制來自動(dòng)切換的,用戶不需要進(jìn)行任何設(shè)置。引腳輸入部分有兩個(gè)緩沖器,第二功能的輸入信號(hào)取自緩沖器BUF3的輸出端,第一功能的輸入信號(hào)取自緩沖器BUF2的輸出端。862.P3口總結(jié)862.6時(shí)鐘電路與時(shí)序

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

872.6時(shí)鐘電路與時(shí)序8787時(shí)鐘電路設(shè)計(jì)AT89S51單片機(jī)各外圍部件運(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í)鐘方式的電路。88時(shí)鐘電路設(shè)計(jì)8888圖2-12AT89S51內(nèi)部時(shí)鐘方式的電路圖2-12AT89S51內(nèi)部時(shí)鐘方式的電路89

電路中的電容

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所示。90電路中的電容

C1和

C2

的典型值通常選擇9091圖2-13外部時(shí)鐘方式電路91圖2-13外部時(shí)鐘方式電路913.時(shí)鐘信號(hào)的輸出當(dāng)使用片內(nèi)振蕩器時(shí),XTAL1、XTAL2引腳還能為應(yīng)用系統(tǒng)中的其他芯片提供時(shí)鐘,但需增加驅(qū)動(dòng)能力。其引出的方式有兩種,如圖2-14所示。923.時(shí)鐘信號(hào)的輸出9292圖2-14時(shí)鐘信號(hào)的兩種引出方式圖2-14時(shí)鐘信號(hào)的兩種引出方式93時(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ù)等。1個(gè)機(jī)器周期=12個(gè)時(shí)鐘周期94時(shí)鐘周期、機(jī)器周期、指令周期與指令時(shí)序94941個(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,見圖2-15。95圖2-15AT89S51的機(jī)器周期1個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期,分6個(gè)狀態(tài)953.指令周期指令周期是執(zhí)行一條指令所需的時(shí)間。AT89S51單片機(jī)中指令按字節(jié)來分,可分為單字節(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ī)器周期。963.指令周期96962.7復(fù)位操作和復(fù)位電路復(fù)位是單片機(jī)的初始化操作,只需給AT89S51單片機(jī)的復(fù)位引腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可使AT89S51單片機(jī)復(fù)位。復(fù)位操作

復(fù)位時(shí),PC初始化為0000H,程序從0000H單元開始執(zhí)行。

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

復(fù)位操作還對(duì)其他一些寄存器有影響,這些寄存器復(fù)位時(shí)的狀態(tài)見表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ì)有電流通過,就會(huì)吸合繼電器開關(guān),使開關(guān)接通,可能會(huì)引起意想不到的后果。98復(fù)位操作還對(duì)其他一些寄存器有影響,這些寄存器98單片機(jī)的片內(nèi)硬件結(jié)構(gòu)優(yōu)質(zhì)推薦課件99復(fù)位電路設(shè)計(jì)AT89S51

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

2-16。

上電復(fù)位的工作原理是+5V(VCC)電源通過電容C與電阻Rk回路,給電容C充電加給RST引腳上一個(gè)短暫的高電平信號(hào),此信號(hào)隨著VCC對(duì)電容C的充電過程而逐漸回落,即RST引腳上的高電平持續(xù)時(shí)間取決于電容C充電時(shí)間。充電時(shí)間越長(zhǎng),復(fù)位時(shí)間越長(zhǎng),增大電容或電阻都可以增加復(fù)位時(shí)間。除了上電復(fù)位外,有時(shí)還需要人工按鍵復(fù)位。按下按鍵后,通過兩個(gè)電阻Rs和Rk的分壓,在RST端產(chǎn)生高電平,按鍵按下的時(shí)間決定了復(fù)位的時(shí)間。100復(fù)位電路設(shè)計(jì)100100101101101圖2-16按鍵復(fù)位電路圖2-16按鍵復(fù)位電路102當(dāng)時(shí)鐘頻率選用6MHz時(shí),CR的典型取值為10μ

F,兩個(gè)電阻R1和R2的典型值分別為220?和2k?

。一般來說,單片機(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ù)位。103當(dāng)時(shí)鐘頻率選用6MHz時(shí),CR的典型取值為10μF1032.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-17所示。當(dāng)然,本最小應(yīng)用系統(tǒng)只能作為小型的數(shù)字量的測(cè)控單元。2.8AT89S51單片機(jī)的最小應(yīng)用系統(tǒng)104圖2-17AT89S51單片機(jī)的最小應(yīng)用系統(tǒng)圖2-17AT89S51單片機(jī)的最小應(yīng)用系統(tǒng)1052.9看門狗定時(shí)器(WDT)的使用

單片機(jī)應(yīng)用系統(tǒng)受到干擾可能會(huì)引起程序“跑飛”或“死循環(huán)”,會(huì)使系統(tǒng)失控。如果操作人員在場(chǎng),可按人工復(fù)位按鈕,強(qiáng)制系統(tǒng)復(fù)位。但操作人員不可能一直監(jiān)視著系統(tǒng),即使監(jiān)視著系統(tǒng),也往往是在引起不良后果之后才進(jìn)行人工復(fù)位。能不能不要人來監(jiān)視,使系統(tǒng)擺脫失控狀態(tài),重新從0000H地址處執(zhí)行程序呢?這時(shí)可采用“看門狗”技術(shù)。“看門狗”技術(shù)就是使用一個(gè)定時(shí)器來不斷計(jì)數(shù),監(jiān)視程序的運(yùn)行。當(dāng)看門狗定時(shí)器啟動(dòng)運(yùn)行后,為防止看門狗定時(shí)器的不必要溢出而引起單片機(jī)的非正常的復(fù)位,應(yīng)定期地把看門狗定時(shí)器清0,以保證看門狗定時(shí)器不溢出。2.9看門狗定時(shí)器(WDT)的使用106AT89S51單片機(jī)片內(nèi)的“看門狗”部件,包含1個(gè)14位看門狗定時(shí)器和看門狗復(fù)位寄存器(表2-4中的特殊功能寄存器WDTRST,地址A6H)。開啟看門狗定時(shí)器后,14位定時(shí)器會(huì)自動(dòng)對(duì)系統(tǒng)時(shí)鐘12分頻后的信號(hào)計(jì)數(shù),即每16384(214)個(gè)機(jī)器周期溢出一次,并產(chǎn)生一個(gè)高電平復(fù)位信號(hào),使單片機(jī)復(fù)位。采用12MHz的系統(tǒng)時(shí)鐘時(shí),則每16384μs產(chǎn)生一個(gè)復(fù)位信號(hào)。AT89S51單片機(jī)片內(nèi)的“看門狗”部件,包107當(dāng)由于干擾,使單片機(jī)程序“跑飛”或陷入“死循環(huán)”時(shí),單片機(jī)也就不能正常運(yùn)行程序來定時(shí)地把看門狗定時(shí)器清0,看門狗定時(shí)器計(jì)滿溢出時(shí),將在AT89S51的RST引腳上輸出一個(gè)正脈沖(寬度為98個(gè)時(shí)鐘周期),使單片機(jī)復(fù)位,在系統(tǒng)的復(fù)位入口0000H處重新開始執(zhí)行主程序,從而使程序擺脫“跑飛”或“死循環(huán)”狀態(tài),讓單片機(jī)歸復(fù)于正常的工作狀態(tài)??撮T狗的啟動(dòng)和清0的方法是一樣的。實(shí)際應(yīng)用中,用戶只要向寄存器WDTRST(地址為A6H)先寫入1EH,接著寫入E1H,看門狗定時(shí)器便啟動(dòng)計(jì)數(shù)。為防止看門狗定時(shí)器啟動(dòng)后產(chǎn)生不必要的溢出,在執(zhí)行程序的過程中,應(yīng)在16384μs(時(shí)鐘為12MHz)內(nèi)不斷地復(fù)位清“0”看門狗,即向WDTRST寄存器寫入數(shù)據(jù)1EH和E1H。當(dāng)由于干擾,使單片機(jī)程序“跑飛”或陷入“死循環(huán)”時(shí),1082.10低功耗節(jié)電模式

AT89S51單片機(jī)有兩種低功耗節(jié)電工作模式:空閑模式(idlemode)和掉電模式(powerdownmode),其目的是盡可能低的降低系統(tǒng)的功耗。在掉電模式下,Vcc可由后備電源供電。圖2-18所示為兩種節(jié)電模式的內(nèi)部控制電路。2.10低功耗節(jié)電模式109110圖2-18低功耗節(jié)電模式的控制電路110圖2-18低功耗節(jié)電模式的控制電路110AT89S51單片機(jī)的兩種節(jié)電模式可通過指令對(duì)特殊功能寄存器PCON的位IDL和位PD的設(shè)置來實(shí)現(xiàn)。PCON的格式如圖2-19所示,字節(jié)地址為87H。圖2-19特殊功能寄存器PCON的格式AT89S51單片機(jī)的兩種節(jié)電模式可通過指令對(duì)111PCON寄存器各位的定義如下:SMOD:串行通信的波特率選擇位(串行口一章介紹)—:保留位,未定義。GF1、GF0:通用標(biāo)志位,供用戶使用,應(yīng)充分利用。PD:掉電模式控制位,若PD=1,則進(jìn)入掉電模式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論