《單片機原理及應用》第二章 AT89系列單片機的硬件_第1頁
《單片機原理及應用》第二章 AT89系列單片機的硬件_第2頁
《單片機原理及應用》第二章 AT89系列單片機的硬件_第3頁
《單片機原理及應用》第二章 AT89系列單片機的硬件_第4頁
《單片機原理及應用》第二章 AT89系列單片機的硬件_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章AT89系列單片機的硬件結(jié)構(gòu)2.1AT89S51單片機的結(jié)構(gòu) 2.2AT89S51的引腳功能 2.2.1電源及時鐘引腳 2.2.2控制引腳 2.2.3I/O口引腳 2.3AT89S51的中央處理器(CPU) 2.3.1運算部件 2.3.2程序狀態(tài)字寄存器 2.3.3控制部件 思考與練習第二章AT89系列單片機的硬件結(jié)構(gòu)2.4存貯器結(jié)構(gòu) 292.4.1程序存貯器 292.4.2內(nèi)部數(shù)據(jù)存貯器 312.4.3特殊功能寄存器 342.4.4地址空間 402.4.5外部數(shù)據(jù)存貯器 432.5I/O端口 432.5.1I/O的內(nèi)部結(jié)構(gòu) 442.5.2I/O口的負載能力和接口要求 48第二章AT89系列單片機的硬件結(jié)構(gòu)2.6復位電路和時鐘電路 2.6.1復位電路及工作方式 2.6.2時鐘電路及時序 2.7在線編程ISP 2.7.1在線編程接口電路 2.7.2編程算法及時序 2.7.3串行編程命令 思考與練習 2.1AT89S51單片機的結(jié)構(gòu)把作為控制應用所必需的基本功能部件都集中在一個尺寸有限的集成電路芯片上。2.1AT89S51單片機的結(jié)構(gòu)

有如下部件和特性:(1)8位微處理器(CPU);(2)程序存儲器(4KFlashROM),可進行1000次重復擦寫和三級加密;(3)128B數(shù)據(jù)存儲器(RAM);(4)26個特殊功能寄存器(SFR);(5)4個8位可編程并行I/O口(P0口、P1口、P2口、P3口);(6)1組全雙工可編程串行通道;(7)2個可編程的16位定時器/計數(shù)器;(8)1個看門狗定時器;(9)5個中斷源;(10)低功耗模式有空閑和掉電模式,且具有斷電模式下的中斷恢復模式;(11)靈活的在系統(tǒng)程序設(shè)計(ISP)2.1AT89S51單片機的結(jié)構(gòu)

AT89S51單片機的內(nèi)部結(jié)構(gòu)框圖如圖2-2所示。2.2AT89S51的引腳功能

AT89S51單片機實際有效的引腳為40個,主要有三種封裝形式,其引腳圖可參見圖2-3所示:(a)為PDIP封裝形式,這是普通40腳塑封雙列直插形式;(b)PLCC封裝形式,這種形式是具有44個“J”形腳(其中有4個空腳)的方形芯片,使用時需要插入與其相配的方型插座中;(c)為TQFP封裝形式,這種形式也是具有44個“J”形腳(其中有3個空腳,2個接地端),但其體積更小、更薄,是一種不同封裝形式的引腳,排列不一致,使用時一定要注意。為了盡可能縮小體積,減少引腳數(shù),AT89S51/S52單片機的不少引腳還具有第二功能(也稱為“復用功能”)。2.2AT89S51的引腳功能(a)PDIP40封裝的AT89S512.2AT89S51的引腳功能(b)PLCC44封裝的AT89S51

(c)TQFP44封裝的AT89S512.2.1電源及時鐘引腳VCC:電源端。GND:接地端。XTAL1:接外部晶振的一端。在單片機內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器的輸入端。當采用外部時鐘時,外部時鐘振蕩信號直接送入此引腳作為驅(qū)動端,即把此信號直接接到內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:接外部晶振的另一個端。在單片機內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器的輸出端。當采用外部時鐘信號時,此引腳應懸浮不連接。2.2.1電源及時鐘引腳圖2-4內(nèi)部振蕩器的接法圖2-5外部振蕩器的接法2.2.2控制引腳RST:復位輸入端。在振蕩器運行時,在此腳上出現(xiàn)兩個機器周期以上的高電平將使單片機復位??撮T狗定時器(Watchdog)溢出后,該引腳會保持98個振蕩周期的高電平,也會使單片機復位。在AUXR寄存器中的DISRTO位可以用于屏蔽這種功能。DISRTO位的默認狀態(tài),是復位高電平輸出功能使能。2.2.2控制引腳

ALE/:地址鎖存允許/編程脈沖。在訪問外部存儲器時,這個輸出信號用于鎖存低字節(jié)地址。在對Flash內(nèi)存編程時,這條引腳用于輸入編程脈沖PROG。一般情況下,ALE是振蕩器頻率的6分頻信號,可用于外部定時或時鐘。但是,在對外部數(shù)據(jù)存儲器每次存取中,會跳過一個ALE脈沖。在需要時,可以把AUXR寄存器的0位置為“1”,從而屏蔽ALE的工作;而只有在MOVX或MOVC指令執(zhí)行時ALE才被啟動。在單片機處于外部執(zhí)行方式時,對ALE屏蔽位置“1”并不起作用。2.2.2控制引腳

:外部程序存儲器的選通信號。它用于讀外部程序存儲器的選通信號,低電平有效。當AT89系列單片機在執(zhí)行來自外部程序存儲器的指令時,每一個機器周期PSEN被啟動2次。在對外部數(shù)據(jù)存儲器的每次存取中,不出現(xiàn)。/VPP:外部程序存儲器訪問允許端/編程電源輸入端。接地,單片機從地址為0000H~FFFFH的外部程序內(nèi)存中讀取代碼。接到VCC,單片機先從內(nèi)部程序內(nèi)存中讀取代碼,然后自動轉(zhuǎn)向外部。在對Flash內(nèi)存編程時,這條引腳接收12V編程電壓VPP。2.2.3I/O口引腳

P0~P3是AT89S51單片機與外界聯(lián)系的4個8位雙向并行I/O端口,引腳分配如下:P0.0~P0.7:P0口的8位漏極開路的雙向I/O口。P0在當做I/O用時可以推動8個LS的TTL負載。如果當引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0口就以多工方式提供地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)。設(shè)計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0~A7,再配合P2口所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。2.2.3I/O口引腳

P2.0~P2.7:P2口的8位內(nèi)部接有上拉電阻的準雙向I/O口。每一個引腳可以驅(qū)動4個LS的TTL負載,若將P2口的輸出設(shè)為高電平時,此端口便能當成輸入端口來使用。P2除了當做一般I/O端口使用外,若是在AT89S51擴充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)A8~A15,這個時候P2便不能當做I/O來使用了。2.2.3I/O口引腳

P1.0~P1.7:P1口的8位內(nèi)部接有上拉電阻的準雙向I/O口。其輸出緩沖器可以驅(qū)動4個LSTTL負載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。負載能力:代表器件的輸出電流的大小。對于標準TTL器件,輸出負載能力的高電平為0.4mA,而作為下級負載的TTL器件的輸入高電平電流為0.04mA(40uA),這樣一個標準TTL器件最大可以驅(qū)動8個以上標準TTL負載。P3.0~P3.7:P3口的8位內(nèi)部接有上拉電阻的準雙向I/O口。其輸出緩沖器可以驅(qū)動4個TTL負載,同時還具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ?。TTL負載:

LSTTL:其中“L”表示低功耗,“S”表示肖特基技術(shù)全稱Transistor-TransistorLogic,即BJT-BJT邏輯門電路,是數(shù)字電子技術(shù)中常用的一種邏輯門電路,應用較早,技術(shù)已比較成熟。TTL主要有BJT(Bipolar(雙極的)JunctionTransistor(晶體管)

即雙極結(jié)型晶體管,晶體三極管)和電阻構(gòu)成,具有速度快的特點。最早的TTL門電路是74系列,后來出現(xiàn)了74H系列,74L系列,74LS,74AS,74ALS等系列。但是由于TTL功耗大等缺點,正逐漸被CMOS電路取代。2.3AT89S51的中央處理器(CPU)中央處理器CPU是單片機的核心,主要由運算部件、控制部件和專用寄存器組成。CPU功能可概況為以下三條:1、產(chǎn)生控制信號2、控制數(shù)據(jù)傳送3、對輸入數(shù)據(jù)進行算術(shù)邏輯運算及位操作2.3.1運算部件運算部件是用來對數(shù)據(jù)進行算術(shù)運算和邏輯操作的執(zhí)行部件,包括算術(shù)邏輯單元ALU(ArithmeticLogicUnit)、累加器ACC(Accumulator)、暫存器(TEMP)、程序狀態(tài)字寄存器PSW(ProgramStatusWord)、通用寄存器和BCD碼運算調(diào)整電路等。為了提高數(shù)據(jù)處理和位操作能力,片內(nèi)增加了一個通用寄存器區(qū)和一些專用寄存器,而且還包含一個布爾處理器,可以執(zhí)行置位、清零、求補、取反、測試、邏輯與、邏輯或等操作,為單片機的應用提供了極大的便利。2.3.1運算部件

(1)算術(shù)邏輯單元ALUALU是用于對數(shù)據(jù)進行算術(shù)運算和邏輯操作的執(zhí)行部件,由加法器和其他邏輯電路(移位電路和判斷電路等)組成。在控制信號的作用下,它能完成“加、減、乘、除、比較”等算術(shù)運算和“與、或、異或”等邏輯運算以及循環(huán)移位操作、位操作等功能。此外,通過對運算結(jié)果的判斷,影響程序狀態(tài)標志寄存器的有關(guān)標志位。

(2)暫存器暫存器用于暫存進入運算器之前的數(shù)據(jù),它不能通過編程訪問。設(shè)置暫存器的目的是暫時存放某些中間過程所產(chǎn)生的信息,以避免破壞通用寄存器的內(nèi)容。2.3.1運算部件

(3)布爾(位)處理器除對字節(jié)(Byte)進行操作外,AT89S51單片機借用PSW中的C可以直接對位(Bit)進行操作,在進行位操作時,C就類似進行字節(jié)操作的ACC用作數(shù)據(jù)源或存放結(jié)果。通過位操作指令可以實現(xiàn)置位、清零、取反以及位邏輯運算等操作。運算部件中的程序狀態(tài)字寄存器PSW地位特殊,下面給予單獨介紹。其他專用寄存器放在2.3節(jié)存儲器結(jié)構(gòu)中作逐一介紹。2.3.2程序狀態(tài)字寄存器

程序狀態(tài)字PSW是一個8位的寄存器,包含了各種程序狀態(tài)信息,它相當于一個標志寄存器,以供程序查詢和判別。PSW的格式、各標志的含義及功能定義見表2-1。表2-1PSW的格式、各標志的含義和功能定義此寄存器各位的含義如下(其中PSW.1未用):CYACF0RS1RS0OV-P2.3.2程序狀態(tài)字寄存器

CY(PSW.7):進位標志。在執(zhí)行某些算術(shù)和邏輯指令時,它可以被硬件或軟件置位或清零。CY在布爾處理機中被認為是位累加器,其重要性相當于一般中央處理器中的累加器A。AC(PSW.6):輔助進位標志。當進行加法或減法操作而產(chǎn)生由低4位數(shù)向高4位數(shù)進位或借位時,AC將被硬件置位,否則就被清零。AC被用于BCD碼調(diào)整,詳見指令系統(tǒng)中的“DAA”指令。F0(PSW.5):用戶標志位。F0是用戶定義的一個狀態(tài)標記,用軟件來使它置位或清零。該標志位狀態(tài)一經(jīng)設(shè)定,可由軟件測試F0,以控制程序的流向。RS1、RS0(PSW.4、PSW.3):寄存器區(qū)選擇控制位??梢杂密浖碇梦换蚯辶阋源_定工作寄存器區(qū)。RS1、RS0與寄存器區(qū)的對應關(guān)系見表2-2。2.3.2程序狀態(tài)字寄存器表2-2工作寄存器組選擇OV(PSW.2):溢出標志。帶符號加減運算中,超出了累加器A所能表示的符號數(shù)有效范圍(-128~+127)時,即產(chǎn)生溢出,OV=1,表明運算運算結(jié)果錯誤。如果OV=0,表明運算結(jié)果正確。RS1RS0工作寄存器組000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)2.3.2程序狀態(tài)字寄存器P(PSW.0):奇偶標志。每個指令周期都由硬件來置位或清零,以表示累加器A中1的位數(shù)的奇偶數(shù)。若1的位數(shù)為奇數(shù),P置1,否則P清零。P標志位對串行通信中的數(shù)據(jù)傳輸有重要的意義,在串行通信中常用奇偶校驗的辦法來檢驗數(shù)據(jù)傳輸?shù)目煽啃?。在發(fā)送端可根據(jù)P的值對數(shù)據(jù)進行奇偶置位或清零。PSW.1:程序狀態(tài)字的第1位,該位的含義沒有定義,若用戶要使用這一位,可直接使用PSW.1的位地址。PSW寄存器除具有字節(jié)地址外,還具有位地址,因此,可以對PSW中的任一位進行操作,這無疑大大提高了指令執(zhí)行的效率。2.3.3控制部件控制部件是用來統(tǒng)一指揮和控制計算機進行工作的部件。其功能是從存儲器中逐條取指令,進行指令譯碼,并通過定時和控制電路,在規(guī)定的時刻發(fā)出各種操作所需的全部內(nèi)部控制信息及CPU外部所需的控制信號,使各部分按照一定得節(jié)拍協(xié)調(diào)工作,完成指令所規(guī)定的各種操作。它由指令部件、時序部件和操作控制部件組成。(1)指令部件指令部件是一種能對指令進行分析、處理并產(chǎn)生控制信號的邏輯部件,也是控制器的核心。通常,它由程序計數(shù)器PC(ProgramCounter)、指令寄存器IR(InstructionRegister)和指令譯碼器等組成。這三個寄存器用戶都不能直接訪問。指令寄存器IR是一個8位寄存器,用于暫存存放指令代碼,等待譯碼。2.3.3控制部件

指令譯碼器用于對送入指令譯碼器中的指令進行譯碼。所謂“譯碼”,就是把指令轉(zhuǎn)變成執(zhí)行此指令所需要的電信號。當指令送入譯碼器后,由譯碼器對該指令進行譯碼,根據(jù)譯碼器輸出的信號,CPU控制電路定時產(chǎn)生執(zhí)行該指令所需的各種控制信號,使單片機正確執(zhí)行程序所需要的各種操作。程序計數(shù)器PC用于存放CPU要執(zhí)行的下一條指令的地址。程序中的每條指令都有自己的存放地址(指令都存放在ROM區(qū)的某一單元),CPU要執(zhí)行某條指令時,就把該條指令的地址碼(即PC中的值)送到地址總線,從ROM中讀取指令,當PC中的地址碼被送上地址總線后,PC會自動指向CPU要執(zhí)行的下一條指令的地址。執(zhí)行指令時,CPU按PC的指示地址從ROM中讀取指令,所讀取指令碼送入指令寄存器中,由指令譯碼器對指令進行譯碼,發(fā)出相應的控制信號,從而完成指令所指定的操作。2.3.3控制部件(2)時序部件時序部件由時鐘電路和脈沖分配器組成,用于產(chǎn)生操作控制部件所需的時序信號。產(chǎn)生時序信號的部件稱為“脈沖發(fā)生器”或“時序系統(tǒng)”,它由一個振蕩器和一組計數(shù)分頻器組成。振蕩器是一個脈沖源,輸出頻率穩(wěn)定的脈沖,也稱為“時鐘脈沖”,為CPU提供時鐘基準。時鐘脈沖經(jīng)過進一步的計數(shù)分頻,產(chǎn)生所需的節(jié)拍信號或時間更長的機器周期信號。詳見2.6.2。(3)操作控制部件操作控制部件可以為指令譯碼器的輸出信號配上節(jié)拍電位和節(jié)拍脈沖,也可以和外部進來的控制信號組合,共同形成相應的微操作控制序列信號,以完成規(guī)定的操作。2.4存貯器結(jié)構(gòu)

一般微機通常是程序和數(shù)據(jù)共用一個存儲空間,即ROM和RAM統(tǒng)一編址,屬于“馮.諾依曼”(VonNeumann)結(jié)構(gòu)。而單片機的存儲器組織結(jié)構(gòu)則把程序存儲空間和數(shù)據(jù)存儲空間嚴格區(qū)分開來,即程序存儲器ROM和數(shù)據(jù)存儲器RAM分開編址,屬于“哈佛”(Harvard)結(jié)構(gòu)。程序存儲器ROM用于固化程序、常數(shù)和數(shù)據(jù)表。數(shù)據(jù)存儲器用于存放程序運行中產(chǎn)生的各種數(shù)據(jù)、用作堆棧等。2.4存貯器結(jié)構(gòu)AT89S51單片機存儲器結(jié)構(gòu)如圖2-6所示2.4存貯器結(jié)構(gòu)AT89S51單片機存儲器在物理結(jié)構(gòu)上分成四個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。從用戶使用的角度,即從邏輯上考慮,則有三個存儲空間:片內(nèi)外統(tǒng)一編址的64KB程序存儲器地址空間(0000H~FFFFH)、256B的片內(nèi)數(shù)據(jù)存儲器地址空間(00H~FFH)及片外數(shù)據(jù)存儲器地址空間(0000H~FFFFH)。CPU在訪問三個不同的邏輯空間時,通過采用不同形式的指令,來產(chǎn)生相應的存儲器選通信號,訪問程序存儲器使用MOVC指令、訪問片內(nèi)數(shù)據(jù)存儲器使用MOV指令、訪問片外數(shù)據(jù)存儲器使用MOVX指令。2.4.1程序存貯器

1.AT89S51單片機程序存儲器ROM程序存儲器用于存放編好的程序、常數(shù)或表格。在正常工作時只可讀不可寫,掉電后數(shù)據(jù)不丟失。(1)片內(nèi)具有4K的flash結(jié)構(gòu)的電可擦除只讀存儲器,與INTEL公司早期產(chǎn)品的紫外線擦除的EPROM結(jié)構(gòu)相比,使用更靈活更方便。(2)外部可以擴展64K的ROM,以滿足一些大程序的需要。但是建議用戶盡量不要外擴ROM,因為當擴展外部ROM的時候,系統(tǒng)要占有單片機的P0、P2口及P3口的部分口線作為總線。所以在大多數(shù)的應用場合,盡量選擇片內(nèi)的FLASH內(nèi)存的容量能夠滿足實際需要單片機型號,這樣不僅可以節(jié)省額外的硬件投資、節(jié)省單片機的口線資源,更重要的是片內(nèi)FLASH中的程序在下載、燒寫時通過“加密”可以得到保護。只有當程序特別大,內(nèi)部空間無法滿足要求時才選用擴展外部ROM。2.4.1程序存貯器

(3)程序內(nèi)存最低端的地址可以在片內(nèi)Flash中,或在外部ROM中。通過單片機/EA的引腳的電平來選擇。例如,在帶有4KB片內(nèi)Flash的AT89S51中,如果把/EA引腳連到Vcc,當?shù)刂窞?000H~0FFFH時,則訪問內(nèi)部Flash;當?shù)刂窞?000H~FFFFH時,將自動轉(zhuǎn)向外部程序內(nèi)存。如果/EA端接地,則只訪問外部程序內(nèi)存,不管是否有內(nèi)部Flash內(nèi)存。2.4.1程序存貯器

2.AT89S51單片機程序存儲器管理(1)每個ROM單元(byte)對應一個惟一的16bit的地址編碼(Address)(2)CPU要到某個ROM單元去取指令,是通過把地址編碼寫入16位的程序計數(shù)器PC來實現(xiàn)的,因此AT89系列單片機地址的編碼范圍(通常稱為尋址范圍)為:0000000000000000B~1111111111111111B(二進制)0000H~FFFFH(十六進制)0~65535(十進制)2.4.1程序存貯器(3)系統(tǒng)復位后,PC的初始值為0000H,以后的取值是CPU根據(jù)用戶程序的運行流程自動裝載的(程序順序執(zhí)行時,PC值自動加1;執(zhí)行轉(zhuǎn)移指令、子程序調(diào)用和中斷服務程序時,PC值分別等于轉(zhuǎn)移的目標地址、子程序或中斷服務程序的入口地址。

2.4.1程序存貯器

3.AT89S51單片機程序存儲器的分配 程序內(nèi)存的某些單元是保留給系統(tǒng)使用的,這幾個單元的配置如圖2-7所示。從圖2-7可知,單片機復位后,程序計數(shù)器PC的內(nèi)容為0000H,所以CPU總是從0000H單元開始執(zhí)行程序。2.4.1程序存貯器

從地址0003H開始,系統(tǒng)每隔8個單元為6個中斷服務子程序分配有一個固定的入口地址。如外部中斷0的入口地址為0003H;定時器0的入口地址為000BH;外部中斷1的入口地址為0013H;定時器1的入口地址為001BH;以此類推。中斷響應后,程序指針PC

將自動根據(jù)中斷類型指向這些入口地址的某一個,CPU就從這里開始執(zhí)行中斷服務子程序。因此從0003H單元開始的這段區(qū)域應該保留給中斷使用,所以程序設(shè)計時在0000H~0002H單元放置一條轉(zhuǎn)移指令,跳過這段區(qū)域,轉(zhuǎn)到系統(tǒng)主程序,除非系統(tǒng)不使用中斷,主程序才可以覆蓋這段區(qū)域2.4.2內(nèi)部數(shù)據(jù)存貯器單片機的內(nèi)部數(shù)據(jù)存儲器結(jié)構(gòu)如圖2-8所示。片內(nèi)數(shù)據(jù)存儲器地址范圍是00H~FFH,只有256個字節(jié),這里僅介紹低128個字節(jié)區(qū),高128個字節(jié)由于被特殊功能寄存器占有,故單獨列出介紹。低128字節(jié)區(qū)主要分為三個區(qū)域:通用工作寄存器組區(qū)、可位尋址區(qū)和用戶RAM區(qū)。2.4.2內(nèi)部數(shù)據(jù)存貯器(1)工作寄存器組區(qū)最低32個單元(地址為00H~1FH)是4個通用工作寄存器組。每個寄存器組含有8個8位寄存器,編號為R0~R7。程序狀態(tài)字PSW中的2位RS0、RS1用來確定當前采用哪一個工作寄存器組,其對應關(guān)系如前面的表2-2所示。在某一時刻只能選用其中的一組寄存器工作,系統(tǒng)復位后,指向工作寄存器組0。如果用戶程序不需要4個工作寄存器區(qū),則不用的工作寄存器單元可以作一般的RAM使用。2.4.2內(nèi)部數(shù)據(jù)存貯器(2)位尋址區(qū)內(nèi)部RAM區(qū)中的20H~2FH單元(16字節(jié))可供位尋址,這16個單元共有128位,每位均可直接尋址,其位地址范圍為00H~7FH,具體情況見表2-3。這些位地址有兩種表示方式:一種是采用位地址形式,即00H~7FH;一種是用字節(jié)地址(20H~2FH).位數(shù)方式表示。例如,位地址00H~07H也可表示為20H.0~20H.7。2.4.2內(nèi)部數(shù)據(jù)存貯器表2-3RAM位尋址區(qū)地址表2.4.2內(nèi)部數(shù)據(jù)存貯器

(3)用戶RAM區(qū)30H~7FH共80個字節(jié)單元,為字節(jié)尋址的內(nèi)部RAM區(qū),可供用戶作為數(shù)據(jù)存儲區(qū)。這一區(qū)域的操作指令非常豐富,數(shù)據(jù)處理方便靈活,是非常寶貴的資源。但是,如果堆棧指針初始化時設(shè)置在這個區(qū)域,就要留出足夠的字節(jié)單元作為堆棧區(qū),以防止在數(shù)據(jù)存儲時,破壞了堆棧的內(nèi)容。堆棧:是按先進后出或后進先出原則進行讀/寫的特殊RAM區(qū)域。51單片機的堆棧區(qū)是不固定的,原則上可設(shè)置在內(nèi)部RAM的任意區(qū)域內(nèi)。實際使用時要根據(jù)對片內(nèi)RAM各功能區(qū)的使用情況而靈活設(shè)置,應避開工作寄存器區(qū)、位尋址區(qū)和用戶實際使用的數(shù)據(jù)區(qū),一般設(shè)在2FH地址單元以后的區(qū)域。2.4.2內(nèi)部數(shù)據(jù)存貯器

堆棧的作用:主要用在子程序調(diào)用或中斷處理過程中,用于保護斷點和現(xiàn)場,實現(xiàn)子程序或中斷的多級嵌套處理。在CPU響應中斷或調(diào)用子程序時,會自動地將斷點處的16位返回地址壓入堆棧。在中斷服務程序或子程序結(jié)束時,返回地址會自動由堆棧彈出,并放回到程序計數(shù)器PC中,使程序從原斷口處繼續(xù)執(zhí)行下去。堆棧除了用于保護斷點處的返回地址外,還可以用于保護其他一些重要信息,要注意的是,必須按照“后進先出”的原則存取信息。堆棧也可以作為特殊的數(shù)據(jù)交換區(qū)使用。2.4.2內(nèi)部數(shù)據(jù)存貯器

堆棧的開辟:棧頂?shù)奈恢糜蓪iT設(shè)置的堆棧指針SP指出。51單片機的SP是8位寄存器,堆棧屬向上生長的,當數(shù)據(jù)壓入堆棧時,SP的內(nèi)容自動加1,作為本次進棧的指針,然后再存入數(shù)據(jù)。SP的值隨著數(shù)據(jù)的存入而增加。當數(shù)據(jù)從堆棧彈出之后,SP的值隨之減少。復位時,SP的初值為07H,用戶在初始化程序中可以給SP賦新的初值。2.4.3特殊功能寄存器內(nèi)部RAM的高128單元是給特殊寄存器使用的,因此稱之為專用寄存器區(qū),其單元地址為80H~FFH。因為這些寄存器的功能已作專門規(guī)定,所以稱其為專用寄存器或特殊功能寄存器(SpecialFunctionRegisters),簡稱SFR。AT89S51的SFR的總數(shù)為26個,僅占用了80H~FFH中的很小一部分。SFR是單片機片內(nèi)資源的控制指揮單元,單片機內(nèi)部不管集成了多少外圍接口部件和功能單元,都是通過特殊功能寄存器SFR進行控制和管理的,因此學習任何一個單片機的功能部件的使用,一定要了解與之相關(guān)的SFR,并弄清通過這些SFR如何去控制你所使用的功能部件。2.4.3特殊功能寄存器51系列單片機內(nèi)的I/O鎖存器、定時器、串行口數(shù)據(jù)緩沖器以及各種控制寄存器和狀態(tài)寄存器都以特殊功能寄存器的形式出現(xiàn)。它們離散地分布在80H~FFH的地址空間范圍內(nèi),具體分布見表2-4。表2-4AT89S51單片機的SFR在80H~FFH的離散分布2.4.3特殊功能寄存器

表2-4列出了AT89S51單片機所有的特殊功能寄存器及其地址和初始值。字節(jié)地址能被8整除的專用寄存器都可以實現(xiàn)位尋址,個別不能被8整除的專用寄存器也可以實現(xiàn)位尋址。SFR的使用方法①從表2-4可以看出,80H~FFH這128字節(jié)并不是所有的地址都定義了SFR。在這個區(qū)域當中,除了SFR之外剩余的空閑單元,用戶不得使用。讀這些地址,一般將得到一個隨機數(shù)據(jù);寫入的數(shù)據(jù)將會無效。②必須使用直接尋址方式對SFR進行訪問,可使用寄存器名稱(是它的符號地址)或地址。例如:0E0H——累加器的地址ACC——累加器的名稱2.4.3特殊功能寄存器③具有位地址和位名稱的SFR才可以位尋址,位地址有以下4種表示形式:a.直接使用位地址表示例如:0D7H——PSW最高位的位地址b.使用位名稱表示例如:CY——PSW最高位的位名稱c.使用SFR字節(jié)地址.位形式表示例如:0D7H.7——PSW字節(jié)地址.最高位d.使用SFR名稱.位形式表示例如:PSW.7——PSW名稱.最高位

2.4.3特殊功能寄存器(1)累加器ACC累加器ACC是一個8位累加器,字節(jié)地址為E0H。它是CPU中最重要、最繁忙的寄存器,ALU進行運算時數(shù)據(jù)絕大多數(shù)時候都來自于累加器ACC。它一般用于存放參加運算的操作數(shù)和運算結(jié)果,在指令系統(tǒng)中用A表示。(2)B寄存器B寄存器是運算器中的一個工作寄存器,字節(jié)地址為F0H。它主要是和ACC配合完成乖法和除法運算而設(shè)置的,存放運算結(jié)果。在除法指令中,被除數(shù)取自ACC,除數(shù)取自B,商數(shù)存放在ACC中,而余數(shù)則存放在B中。乘法指令的兩個操作數(shù)分別取自ACC和B,乘積則存放在AB寄存器對中(此處的A即ACC)。B寄存器不進行乖、除運算時,B寄存器可作為RAM使用。2.4.3特殊功能寄存器

(3)堆棧指針SP堆棧指針SP(StackPointer)是一個8位特殊功能寄存器,字節(jié)地址為81H。它指示出堆棧頂部在內(nèi)部RAM中的位置。系統(tǒng)復位后,SP初始化為07H,使得堆棧事實上由08H單元開始??紤]到08H~1FH單元分屬于工作寄存器區(qū)1~3,若程序設(shè)計中要用到這些區(qū),則最好把SP值改置為1FH或更大的值如60H。SP的初始值越小,堆棧深度就越深。堆棧指針的值可以由軟件改變,因此堆棧在內(nèi)部RAM中的位置比較靈活。除用軟件直接改變SP值外,在執(zhí)行PUSH、POP、各種子程序調(diào)用、中斷響應、子程序返回(RET)和中斷返回(RETI)等指令時,SP值將自動調(diào)整。當執(zhí)行子程序調(diào)用或中斷服務程序時,需要將下一條要執(zhí)行的指令地址即PC值壓入堆棧保存起來,當子程序或中斷返回時,再將SP指向單元的內(nèi)容回送到程序計數(shù)器PC中。這是一個很重要的指針。2.4.3特殊功能寄存器

(4)雙地址指針DPTR0和DPTR1AT89S51單片機提供了兩路16位地址指針:位于SFR中82H~83H的DPTR0和位于84H~85H的DPTR1,能給程序設(shè)計帶來很大的便利。DPTR為16位的地址指針,由兩個8位的寄存器DPH和DPL組成,可存放一個16位的地址值。當CPU訪問64KB的外部數(shù)據(jù)存儲器時,就用DPTR作地址指針,存放外部內(nèi)存的地址;當CPU訪問64KB的程序存儲器時,DPTR用作基址寄存器。CPU也可單獨對DPH、DPL操作,即將DPTR分成兩個寄存器使用。2.4.3特殊功能寄存器

雙地址指針可以改善同時需要兩個16位指針運用時的性能DPTR0和DPTR1的使用由AUXR1的0位DPS來切換。當DPS位為0時,所有對DPTR的操作運用DPTR0;當DPS位為1時,所有對DPTR的操作運用DPTR1。這樣,通過一個基本的INCAUXR1指令,就可以來回切換兩個地址指針。例如:MOVAUXR1,#0;DPS為0,DPTR0有效……INCAUXR1;DPS為1,DPTR1有效……INCAUXR1;DPS為0,DPTR0有效

2.4.3特殊功能寄存器地址指針DPTR與程序計數(shù)器PC的異同分析:①相同之處:兩者都是與地址有關(guān)的、16位的寄存器。作為地址寄存器使用時,PC與DPTR都是通過P0和P2口(作為16位地址總線)輸出的。但是,PC的輸出與ALE及PSEN有關(guān);DPTR的輸出,則與ALE、RD及WR相聯(lián)系。②不同之處:PC與程序存儲器的地址有關(guān);而DPTR與數(shù)據(jù)存儲器的地址有關(guān);PC是16位的,DPTR可以作為16位寄存器對待,也可以作為兩個8位寄存器對待。另外PC是不可以訪問的,有自己獨特的變化方式,它的變化軌跡決定了程序執(zhí)行的流程;DPTR是可以訪問的,如MOVDPTR1,#XXXXH,INCDPTP1等。2.4.3特殊功能寄存器(5)端口P0~P3專用寄存器P0、P1、P2和P3分別是I/O口P0~P3的鎖存器,字節(jié)地址分別為80H、90H、A0H和B0H。在AT89SC51中,I/O和RAM統(tǒng)一編址,既可以字節(jié)尋址,也可以位尋址,使用起來較方便。有關(guān)P0~P3的詳細情況,在后續(xù)內(nèi)容中介紹。(6)串行數(shù)據(jù)緩沖器SBUF串行數(shù)據(jù)緩沖器SBUF的字節(jié)地址99H。用于存放欲發(fā)送或接收的數(shù)據(jù),它實際上由兩個獨立的寄存器組成,一個是發(fā)送緩沖器,另一個是接收緩沖器。當要發(fā)送的數(shù)據(jù)傳送到SBUF時,進入的是發(fā)送緩沖器,當要從SBUF取數(shù)據(jù)時,則取自接收緩沖器,取走的是剛接收到的數(shù)據(jù)2.4.3特殊功能寄存器

(7)定時器/計數(shù)器AT89SC51單片機有兩個16位定時器/計數(shù)器T0和T1,字節(jié)地址分別90H和92H,它們分別由兩個獨立的8位寄存器組成,共有4個獨立的寄存器:TH0,TL0,TH1,TL1,可對這4個寄存器尋址,但不能把T0和T1當成16位寄存器來訪問。(8)看門狗定時器WDTWDT是為了解決CPU程序運行時可能進入混亂或死循環(huán)而設(shè)置,它由一個14bit計數(shù)器和看門狗復位SFR(WDTRST)構(gòu)成。外部復位時,WDT默認為關(guān)閉狀態(tài),要打開WDT,用戶必須按順序?qū)?1EH和0E1H寫到WDTRST寄存器(SFR地址為0A6H),當啟動了WDT,它會隨晶體振蕩器在每個機器周期計數(shù),除硬件復位或WDT溢出復位外沒有其它方法關(guān)閉WDT,當WDT溢出,將使RST引腳輸出高電平的復位脈沖。2.4.3特殊功能寄存器

使用看門狗(WDT):打開WDT需按次序?qū)?1EH和0E1H到WDTRST寄存器(SFR的地址為0A6H),當WDT打開后,需在一定的時候?qū)?1EH和0E1H到WDTRST寄存器以避免WDT計數(shù)溢出。14位WDT計數(shù)器計數(shù)達到16383(3FFFH),WDT將溢出并使器件復位。WDT打開時,它會隨晶體振蕩器在每個機器周期計數(shù),這意味著用戶必須在小于每個16383機器周期內(nèi)復位WDT,也即寫01EH和0E1H到WDTRST寄存器,WDTRST為只寫寄存器。WDT計數(shù)器既不可讀也不可寫,當WDT溢出時,通常將RST引腳輸出高電平的復位脈沖。復位脈沖持續(xù)時間為98xTOSC,而TOSC=1/FOSC(晶體振蕩頻率)。為使WDT工作最優(yōu)化,必須在合適的程序代碼時間段周期地復位WDT防止WDT溢出。2.4.3特殊功能寄存器

掉電和空閑時的WDT:掉電時期,晶體振蕩停止,WDT也停止。掉電模式下,用戶不能再復位WDT。有兩種方法可退出掉電模式:硬件復位或通過激活外部中斷。當硬件復位退出掉電模式時,處理WDT可像通常的上電復位一樣。當由中斷退出掉電模式則有所不同,中斷低電平狀態(tài)持續(xù)到晶體振蕩穩(wěn)定,當中斷電平變?yōu)楦呒错憫袛喾铡榉乐怪袛嗾`復位,當器件復位,中斷引腳持續(xù)為低時,WDT并未開始計數(shù),直到中斷引腳被拉高為止。這為在掉電模式前復位WDT。2.4.3特殊功能寄存器

為保證WDT在退出掉電模式時極端情況下不溢出,最好在進入掉電模式前復位WDT。在進入空閑模式前,WDT打開時,WDT是否繼續(xù)由SFR中的AUXR的WDIDLE位決定,在IDLE期間(位WDIDLE=0)默認狀態(tài)是繼續(xù)計數(shù)。為防止AT89S51從空閑模式中復位,用戶應周期性地設(shè)置定時器,重新進入空閑模式。當位WDIDLE被置位,在空閑模式中WDT將停止計數(shù),直到從空閑(IDLE)模式中退出重新開始計數(shù)。2.4.3特殊功能寄存器

(10)輔助寄存器1(AUXR1)AUXR1用于選擇雙數(shù)據(jù)指針寄存器DP0和DP1,它的字節(jié)地址為A2H,不可以位尋址。各位的定義如表2-5所示。其中:-:預留擴展用;DPS:數(shù)據(jù)指針選擇位DPS=0選擇DPTR寄存器DP0L和DP0H;DPS=1選擇DPTR寄存器DP1L和DP1H。2.4.3特殊功能寄存器(11)輔助寄存器(AUXR)AUXR的字節(jié)地址為8EH,用于選擇ALE的時鐘輸出方式、RESET輸出及空閑模式下WDT的工作方式,地址為8EH,不可以位尋址,各位的定義如表2-6所示。其中:-:預留擴展用DISALE:ALE使能標志位當DISALE=0時,ALE以1/6晶振頻率輸出信號;當DISALE=1時,ALE只有在執(zhí)行MOVX或MOVC指令時啟動2.4.3特殊功能寄存器DISRTO:復位輸出標志位當DISRTO=0時,看門狗(WDT)定時結(jié)束,Reset輸出高電平;當DISRTO=1時,Reset只有輸入WDIDLE:空閑模式下WDT使能標志位當WDIDLE=0時,空閑模式下,WDT繼續(xù)計數(shù);當WDIDLE=1時,空閑模式下,WDT停止計數(shù)(12)其它控制寄存器IP、IE、TMOD、TCON、SCON和PCON寄存器分別包含有中斷系統(tǒng)、定時器/計數(shù)器、串行口和供電方式的控制和狀態(tài)位,這些寄存器將在以后內(nèi)容中介紹。2.4.4地址空間1.片外總線結(jié)構(gòu)從AT89S51單片機引腳可以看出,除了電源、復位、時鐘輸入以及I/O口外,其余的管腳都是為實現(xiàn)系統(tǒng)擴展而設(shè)置的。這些管腳構(gòu)成了片外三總線結(jié)構(gòu),如圖2-9所示。2.4.4地址空間(1)地址總線(AB)地址總線的寬度是16位,因此可以尋址的范圍是64?KB。采用分時復用技術(shù),可以對外部64?KB的數(shù)據(jù)存儲器或程序存儲器直接尋址。它由P0口提供16位地址總線的低8位(A0~A7),由P2口提供地址總線的高8位(A8~A15)。(2)數(shù)據(jù)總線(DB)數(shù)據(jù)總線的寬度是8位,它由P0口提供。(3)控制總線(CB)控制總線由P3口的第二功能(RXD、TXD、INT0、INT1、T0、T1、RD、WR)和4根獨立的控制線(RST、EA、ALE、PSEN)組成。2.4.4地址空間2.程序存儲器地址空間程序存儲器用于存放編好的程序和表格常數(shù)。程序存儲器通過16位程序計數(shù)器尋址,尋址能力為64KB,這使得指令能在64KB地址空間內(nèi)任意跳轉(zhuǎn)。AT89S51單片機ROM的地址范圍0000H~0FFFH。3.數(shù)據(jù)存儲器地址空間(1)片內(nèi)RAM①工作寄存器區(qū):AT89S51的前32個單元(地址00H~1FH)稱為寄存器區(qū)。通過對特殊功能寄存器PSW中RS1、RS0兩位的編程設(shè)置,可選擇任一寄存器組為工作寄存器組,方法如前面表2-2所示。2.4.4地址空間

②位尋址區(qū):字節(jié)地址20H到2FH稱為位地址區(qū),共有16個字節(jié),計128位,每位都有相應的位地址,位地址范圍為00H~7FH,見前面表2-3。位尋址區(qū)有兩種訪問方式:一是按字節(jié)訪問;另一種是通過位尋址,對位尋址區(qū)128位進行位操作。③便箋區(qū):30H~7FH,便箋區(qū)共有80個RAM單元,用于存放用戶數(shù)據(jù)或作堆棧區(qū)使用。AT89S51對便棧區(qū)中每個RAM單元是按字節(jié)存取的。④特殊功能寄存器(26個):AT89S51片內(nèi)高128BRAM中,有26個特殊功能寄存器(SFR),它們離散地分布在80H~FFH的RAM空間中。訪問特殊功能寄存器只允許使用直接尋址方式。特殊功能寄存器表2-7所示。2.4.4地址空間(2)片外RAMAT89S51構(gòu)成的應用系統(tǒng)當片內(nèi)RAM不夠用時,可在片外部擴充數(shù)據(jù)存儲器。AT89S51給用戶提供了可尋址64KB(0000H~FFFFH)的外部擴充RAM的能力,至于擴多少RAM,則根據(jù)用戶實際需要來定。2.4.5外部數(shù)據(jù)存貯器

外部數(shù)據(jù)存儲器的尋址空間可達64?KB,地址范圍是0000H~FFFFH。P0端口作為RAM的地址/數(shù)據(jù)總線,當外部地址空間小于FFH時,只需P0口作為地址總線即可,P2口可以作為一般的I/O使用。當外部地址空間大于FFH時,則由P2端口傳送高8位地址。對片外數(shù)據(jù)存儲器的訪問,使用MOVX的間接尋址指令,以區(qū)別對內(nèi)部RAM(片內(nèi)用MOV)的訪問,同時自動產(chǎn)生讀/寫控制信號RD和WR。2.4.5外部數(shù)據(jù)存貯器片外RAM的用途:(1)沒有特別的用途,不像片內(nèi)RAM,不劃分區(qū)域。(2)片外RAM做通用RAM使用,主要存放大量采集的或接收的數(shù)據(jù)、運算的中間數(shù)據(jù)、最后結(jié)果、用作堆棧等。使用外部RAM同樣是要付出占用口資源為代價的,所以一般情況下不提倡使用外部RAM。2.5I/O端口

AT89系列單片機有P0(P0.0~P0.7)、P1(P1.0~P1.7)、P2(P2.0~P2.7)、P3(P3.0~P3.7)4個8位雙向輸入/輸出端口,在結(jié)構(gòu)上因端口的使用功能不同,其結(jié)構(gòu)和性能都有所不同因此了解端口的結(jié)構(gòu)特點是十分必要的,下面分別介紹。2.5.1I/O的內(nèi)部結(jié)構(gòu)P0口是一個8位漏極開路的雙向I/O口。圖2-10是P0口的位結(jié)構(gòu)圖。當P0口作為輸出引腳時:控制信號=0時,與門輸出=0,V1截止;內(nèi)部總線=0,Q非=1,V2導通,P0.x=0讀引腳當從內(nèi)部總線輸出低電平后,鎖存器Q=0,Q非=1,場效應管T2開通,端口線呈低電平狀態(tài)。此時無論端口線上外接的信號是低電乎還是高電平,從引腳讀入單片機的信號都是低電平;因此作為輸入引腳時一定是高電平;還有如果是讀改寫指令時一定是讀鎖存器。作為地址/數(shù)據(jù)復用口使用時的工作原理

這時多路開關(guān)‘控制’信號為‘1’,‘與門’解鎖,當數(shù)據(jù)/地址線=0時,與門輸出為0,反相器=1,V2導通,P0.X=0;當?shù)刂?數(shù)據(jù)=1時,V1導通,V2截止,P0.X=1.2.5.1I/O的內(nèi)部結(jié)構(gòu)2.P1口P1口是一個有內(nèi)部上拉電阻的準雙向口,位結(jié)構(gòu)如圖2-8所示,P1口在電路結(jié)構(gòu)上與P0口有一些不同之處。首先它不再需要多路轉(zhuǎn)接電路MUX,其次是電路的內(nèi)部有上拉電阻。與場效應管共同組成輸出驅(qū)動電路。2.5.1I/O的內(nèi)部結(jié)構(gòu)

(1)?P1口作通用I/O口使用作為輸出口使用時,已能向外提供推拉電流負載,無需再外接上拉電阻。在作輸入時,和P0口一樣,必須先將“1”寫入鎖存器,使場效應管T2截止,從而完成輸入操作。(2)P1口管腳復用功能對于AT89S51單片機,P1.0與P1.1可以配置成定時/計數(shù)器2的外部計數(shù)輸入端(P1.0/T2)與定時/計數(shù)器2的觸發(fā)輸入端(P1.0/T2EX);P1.5、P1.6、P1.7用于flash內(nèi)存的ISP下載引腳。(3)對Flash內(nèi)存進行編程或校驗時接收低8位地址在對AT8989S51單片機內(nèi)部Flash并行編程下載和程序校驗時,P1口接收低8位地址。2.5.1I/O的內(nèi)部結(jié)構(gòu)表2-8P1口管腳復用功能2.5.1I/O的內(nèi)部結(jié)構(gòu)3.P2口(1)P2口作通用I/O口使用。當P2口作通用I/O口使用時,是一個準雙向口,位結(jié)構(gòu)如圖2-12所示,此時轉(zhuǎn)換開關(guān)MUX倒向左邊,輸出級與鎖存器接通,引腳可接I/O設(shè)備,其輸入/輸出操作與P1口完全相同。2.5.1I/O的內(nèi)部結(jié)構(gòu)

(2)P2口作高8位地址總線口使用。當系統(tǒng)擴展外部存儲器時,P2口用于輸出高8位地址A15~A8。這時在CPU的控制下,轉(zhuǎn)換開關(guān)MUX倒向右邊,接通內(nèi)部地址總線。(3)對Flash內(nèi)存進行編程和校驗時接收高位地址。在對AT89系列單片機內(nèi)部Flash并行程序設(shè)計和程序校驗時,P2口也接收高位地址或一些控制信號。2.5.1I/O的內(nèi)部結(jié)構(gòu)4.P3口P3口是一個多用途的口,也是一個準雙向口,作為第一功能(通用I/O端口)使用時,其功能同P1口。P3口的位結(jié)構(gòu)如圖2-13所示。當作為I/O使用時,第二功能信號引線應保持高電平,與非門開通,以維持從鎖存器到輸出端數(shù)據(jù)輸出通路的暢通。2.5.1I/O的內(nèi)部結(jié)構(gòu)

P3口還接收一些控制信當作第二功能使用時,每一位功能定義如表2-9所示。P3口的第二功能實際上就是系統(tǒng)具有控制功能的控制線。當輸出第二功能信號時,該位的鎖存器應置“1”,使與非門對第二功能信號的輸出是暢通的,從而實現(xiàn)第二功能信號的輸出。CPU區(qū)分單片機的引腳是否有第二功能只要CPU執(zhí)行到相應的指令,就自動轉(zhuǎn)成了第二功能。2.5.1I/O的內(nèi)部結(jié)構(gòu)

4個I/O端口使用時的注意事項和在結(jié)構(gòu)上的異同:通過前面的介紹,可知4個I/O端口在結(jié)構(gòu)上是基本相同的,但又各具特點。在無片外擴展存儲器的系統(tǒng)中,這4個端口的每1位都可以作為I/O端口使用。在作為一般的通用I/O輸入時,都必須先向鎖存器寫入“1”,使輸出驅(qū)動場效應管FET截止,以免誤讀數(shù)據(jù)。在系統(tǒng)擴展片外存儲器時,P2口作為高8位地址,P0口分時作為低8位地址和雙向數(shù)據(jù)總線。

2.5.2I/O口的負載能力和接口要求1.P0口(1)負載能力1)一般I/O口的負載能力:每一位輸出可以驅(qū)動4個LS型TTL負載。2)用作總線時的負載能力:P0口作總線時,每一位輸出可以驅(qū)動8個LS型TTL負載。拉電流:單片機引腳為高電平時對外輸出的電流,一般1mA灌電流:單片機引腳為低電平時對外吸收的電流,一般10mA2.5.2I/O口的負載能力和接口要求

2.P1~P3口(1)負載能力P1~P3口的輸出級接有上拉電阻,它們的每一位輸出可以驅(qū)動4個LS型TTL負載。(2)接口要求由于P1~P3口的輸出級接有上拉負載電阻,無論是作為輸入口,還是作為輸出口,不管外部電路的類型是什么,均無須外接上拉電阻。2.6復位電路和時鐘電路

復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)出現(xiàn)死機時,也必須對單片機進行復位,使其重新從頭開始工作。系統(tǒng)剛接通電源或重新啟動時均進入復位狀態(tài)。當系統(tǒng)處于正常工作狀態(tài)時,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以實現(xiàn)可靠復位,如圖2-14所示,其中TCY為機器周期,等于12個時鐘周期。復位后ALE、PSEN均為高電平,各寄存器和程序計數(shù)器PC的狀態(tài)見表2-10所示。2.6復位電路和時鐘電路2.6.1復位電路及工作方式

單片機的外部復位電路有上電自動復位、按鍵手動復位、以及外部復位信號輸入等方式。1.上電自動復位電路,也稱為自動復位電路。當接通電源的瞬間,RST端與VCC同電位,隨著電容上的電壓逐漸上升,RST端的電壓逐漸下降,于是在RST端便形成了一個正脈沖,其持續(xù)時間取決于RC電路的時間常數(shù),單片機在正常工作時,高電平持續(xù)2個時鐘即可實現(xiàn)系統(tǒng)有效地復位上電時高電平要維持10ms以上。2.6.1復位電路及工作方式

2.按鍵手動復位圖2-16是AT89S51單片機的上電+按鍵復位電路。上電復位過程同上。當單片機工作過程中需要復位時,按下復位鍵,復位端RST通過200Ω的電阻與VCC電源接通,使RST引腳為高電平。復位按鍵彈起后,RST端經(jīng)10KΩ的電阻接地,完成復位過程。圖2-16VCC是單片機的供電電壓,一般為+5V。2.6.1復位電路及工作方式3.外接復位芯片為了保證單片機可靠地復位,有時需要外接復位芯片,特別是當單片機處于間歇工作情況的時候,單片機需要頻繁的復位,例如,在計算機監(jiān)測系統(tǒng)中,電池供電的單片機系統(tǒng)由主計算機控制,平時單片機系統(tǒng)處于斷電狀態(tài)(節(jié)省電能),當主計算機接通單片機系統(tǒng)電源后,單片機需要可靠的上電復位進入工作狀態(tài)。為提高復位的可靠性,可選用專用的復位芯片。2.6.2時鐘電路及時序1.時鐘電路AT89S51單片機的時鐘電路主要內(nèi)部振蕩方式和外部振蕩方式兩種接法(1)內(nèi)部振蕩方式AT89S51中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1、C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,我們推薦使用30pF+/-10pF,而如使用陶瓷諧振器建議選擇40pF+/-10PF。內(nèi)部振蕩方式接法如圖2-17所示。2.6.2時鐘電路及時序

(2)外部振蕩方式用戶也可以采用外部時鐘。采用外部時鐘的電路如圖2-18所示。這種情況下,外部時鐘脈沖接到XTAL1端,即內(nèi)部時鐘發(fā)生器的輸入端,XTAL2端則懸空。由于外部時鐘信號是通過一個2分頻觸發(fā)器后作為內(nèi)部時鐘信號的,所以對外部時鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時間和最大的低電平持續(xù)時間應符合產(chǎn)品技術(shù)條件的要求。

圖2-17內(nèi)部振蕩方式圖2-18外部振蕩方式2.6.2時鐘電路及時序圖2-19為AT89S51單片機采用內(nèi)部振蕩方式的整個時鐘電路的框圖2.6.2時鐘電路及時序

2.CPU時序單片機的時序是指CPU在執(zhí)行指令時所需控制信號的時間順序。時序信號是以時鐘脈沖為基準產(chǎn)生的。CPU發(fā)出的時序信號有兩類:一類用于片內(nèi)各功能部件的控制,由于這類信號在CPU內(nèi)部使用,用戶無須了解;另一類信號通過單片機的引腳送到外部,用于片外存儲器或I/O端口的控制,這類時序信號對單片機系統(tǒng)的硬件設(shè)計非常重要。為了便于對CPU時序進行分析,人們按指令的執(zhí)行過程規(guī)定了幾種周期,即時鐘周期、狀態(tài)周期、機器周期和指令周期,也稱為時序定時單位。(1)時鐘周期:時鐘周期也稱振蕩周期,即振蕩器的振蕩頻率fosc的倒數(shù),是時序中最小的時間單位。單片機在工作時,它是由內(nèi)

溫馨提示

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

評論

0/150

提交評論