官术网_书友最值得收藏!

1.3 51單片機基本知識

1.3.1 51單片機簡介

51單片機基本結構如圖1-1所示,它把作為控制應用所必需的基本功能部件都集中在一個尺寸有限的集成電路芯片上。

圖1-1 51單片機的基本結構

51單片機有如下部件和特性:

1)8位微處理器(CPU);

2)程序存儲器(4KB Flash ROM),可進行1000次重復擦寫和三級加密;

3)128B數據存儲器(RAM);

4)26個特殊功能寄存器(SFR);

5)4個8位可編程并行I/O端口(P0口、P1口、P2口、P3口);

6)1組全雙工可編程串行通道;

7)2個可編程的16位定時器/計數器;

8)1個看門狗定時器;

9)5個中斷源;

10)低功耗模式有空閑和掉電模式,且具有斷電模式下的中斷恢復模式;

11)靈活的在系統程序設計(ISP)。

51單片機的內部結構框圖如圖1-2所示。

圖1-2 AT8951單片機的內部結構框圖

1.3.2 51單片機的引腳介紹

51單片機實際有效的引腳為40個,主要有三種封裝形式,其引腳圖可參見圖1-3:圖1-3a為PDIP封裝形式,這是普通40腳塑封雙列直插形式;圖1-3b為PLCC封裝形式,這種形式是具有44個“J”形腳(其中有4個空腳)的方形芯片,使用時需要插入與其相配的方形插座中;圖1-3c為TQFP封裝形式,這種形式也具有44個“J”形腳(其中有3個空腳,2個接地端),但其體積更小、更薄,注意,它是一種不同封裝形式的引腳,排列不一致,使用時一定要注意。

圖1-3 51單片機的引腳圖

a)PDIP40封裝的51單片機 b)PLCC44封裝的51單片機 c)TQFP44封裝的51單片機

為了盡可能縮小體積,減少引腳數,51單片機/S52單片機的不少引腳還具有第二功能(也稱為“復用功能”)。

1.電源及時鐘引腳

VCC:電源端。

GND:接地端。

XTAL1:接外部晶振的一端。在單片機內部,它是構成片內振蕩器的反相放大器的輸入端。當采用外部時鐘時,外部時鐘振蕩信號直接送入此引腳作為驅動端,即把此信號直接接到內部時鐘發生器的輸入端,如圖1-4所示。

XTAL2:接外部晶振的另一個端。在單片機內部,它是構成片內振蕩器的反相放大器的輸出端。當采用外部時鐘信號時,此引腳應懸空,如圖1-5所示。

圖1-4 內部振蕩器的接法

圖1-5 外部振蕩器的接法

2.控制引腳

RST:復位輸入端。在振蕩器運行時,在此引腳上出現兩個機器周期以上的高電平將使單片機復位。看門狗定時器(Watchdog)溢出后,該引腳會保持98個振蕩周期的高電平,也會使單片機復位。在AUXR寄存器中的DISRTO位可以用于屏蔽這種功能。DISRTO位的默認狀態,是復位高電平輸出有效。

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

:外部程序存儲器的選通信號。它用于讀外部程序存儲器的選通信號,低電平有效。當AT89系列單片機在執行來自外部程序存儲器的指令時,每一個機器周期被啟動2次。在對外部數據存儲器的每次存取中,不出現。

:外部程序存儲器訪問允許端/編程電源輸入端。接地時,單片機從地址為0000H~FFFFH的外部程序內存中讀取代碼。接到VCC,單片機先從內部程序內存中讀取代碼,然后自動轉向外部。在對Flash內存編程時,這條引腳用于接收12V編程電壓VPP。

3.I/O口引腳

P0.X~P3.X是51單片機與外界聯系的4個8位雙向并行I/O端口,引腳分配如下:

P0.0~P0.7:P0口的8位漏極開路的雙向I/O口。P0在當作I/O用時可以推動8個LS的TTL負載。如果當引腳為低電平時(即取用外部程序代碼或數據存儲器),P0口就以多工方式提供地址總線(A0~A7)及數據總線(D0~D7)。設計者必須外加一鎖存器將端口0送出的地址栓鎖使其成為A0~A7地址,再配合P2口所送出的A8~A15地址合成一套完整的16位地址總線,而定址到64 KB的外部存儲器空間。

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

P1.0~P1.7:P1口的8位內部接有上拉電阻的準雙向I/O口。其輸出緩沖器可以驅動4個LS TTL負載,同樣地,若將端口1的輸出設為高電平,便是由此端口來輸入數據。P1.5/MOSI、P1.6/MISO和P1.7/SCK可用于對片內Flash存儲器串行編程和校驗,它們分別是串行數據輸入、輸出和移位脈沖引腳。

P3.0~P3.7:P3口的8位內部接有上拉電阻的準雙向I/O口。其輸出緩沖器可以驅動4個TTL負載,同時還具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數控制及外部數據存儲器內容的讀取或寫入控制等功能。

1.3.3 51單片機的中央處理器(CPU)

中央處理器CPU是單片機的核心,從功能上看,CPU主要由運算部件和控制部件組成。CPU功能可概括為以下三條:

1)產生控制信號;

2)控制數據傳送;

3)對輸入數據進行算術邏輯運算及位操作。

1.運算部件

運算部件是用來對數據進行算術運算和邏輯操作的執行部件,包括算術邏輯單元ALU(Arithmetic Logic Unit)、累加器ACC(Accumulator)、暫存器、程序狀態字寄存器PSW(Program Status Word)、通用寄存器和BCD碼運算調整電路等。為了提高數據處理和位操作能力,片內增加了一個通用寄存器區和一些專用寄存器,而且還包含一個布爾處理器,可以執行置位、清零、求補、取反、測試、邏輯與、邏輯或等操作,為單片機的應用提供了極大的便利。

(1)算術邏輯單元ALU

ALU是用于對數據進行算術運算和邏輯操作的執行部件,由加法器和其他邏輯電路(移位電路和判斷電路等)組成。在控制信號的作用下,它能完成“加、減、乘、除、比較”等算術運算和“與、或、異或”等邏輯運算以及循環移位操作、位操作等功能。此外,通過對運算結果的判斷,還能影響程序狀態標志寄存器的有關標志位。

(2)累加器ACC

累加器ACC是一個8位寄存器,指令助記符可簡寫為“A”,它是CPU工作中最繁忙、最活躍的一個寄存器。CPU的大多數指令,都要通過累加器ACC與其他部件交換信息。

(3)暫存器

暫存器用于暫存進入運算器之前的數據,它不能通過編程訪問。設置暫存器的目的是暫時存放某些中間過程所產生的信息,以避免破壞通用寄存器的內容。

(4)布爾(位)處理器

除對字節(Byte)進行操作外,51單片機借用PSW中的CY(進位標志位)可以直接對位(Bit)進行操作,在進行位操作時,CY就類似進行字節操作的ACC用作數據源或存放結果。通過位操作指令可以實現置位、清零、取反以及位邏輯運算等操作。

運算部件中的程序狀態字寄存器PSW地位特殊,下面單獨介紹。其他專用寄存器則放在存儲器結構中逐一介紹。

(5)程序狀態字寄存器

程序狀態字(PSW)寄存器是一個8位的寄存器,它包含了各種程序狀態信息,相當于一個標志寄存器,以供程序查詢和判別。PSW的標志見表1-3。

表1-3 PSW的標志

此寄存器各位的含義如下(其中PSW.1未用)。

CY(PSW.7):進位標志。在執行某些算術和邏輯指令時,它可以被硬件或軟件置位或清零。CY在布爾處理機中被認為是位累加器,其重要性相當于一般中央處理器中的累加器A。

AC(PSW.6):輔助進位標志。當進行加法或減法操作而產生由低4位數向高4位數進位或借位時,AC將被硬件置位,否則就被清零。AC被用于BCD碼調整,詳見指令系統中的“DA A”指令。

F0(PSW.5):用戶標志位。F0是用戶定義的一個狀態標記,用軟件來使它置位或清零。該標志位狀態一經設定,可用軟件測試F0,以控制程序的流向。

RS1、RS0(PSW.4、PSW.3):寄存器區選擇控制位。可以用軟件來置位或清零以確定工作寄存器區。RS1、RS0與寄存器組的對應選擇關系見表1-4。

表1-4 工作寄存器組選擇

OV(PSW.2):溢出標志。帶符號加減運算中,當超出了累加器A所能表示的符號數有效范圍(-128~+127)時,即產生溢出,OV=1,表明運算結果錯誤。如果OV=0,表明運算結果正確。

P(PSW.0):奇偶標志。每個指令周期都由硬件來置位或清零,以表示累加器A中1的位數的奇偶數。若1的位數為奇數,P置1,否則P清零。P標志位對串行通信中的數據傳輸有重要的意義,在串行通信中常用奇偶校驗的辦法來檢驗數據傳輸的可靠性。在發送端可根據P的值對數據進行奇偶置位或清零。

PSW.1:程序狀態字的第1位,該位的含義沒有定義,若用戶要使用這一位,可直接使用PSW.1的位地址。

PSW寄存器除具有字節地址外,還具有位地址,因此,可以對PSW中的任一位進行操作,這無疑大大提高了指令執行的效率。

2.控制部件

控制部件是用來統一指揮和控制計算機進行工作的部件。其功能是從存儲器中逐條獲取指令,進行指令譯碼,并通過定時和控制電路,在規定的時刻發出各種操作所需的全部內部控制信息及CPU外部所需的控制信號,使各部分按照一定的節拍協調工作,完成指令所規定的各種操作。它由指令部件、時序部件和操作控制部件組成。

(1)指令部件

指令部件是一種能對指令進行分析、處理并產生控制信號的邏輯部件,也是控制器的核心。通常,它由程序計數器PC(Program Counter)、指令寄存器IR(Instruction Register)和指令譯碼器等組成。這三個寄存器用戶都不能直接訪問。

程序計數器PC用于存放CPU要執行的下一條指令的地址。程序中的每條指令都有自己的存放地址(指令都存放在ROM區的某一單元),CPU要執行某條指令時,就把該條指令的地址碼(即PC中的值)送到地址總線,從ROM中讀取指令,當PC中的地址碼被送上地址總線后,PC會自動指向CPU要執行的下一條指令的地址。執行指令時,CPU按PC的指示地址從ROM中讀取指令,所讀取指令碼送入指令寄存器中,由指令譯碼器對指令進行譯碼,并發出相應的控制信號,從而完成指令所指定的操作。

指令寄存器IR是一個8位寄存器,用于暫時存放指令代碼,等待譯碼。

指令譯碼器用于對送入指令譯碼器中的指令進行譯碼。所謂“譯碼”,就是把指令轉變成執行此指令所需要的電信號。當指令送入譯碼器后,由譯碼器對該指令進行譯碼,根據譯碼器輸出的信號,CPU控制電路定時產生執行該指令所需的各種控制信號,使單片機能夠正確執行程序所需要的各種操作。

(2)時序部件

時序部件由時鐘電路和脈沖分配器組成,用于產生操作控制部件所需的時序信號。產生時序信號的部件稱為“脈沖發生器”或“時序系統”,它由一個振蕩器和一組計數分頻器組成。振蕩器是一個脈沖源,輸出頻率穩定的脈沖,也稱為“時鐘脈沖”,為CPU提供時鐘基準。時鐘脈沖經過進一步的計數分頻,產生所需的節拍信號或更長時間的機器周期信號。

(3)操作控制部件

操作控制部件可以為指令譯碼器的輸出信號配上節拍電位和節拍脈沖,也可以和外來的控制信號組合,共同形成相應的微操作控制序列信號,以完成規定的操作。

1.3.4 存儲器結構

一般微機通常是程序和數據共用一個存儲空間,即ROM和RAM統一編址,屬于“馮·諾依曼”(Von Neumann)結構。而單片機的存儲器組織結構則把程序存儲空間和數據存儲空間嚴格區分開來,即程序存儲器ROM和數據存儲器RAM分開編址,屬于“哈佛”(Harvard)結構。

程序存儲器ROM用于固化程序、常數和數據表。數據存儲器用于存放程序運行中產生的各種數據并用于堆棧等。

51單片機存儲器結構如圖1-6所示。

圖1-6 51單片機存儲器結構

a)程序存儲器(ROM)b)片內數據存儲器(內RAM)c)片外數據存儲器(外RAM)

51單片機存儲器在物理結構上分成四個存儲空間:片內程序存儲器、片外程序存儲器、片內數據存儲器和片外數據存儲器。從用戶使用的角度,即從邏輯上考慮,則有三個存儲空間:片內外統一編址的64KB程序存儲器地址空間(0000H ~ FFFFH)、256B的片內數據存儲器地址空間(00H ~ FFH)及片外數據存儲器地址空間(0000H ~ FFFFH)。

CPU在訪問三個不同的邏輯空間時,通過采用不同形式的指令,來產生相應的存儲器選通信號,訪問程序存儲器使用MOVC指令、訪問片內數據存儲器使用MOV指令、訪問片外數據存儲器使用MOVX指令。

1.程序存儲器

(1)51單片機程序存儲器ROM

它用于存放編好的程序、常數或表格。在正常工作時只可讀不可寫,掉電后數據不丟失。

1)片內具有4KB的Flash結構的電可擦除只讀存儲器,與INTEL公司早期產品的紫外線擦除的EPROM結構相比,使用更靈活更方便。

2)外部可以擴展64KB的ROM,以滿足一些大程序的需要。建議用戶盡量不要外擴ROM,因為當擴展外部ROM的時候,系統要占據單片機的P0口、P2口及P3口的部分口線作為總線。所以在大多數的應用場合,盡量選擇片內的Flash內存的容量能夠滿足實際需要單片機型號,這樣不僅可以節省額外的硬件投資、節省單片機的口線資源,更重要的是片內Flash中的程序在下載、燒寫時通過“加密”可以得到保護。只有當程序特別大,內部空間無法滿足要求時才選擇擴展外部ROM。

3)程序內存最低端的地址可以在片內Flash中或在外部ROM中。可以通過單片機/EA的引腳的電平來選擇。

例如,在帶有4 KB片內Flash的51單片機中,如果把引腳連到VCC,當地址為0000H~0FFFH時,則訪問內部Flash;當地址為1000H~FFFFH時,將自動轉向外部程序內存。

如果端接地,則只訪問外部程序內存,不管是否存在內部Flash內存。

(2)51單片機程序存儲器的管理

1)每個ROM單元(Byte)對應一個唯一的16bit的地址編碼(Address)。

2)CPU要到某個ROM單元去取指令,是通過把地址編碼寫入16位的程序計數器PC來實現的,因此AT89系列單片機地址的編碼范圍(通常稱為尋址范圍)為:

3)系統復位后,PC的初始值為0000H,以后的取值是CPU根據用戶程序的運行流程自動裝載的(程序順序執行時,PC值自動加1;執行轉移指令、子程序調用和中斷服務程序時,PC值分別等于轉移的目標地址、子程序或中斷服務程序的入口地址)。

(3)51單片機程序存儲器的分配

程序內存的某些單元是保留給系統使用的,這幾個單元的配置如圖1-7所示。從圖1-7可知,單片機復位后,程序計數器PC的內容為0000H,所以CPU總是從0000H單元開始執行程序。

圖1-7 程序內存的復位及中斷入口配置

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

中斷響應后,程序指針PC將自動根據中斷類型指向這些入口地址的某一個,CPU就從這里開始執行中斷服務子程序。

因此從0003H單元開始的這段區域應該保留給中斷使用,所以程序設計時在0000H~0002H單元放置一條轉移指令,跳過這段區域,直接轉到系統主程序,除非系統不使用中斷,主程序才可以覆蓋這段區域。

2.片內數據存儲器

單片機的片內數據存儲器結構如圖1-8所示。片內數據存儲器地址范圍是00H~FFH,只有256B,這里僅介紹低128字節區,高128字節區由于被特殊功能寄存器占有,故單獨列出介紹。低128字節區主要分為三個區域:工作寄存器組區、位尋址區和用戶RAM區。

圖1-8 片內數據存儲器的結構

(1)工作寄存器區

最低32個單元(地址為00H~1FH)為4個通用工作寄存器組。每個寄存器組含有8個8位寄存器,編號為R0~R7。

程序狀態字PSW中的2位RS0、RS1用來確定當前采用哪一個工作寄存器組,其對應關系見前面的表1-4。

在某一時刻只能選用其中的一組寄存器工作,系統復位后,指向工作寄存器組0。如果用戶程序不需要4個工作寄存器區,則不用的工作寄存器單元可以作一般的RAM使用。

(2)位尋址區

內部RAM區中的20H~2FH單元(16B)可供位尋址,這16個單元共有128位,每位均可直接尋址,其位地址范圍為00H~7FH,具體情況見表1-5。

表1-5 RAM位尋址區地址表

(續)

這些位地址有兩種表示方式:一種是采用位地址形式,即00H~7FH;

一種是用單元地址(20H~2FH).位數方式表示。例如,位地址00H~07H也可表示為20H.0~20H.7。

(3)用戶RAM區

30H~7FH共有80個字節單元,為字節尋址的內部RAM區,可供用戶作為數據存儲區。這一區域的操作指令非常豐富,數據處理方便靈活,是非常寶貴的資源。但是,如果堆棧指針初始化時設置在這個區域,就要留出足夠的字節單元作為堆棧區,以防止在數據存儲時,破壞了堆棧的內容。

堆棧:堆棧是按先進后出或后進先出原則進行讀/寫的特殊RAM區域。51單片機的堆棧區是不固定的,原則上可設置在內部RAM的任意區域內。實際使用時要根據對片內RAM各功能區的使用情況而靈活設置,應避開工作寄存器區、位尋址區和用戶實際使用的數據區,一般將其設在2FH地址單元以后的區域。

堆棧的作用:主要用在子程序調用或中斷處理過程中,用于保護斷點和現場,實現子程序或中斷的多級嵌套處理。在CPU響應中斷或調用子程序時,會自動地將斷點處的16位返回地址壓入堆棧。在中斷服務程序或子程序結束時,返回地址會自動由堆棧彈出,并放回到程序計數器PC中,使程序從原斷口處繼續執行下去。

堆棧除了用于保護斷點處的返回地址外,還可以用于保護其他一些重要信息,要注意的是,必須按照“后進先出”的原則存取信息。堆棧也可以作為特殊的數據交換區使用。

確定堆棧的位置:棧頂的位置由專門設置的堆棧指針SP指出。

51單片機的SP是8位寄存器,堆棧屬向上生長的,當數據壓入堆棧時,SP的內容自動加1,作為本次進棧的指針,然后再存入數據。SP的值隨著數據的存入而增加。當數據從堆棧彈出之后,SP的值隨之減少。復位時,SP的初值為07H,用戶在初始化程序中可以給SP賦新的初值。

(4)特殊功能寄存器

內部RAM的高128字節區是給特殊寄存器使用的,因此也稱之為專用寄存器區,其單元地址為80H~FFH。因為這些寄存器的功能已作專門規定,所以稱其為專用寄存器或特殊功能寄存器(Special Function Registers),簡稱SFR。51單片機的SFR的總數為26個,僅占用了80H~0FFH中的很小一部分。SFR是單片機片內資源的控制指揮單元,單片機內部不管集成了多少外圍接口部件和功能單元,都是通過SFR進行控制和管理的,因此學習任何一個單片機的功能部件的使用,一定要了解與之相關的SFR,并弄清通過這些SFR如何去控制用戶所使用的功能部件。

51系列單片機內的I/O鎖存器、定時器、串行口數據緩沖器以及各種控制寄存器和狀態寄存器都以特殊功能寄存器的形式出現。它們離散地分布在80H~0FFH的地址空間范圍內,具體分布見表1-6。

表1-6 51單片機的SFR在80H~0FFH的離散分布

表1-6列出了51單片機所有的特殊功能寄存器及其地址和初始值。字節地址能被8整除的專用寄存器都可以實現位尋址,個別不能被8整除的專用寄存器也可以實現位尋址。

SFR的使用方法如下:

1)從表1-6可以看出,80H~FFH這128B并不是所有的地址都定義了SFR。在這個區域當中,除了SFR之外剩余的空閑單元,用戶不得使用。讀這些地址,一般將得到一個隨機數據;寫入的數據將會無效。

2)必須使用直接尋址方式對SFR進行訪問,可使用寄存器名稱(是它的符號地址)或地址。

例如:0EOH——累加器的地址;

ACC——累加器的名稱。

3)具有位地址和位名稱的SFR才可以進行位尋址,位地址有以下4種表示形式:

① 直接使用位地址表示:

例如:0D7H —— PSW最高位的位地址。

② 使用位名稱表示:

例如:CY —— PSW最高位的位名稱。

③ 使用SFR字節地址和位形式表示:

例如:0D7H.7—— PSW字節地址.最高位。

④ 使用SFR名稱和位形式表示:

例如:PSW.7—— PSW名稱.最高位。

3.片外數據存儲器

片外數據存儲器的P0端口作為RAM的地址/數據總線,當外部地址空間小于FFH時,只需P0口作為地址總線即可,P2口可以作為一般的I/O使用。當外部地址空間大于FFH時,則由P2端口傳送高8位地址。對片外數據存儲器的訪問,使用MOVX的間接尋址指令,以區別對內部RAM(片內用MOV)的訪問,同時自動產生讀/寫控制信號RD和WR。

片外RAM做通用RAM使用,主要存放大量采集的或接收的數據、運算的中間數據、最后結果和堆棧數據等。

使用外部RAM同樣是要付出占用端口資源為代價的,所以一般情況下不提倡使用外部RAM。

4.地址空間

(1)片外總線結構

從51單片機引腳可以看出,除了電源、復位、時鐘輸入以及I/O口外,其余的引腳都是為實現系統擴展而設置的。這些引腳構成了片外三總線結構,如圖1-9所示。

1)地址總線(AB)。地址總線的寬度是16位,因此可以尋址的范圍是64KB。采用分時復用技術,可以對外部64KB的數據存儲器或程序存儲器直接尋址。它由P0口提供16位地址總線的低8位(A0~A7),由P2口提供地址總線的高8位(A8~A15)。

2)數據總線(DB)。數據總線的寬度是8位,它由P0口提供。

3)控制總線(CB)。控制總線由P3口的第二功能(RXD、TXD、、T0、T1、)和4根獨立的控制線(RST、EA、ALE、PSEN)組成。

(2)程序存儲器地址空間

程序存儲器用于存放編好的程序和表格常數。程序存儲器通過16位程序計數器尋址,尋址能力為64 KB,這使得指令能在64KB地址空間內任意跳轉。51單片機ROM的地址范圍為0000H~0FFFH。

圖1-9 51系列單片機片外總線結構圖

(3)數據存儲器地址空間

1)片內RAM

① 工作寄存器區:51單片機的前32個單元(地址00H~1FH)稱為寄存器區。通過對特殊功能寄存器PSW中RS1、RS0兩位的編程設置,可選擇任一寄存器組為工作寄存器組,方法見前面表1-4。

② 位尋址區:字節地址20H到2FH稱為位地址區,共有16B,計128位,每位都有相應的位地址,位地址范圍為00H~7FH,見前面表1-5。位尋址區有兩種訪問方式:一種是按字節訪問;另一種是通過位尋址,對位尋址區128位進行位操作。

③ 便箋區:30H~7FH,便箋區共有80個RAM單元,用于存放用戶數據或作堆棧區使用。51單片機對便棧區中每個RAM單元是按字節存取的。

④ 特殊功能寄存器(26個):51單片機片內高128B RAM中,有26個特殊功能寄存器(SFR),它們離散地分布在80H~FFH的RAM空間中。訪問特殊功能寄存器只允許使用直接尋址方式。特殊功能寄存器見表1-7。

表1-7 特殊功能寄存器

(續)

2)片外RAM

51單片機構成的應用系統當片內RAM不夠用時,可在片外部擴充數據存儲器。51單片機給用戶提供了可尋址64KB(0000H~FFFFH)的外部擴充RAM的能力,至于擴充多少RAM,則根據用戶實際需要來確定。

1.3.5 復位電路和時鐘電路

復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執行程序。除了進入系統的正常初始化之外,當由于程序運行出錯或操作錯誤使系統出現死機時,也必須對單片機進行復位,使其重新從頭開始工作。

系統剛接通電源或重新啟動時均進入復位狀態。當系統處于正常工作狀態時,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以實現可靠復位,如圖1-10所示,其中TCY為機器周期,等于12個時鐘周期。復位后ALE、PSEN均為高電平,各寄存器和程序計數器PC的狀態見表1-8。

圖1-10 復位電路示意圖

表1-8 復位后寄存器的初始狀態

單片機的外部復位電路有上電自動復位、按鍵復位以及外接復位芯片電路等方式。

1.上電自動復位電路自動復位電路

當接通電源的瞬間,RST端與VCC同電位,隨著電容上的電壓逐漸上升,RST端的電壓逐漸下降,于是在RST端便形成了一個正脈沖,其持續時間取決于RC電路的時間常數,單片機在正常工作時,高電平持續2個時鐘即可實現系統有效地復位,注意,上電時高電平要維持10ms以上,如圖1-11所示。

2.按鍵復位電路

圖1-12是51單片機的上電復位及按鍵復位電路。上電復位過程同上。當單片機工作過程中需要復位時,按下復位鍵,復位端RST通過200Ω的電阻與VCC電源接通,使RST引腳為高電平。復位按鍵彈起后,RST端經10kΩ的電阻接地,完成復位過程。圖中VCC是單片機的供電電壓,一般為+5V。

圖1-11 51單片機的上電復位電路

圖1-12 51單片機的上電復位及按鍵復位電路

3.外接復位芯片電路

為了保證單片機可靠地復位,有時需要外接復位芯片,特別是當單片機處于間歇工作情況的時候,單片機需要頻繁的復位,例如,在計算機監測系統中,電池供電的單片機系統由主計算機控制,平時單片機系統處于斷電狀態(節省電能),當主計算機接通單片機系統電源后,單片機需要可靠的上電復位進入工作狀態。為提高復位的可靠性,可選用專用的復位芯片。

1.3.6 時鐘電路及時序

1.時鐘電路

51單片機的時鐘電路主要分為內部振蕩方式和外部振蕩方式兩種接法。

(1)內部振蕩方式

51單片機中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構成并聯振蕩電路。對外接電容C1、C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩定性、起振的難易程度及溫度穩定性。如果使用石英晶體,推薦使用30pF+/-10pF,而如使用陶瓷諧振器建議選擇40pF+/-10pF。內部振蕩方式接法如圖1-13所示。

(2)外部振蕩方式

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

圖1-13 內部振蕩方式

圖1-14 外部振蕩方式

圖1-15為51單片機采用內部振蕩方式的時鐘電路框圖。

圖1-15 51單片機的時鐘電路框圖

2.CPU時序

單片機的時序是指CPU在執行指令時所需控制信號的時間順序。時序信號是以時鐘脈沖為基準產生的。CPU發出的時序信號有兩類:一類用于片內各功能部件的控制,由于這類信號在CPU內部使用,用戶無須了解;另一類信號通過單片機的引腳送到外部,用于片外存儲器或I/O端口的控制,這類時序信號對單片機系統的硬件設計非常重要。為了便于對CPU時序進行分析,人們按指令的執行過程規定了幾種周期,即時鐘周期、狀態周期、機器周期和指令周期,也稱為時序定時單位。

1)時鐘周期:時鐘周期也稱振蕩周期,即振蕩器的振蕩頻率fosc的倒數,它是時序中最小的時間單位。單片機在工作時,它是由內部振蕩器產生或由外部直接輸入的送到內部控制邏輯單元的時間信號的周期。

2)狀態周期:時鐘周期經2分頻后成為內部的時鐘信號,用作單片機內部各功能部件按序協調工作的控制信號,稱為狀態周期,用S表示。一個狀態周期包含兩個時鐘周期,前半狀態周期對應的時鐘周期定義為P1,后半周期對應的時鐘周期定義為P2。一般情況下,CPU中的算術邏輯運算在P1有效期間完成,在P2有效期間則進行內部寄存器間的信息傳送。

3)機器周期:執行一條指令的過程可分為若干個階段,每一階段完成一項規定的操作,完成一項規定操作所需要的時間稱為一個機器周期。規定一個機器周期有12個時鐘周期,也就是說一個機器周期共包含12個振蕩脈沖,即機器周期就是振蕩脈沖的12分頻。

即:1個機器周期=6個狀態周期=12個時鐘周期。

例如:有一個單片機系統,它的fosc=12MHz,則時鐘周期為1/12μs,狀態周期為1/6μs,機器周期為1μs。

圖1-16為51單片機各種周期的相互關系。

圖1-16 51單片機各種周期的相互關系

4)指令周期:指令周期定義為執行一條指令所用的時間。一般由若干個機器周期組成。指令不同,所需要的機器周期數也不同。對于一些簡單的單字節指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼,不再需要其他的機器周期。對于一些比較復雜的指令,例如轉移指令、乘除運算則需要兩個或兩個以上的機器周期。

主站蜘蛛池模板: 桂平市| 阿克陶县| 耒阳市| 客服| 桦川县| 枣阳市| 衡阳县| 徐汇区| 英超| 类乌齐县| 石屏县| 都匀市| 昭通市| 百色市| 福州市| 陆良县| 固镇县| 澳门| 罗城| 绍兴县| 汶上县| 大名县| 汝南县| 鲜城| 沂源县| 华蓥市| 满洲里市| 正阳县| 同德县| 特克斯县| 张家口市| 石狮市| 民乐县| 寿光市| 威信县| 遂川县| 高要市| 禄丰县| 高雄市| 吴旗县| 山西省|