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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章51系列單片機的硬件結構12.1

51系列單片機簡介2.2

51單片機的內部結構與引腳信號2.3微處理器2.4存儲器2.5并行輸入/輸出接口2.6定時器/計數器2.7串行輸入/輸出口2.8

51單片機的中斷系統(tǒng)2.9復位狀態(tài)及復位電路2.10

51單片機的低功耗方式

51系列單片機是具有8051內核體系結構、引腳信號和指令系統(tǒng)完全兼容的單片機的總稱。本章主要從應用角度介紹51系列單片機的硬件結構特性。站在應用角度學習單片機的硬件結構時,主要應抓住單片機的供應狀態(tài),即單片機提供給用戶哪些可用資源以及怎樣合理地使用這些資源。2.1

51系列單片機簡介

51系列單片機是8051系列單片機的簡稱,是指MCS51系列單片機和其他公司的8051派生產品。2.1.1

MCS51系列單片機

MCS51系列單片機最早是由Intel公司推出的通用型單片機。MCS51系列單片機產品可分為兩大系列:51子系列和52子系列。2.1.2

8051派生產品

8051派生產品是各個廠家以8051為基本內核而推出的單片機產品。這些派生產品在8051內核基礎上增加了存儲器、通信接口和實時控制部件的數量與種類,增強了8051單片機的調試與應用能力。這些增強型的8051單片機產品都是基于CMOS工藝的,通常稱為80C51系列單片機。例如,ATMEL公司的AT89C52、AT89C2051就屬于80C51系列單片機。2.2

51單片機的內部結構與引腳信號2.2.1

51單片機的基本組成

51系列單片機的內部結構框圖如圖2.1所示。圖2.151單片機內部結構框圖從圖2.1可看出,51單片機組成結構中包含運算器、控制器、片內存儲器、4個并行I/O口、串行口、定時/計數器、中斷系統(tǒng)、振蕩器等功能部件。圖中SP是堆棧指針寄存器;PC是程序計數器;PSW是程序狀態(tài)字寄存器;DPTR是數據指針寄存器。2.2.2

51單片機的引腳信號雙列直插(DIP)式封裝的51單片機芯片一般為40條引腳,其引腳示意及功能分類如圖2.2所示。圖2.251單片機引腳及總線結構(a)管腳圖;(b)引腳功能分類各引腳功能說明如下:

1.主電源引腳

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

VSS(20腳):接+5V電源地端。

2.外接晶體引腳

XTAL1(19腳):接外部石英晶體的一端。

XTAL2(18腳):接外部石英晶體的另一端。

3.輸入/輸出引腳

(1)P0口(39~32腳):P0.0~P0.7統(tǒng)稱為P0口。在不接片外存儲器與不擴展I/O口時,可作為準雙向輸入/輸出口。在接有片外存儲器或擴展I/O口時,P0口分時復用為低8位地址總線和雙向數據總線。

(2)P1口(1~8腳):P1.0~P1.7統(tǒng)稱為P1口,可作為準雙向I/O口使用。對于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時/計數器2的計數脈沖輸入端T2;P1.1可用作定時/計數器2的外部控制端T2EX。

(3)P2口(21~28腳):P2.0~P2.7統(tǒng)稱為P2口,一般可作為準雙向I/O口使用;在接有片外存儲器或擴展I/O口且尋址范圍超過256B時,P2口用作高8位地址總線。

(4)P3口(10~17腳):P3.0~P3.7統(tǒng)稱為P3口。除作為準雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。P3口的第二功能見表2.1。表2.1P3口第二功能表

4.控制線

(1)ALE/PROG(30腳):地址鎖存有效信號輸出端。在訪問片外程序存儲器期間,ALE以每機器周期兩次進行信號輸出,其下降沿用于控制鎖存P0輸出的低8位地址;在不訪問片外程序存儲器期間,ALE端仍以上述頻率(振蕩頻率fosc

的1/6)出現,可作為對外輸出的時鐘脈沖或用于定時目的。但要注意,在訪問片外數據存儲器期間,ALE脈沖會跳空一個,此時作為時鐘輸出就不妥了(詳見2.3.3節(jié)CPU時序)。對于片內含有EPROM的機型,在編程期間,該引腳用作編程脈沖PROG的輸入端。

(2)PSEN(29腳):片外程序存儲器讀選通信號輸出端,低電平有效。在從外部程序存儲器讀取指令或常數期間,在每個機器周期內該信號兩次有效,以通過數據總線P0口讀回指令或常數。在訪問片外數據存儲器期間,PSEN信號將不出現。

(3)RST/VPD(9腳):RST即RESET,VPD為備用電源,該引腳為單片機的上電復位或掉電保護端。當單片機振蕩器工作時,該引腳上出現持續(xù)兩個機器周期的高電平,就可實現復位操作,使單片機回復到初始狀態(tài)。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復位。

(4)EA/VPP(31腳):EA為片外程序存儲器選用端。該引腳有效(低電平)時,只選用片外程序存儲器,否則單片機上電或復位后選用片內程序存儲器。對于片內含有EPROM的機型,在編程期間,此引腳用作21V編程電源VPP的輸入端。2.3微處理器微處理器又稱CPU,是單片機內部的核心部件,它決定了單片機的主要功能特性。CPU由運算部件和控制部件兩大部分組成。2.3.1運算部件運算部件是以算術邏輯單元ALU為核心,再加上累加器ACC、寄存器B、暫存器、程序狀態(tài)字PSW等部件而構成的。

1.算術邏輯單元ALU與累加器ACC、寄存器B算術邏輯單元不僅能完成8位二進制的加、減、乘、除、加1、減1及BCD加法的十進制調整等算術運算,還能對8位變量進行邏輯“與”、“或”、“異或”、循環(huán)移位、求補、清零等邏輯運算,并具有數據傳輸、程序轉移等功能。

2.程序狀態(tài)字程序狀態(tài)字PSW是一個8位標志寄存器,它保存指令執(zhí)行結果的特征信息,以供程序查詢和判別。其各位的含義如下:

C:進位標志位C(PSW.7):在執(zhí)行某些算術操作類、邏輯操作類指令時,可被硬件或軟件置位或清零。它表示運算結果是否有進位或借位。如果在最高位有進位(加法時)或有借位(減法時),則C=1,否則C=0。

AC:輔助進位(或稱半進位)標志位AC(PSW.6):它表示兩個8位數運算,低4位有無進/借位的狀況。當低4位相加(或相減)時,若D3位向D4位有進位(或借位)時,則AC=1,否則AC=0。在BCD碼運算的十進制調整中要用到該標志。

F0:用戶自定義標志位F0(PSW.5):用戶可根據自己的需要對F0賦予一定的含義,通過軟件置位或清零,并根據F0=1或0來決定程序的執(zhí)行方式。

RS1、RS0:工作寄存器組選擇位RS1、RS0(PSW.4、PSW.3):可用軟件置位或清零,用于選定當前使用的4個工作寄存器組中的某一組(詳見2.4節(jié))。

OV:溢出標志位OV(PSW.2):做加法或減法時,由硬件置位或清零,以指示運算結果是否溢出。OV=1反映運算結果超出了累加器的數值范圍(無符號數的范圍為0~255),以補碼形式表示一個有符號數的范圍為(-128~+127)。做無符號數的加法或減法時,OV的值與進位位C的值相同;在做有符號數加法時,如最高位、次高位之一有進位,或做減法時,如最高位、次高位之一有借位,則OV被置位,即OV的值為最高位和次高位的異或(C7⊕C6)。執(zhí)行乘法指令MULAB也會影響OV標志,積大于255時,OV=1,否則OV=0。

執(zhí)行除法指令DIVAB也會影響OV標志,如B中所放除數為0時,OV=1,否則OV=0。

P:奇偶標志位P(PSW.0):在執(zhí)行指令后,單片機根據累加器A中1的個數的奇偶性自動給該標志置位或清零。若A中1的個數為奇數,則P=1,否則P=0。該標志對串行通信的數據傳輸非常有用,通過奇偶校驗可檢驗傳輸的可靠性。

3.布爾處理機布爾處理機(即位處理)是51單片機ALU所具有的一種功能。單片機指令系統(tǒng)中的位處理指令集(17條位操作指令),存儲器中的位地址空間,以及借用程序狀態(tài)寄存器PSW中的進位標志CY作為位操作“累加器”,構成了51單片機內的布爾處理機。2.3.2控制部件及振蕩器控制部件是單片機的神經中樞,它包括定時和控制電路、指令寄存器、譯碼器以及信息傳送控制等部件。單片機的定時控制功能是通過一系列時序信號來完成的。51單片機的時序信號有兩類:一類用于片內各功能部件的控制,這類信號對用戶來說是沒有意義的;另一類用于片外存儲器或I/O端口的控制,通過單片機的引腳送到片外,這部分時序信號對于分析或設計硬件電路是至關重要的。單片機的時序定時單位共有4個,從小到大依次是振蕩周期(節(jié)拍)、狀態(tài)周期、機器周期和指令周期,如圖2.3所示。圖2.351單片機時序信號產生邏輯圖

1.振蕩周期

振蕩脈沖是單片機的一個基準定時信號,其他定時信號是在它的基礎上產生的。振蕩脈沖信號由振蕩器產生。51單片機片內有一個高增益反相放大器,其輸入端(XTAL1)、輸出端(XTAL2)對外,只要外接作反饋原件的晶振體(呈感性)與電容組成的并聯諧振回路,就構成一個自激振蕩器,如圖2.3所示。振蕩器的頻率主要取決于晶體的振蕩頻率,一般晶體可在1.2~12?MHz之間任選。電容C1、C2的值有微調作用,通常取30?pF左右。振蕩脈沖信號也可由外部振蕩電路產生,仍通過XTAL1和XTAL2接入,但不同工藝制造的單片機芯片,其接法有所不同,見表2.2。

2.狀態(tài)周期

振蕩脈沖信號不被系統(tǒng)直接使用,經2分頻形成的狀態(tài)周期信號,才作為系統(tǒng)使用的時鐘信號。即2個振蕩周期為一個狀態(tài)周期,稱為時鐘周期,用S表示。2個振蕩周期作為2個節(jié)拍分別稱為節(jié)拍P1和節(jié)拍P2。在狀態(tài)周期的前半周期P1期間,通常完成算術邏輯操作;在后半周期P2期間,一般進行內部寄存器之間的傳輸。

3.ALE周期信號

狀態(tài)周期經3分頻(振蕩周期的6分頻)后形成ALE周期信號。單片機訪問片外程序存儲器(取指令)、片外數據存儲器或I/O端口(讀/寫數據)控制地址鎖存。ALE在一個機器周期兩次有效。ALE是一個控制信號,不屬于內部定時單位信號,但可作為外部定時信號使用。

4.機器周期

狀態(tài)周期經6分頻(振蕩周期的12分頻)形成機器周期定時信號。機器周期是單片機指令操作的定時單位。如單周期指令在一個機器周期內完成指令操作;雙周期指令在2個機器周期內完成指令操作。一個機器周期包含6個狀態(tài)周期,用S1、S2、…、S6表示,共12個節(jié)拍,依次可表示為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。單片機執(zhí)行一條指令的各種內部微操作,都在規(guī)定的狀態(tài)周期的規(guī)定節(jié)拍發(fā)生。如ALE在一個機器周期兩次有效發(fā)生在S1P2和S4P2,產生地址鎖存操作。振蕩頻率確定后,機器周期隨之確定。如振蕩頻率是12MHz,則一個機器周期時間就是1μs;如振蕩頻率是6MHz,則一個機器周期時間就是2μs。

5.指令周期

指令周期是最大的時序定時單位,執(zhí)行一條指令所花費的時間稱之為指令周期。指令周期用機器周期來表示。51單片機除乘法、除法是4周期指令外,其他都是單周期指令和雙周期指令。

單片機的所有操作都是在這4種定時信號控制下完成的。單片機執(zhí)行一條指令,首先到程序存儲器取出指令碼,經譯碼,由時序部件產生一系列時序信號,控制其指令操作完成。2.3.3指令操作時序

1.取片內程序存儲器(ROM)指令的執(zhí)行時序

單片機執(zhí)行一條指令要經過取指令和執(zhí)行指令兩個階段。取指令階段,把PC中的地址送地址總線,從尋址單元讀出指令操作碼和操作數。執(zhí)行階段,對指令譯碼,產生一系列控制信號完成指令操作。幾種從片內程序存儲器讀取的典型指令的執(zhí)行時序如圖2.4所示。單字節(jié)單周期指令(例如:INCA)只需進行一次讀指令操作,在一個機器周期執(zhí)行完,其時序如圖2.4(a)所示。在S1P2進行讀指令操作,因為是單字節(jié)指令,PC不加1;在S4P2仍進行讀指令操作,但讀出的仍是原指令碼,屬于一次無效操作。

雙字節(jié)單周期指令(例如:ADDA,#data)需要進行兩次讀指令操作,在一個機器周期執(zhí)行完,其時序如圖2.4(b)所示。在S1P2進行讀指令操作,PC加1;在S4P2讀指令的第二字節(jié)(本例是立即數)。不需片外存儲器數據的單字節(jié)雙周期指令(例如:INCDPTR),只需進行一次讀指令操作,在兩個機器周期執(zhí)行完,其時序如圖2.4(c)所示。兩個機器周期發(fā)生4次讀指令操作,但第一次讀指令,PC不加1,所以后三次讀指令無效。

需從片外數據存儲器取數據的單字節(jié)雙周期指令(MOVX類指令),其時序如圖2.4(d)所示。在第一個機器周期,第一次讀指令,PC不加1,第二次讀指令無效。第二個機器周期,對外部數據存儲器進行訪問,不產生讀指令操作。從S5P1~S4P1進入訪問數據存儲器操作時序。圖2.4取片內ROM的幾種典型指令的執(zhí)行時序(a)單字節(jié)單周期指令;(b)雙字節(jié)單周期指令;(c)單字節(jié)雙周期指令;(d)單字節(jié)雙周期指令從圖2.4可以看出,單片機執(zhí)行內部程序存儲器的指令,ALE在每個機器周期兩次有效,在S1P2和S4P2產生兩次讀指令操作,在指令規(guī)定的周期內由內部時序信號控制完成操作,不需要其他外部控制信號。

2.取片外程序存儲器(ROM)指令的執(zhí)行時序

單片機從片外程序存儲器取指令的執(zhí)行時序如圖2.5所示。中心線以上是不需片外數據存儲器數據的指令(不是MOVX指令)時序,中心線以下是需片外數據存儲器數據的指令(是MOVX指令)時序。圖2.5讀片外ROM指令時序從片外程序存儲器取出的不是MOVX指令,第一個機器周期取指令操作碼,第二個機器周期取指令的第二個字節(jié)是操作數。ALE、PSEN在一個機器周期兩次有效。P2口只傳送PCH的高8位地址,P0口分時傳送PCL的低8位地址和一個字節(jié)指令或程序存儲器中的數據。ALE下降沿鎖存P0口傳送的PCL中低8位地址。PSEN有效,將尋址單元的指令或數據送到P0口線。從片外程序存儲器取出MOVX指令,第一個機器周期取指令操作碼,第二個機器周期從片外數據存儲器取操作數。在第一個機器周期ALE第一次有效的下降沿鎖存P0口傳送PCL的低8位地址,P2口出現的是PCH高8位地址,PSEN有效后,從片外程序存儲器讀指令操作碼。第一個機器周期ALE第二次有效的下降沿鎖存P0口傳送DPL的低8位地址(數據存儲器的低8位地址),P2口出現的是DPH地址(片外數據存儲器的高8位地址),PSEN也不再有效,取而代之的是RD有效。從而,在第二個機器周期進行從片外數據存儲器讀取操作數的操作。在第二個機器周期的S1P2不產生有效ALE,到S4P2再產生ALE有效。由此可知,在訪問片外數據存儲器一個機器周期中ALE要輪空一個。在這種情況下,ALE用作外部時鐘就不妥了。

3.訪問片外數據存儲器(RAM)的指令時序

訪問片外RAM即是執(zhí)行MOVX指令,其時序如圖2.6所示。中心線以上是輸入數據指令(執(zhí)行MOVXA,@DPTR)的時序,中心線以下是輸出數據指令(執(zhí)行MOVX@DPTR,A)的時序。圖2.6訪問片外RAM指令時序輸入數據操作從S1P2時刻開始,ALE有效,DPL中低8位地址送P0口,DPH中高8位地址送P2口;ALE下降沿(S2P2)鎖存P0口低8位地址RD有效,P2口高8位地址同時有效;S3P2時刻P0口8位線變?yōu)楦咦锠顟B(tài);S4P1時刻有效,S4P2時刻外部RAM尋址單元的數據被送上P0口;一個機器周期結束時,完成讀操作,RD失效,P0口呈現為高阻狀態(tài),P2口高8位地址仍保持在總線上(因為P0口對輸入無鎖存能力,P2對輸出有鎖存能力),一直到下一次操作。輸出數據時序和輸入數據時序相似。相同的操作從圖中顯而易見。不同的操作有:向P0口送地址后緊接著就送要寫入的數據,在S3P2時刻P0口直接由地址狀態(tài)翻轉為數據狀態(tài);輸出用的是寫控制信號WR;一個機器周期結束時,完成寫操作,WR失效,P0口的數據仍保持在總線上(因為P0口對輸出有鎖存能力),一直到下一次操作。從上述時序圖容易看出:讀程序存儲器指令,一個機器周期ALE兩次有效;讀片存儲器指令由PSEN控制讀操作;訪問片外數據存儲器,一個機器周期ALE只有一次有效,由RD或WR控制讀或寫操作。2.4存儲器

51單片機系統(tǒng)的存儲器組織方式與通用單片機系統(tǒng)不同,程序存儲器地址空間和數據存儲器地址空間相互獨立。

51單片機存儲器從物理結構上可分為片內、片外程序存儲器(8031和8032沒有片內程序存儲器)與片內、片外數據存儲器4個部分;從功能上可分為程序存儲器、片內數據存儲器、特殊功能寄存器、位地址空間和片外數據存儲器5個部分;其尋址空間可劃分為程序存儲器、片內數據存儲器和片外數據存儲器3個獨立的地址空間。2.4.1程序存儲器

1.編址與訪問

51單片機的程序存儲器用于存儲程序代碼和一些固定表格常數。它可由只讀存儲器ROM或EPROM等組成。為了有序地讀出指令,設置了一個專用寄存器—程序計數器PC,用以存放將要執(zhí)行的指令地址。每取出指令的1個字節(jié)后,其內容自動加1,指向下一字節(jié)地址,依次使CPU從程序存儲器取指令并加以執(zhí)行。尋址程序存儲器的唯一方式是通過PC。由于51單片機的程序計數器為16位,因此,可尋址的程序存儲器地址空間為64KB。

51系列單片機從物理配置上有片內、片外程序存儲器,但作為一個編址空間,其編址規(guī)律為:先片內,后片外,片內、外連續(xù),二者一般不重疊。圖2.7給出了程序存儲器編址圖。圖2.751單片機程序存儲器編址(a)51子系列;(b)52子系列單片機執(zhí)行指令時,是從片內程序存儲器取指令,還是從片外程序存儲器取指令,這首先由單片機EA引腳電平的高低來決定。

EA=1為高電平時,先執(zhí)行片內程序存儲器的程序,當PC的內容超過片內程序存儲器地址的最大值(51子系列為0FFFH,52子系列為1FFFH)時,將自動轉去執(zhí)行片外程序存儲器中的程序;EA=0為低電平時,CPU則從片外程序存儲器中取指令。對于片內無程序存儲器的51單片機,EA引腳應接低電平。對于片內有程序存儲器的單片機,如果EA引腳接低電平,將強行執(zhí)行片外程序存儲器中的程序。此時多在片外程序存儲器中存放調試程序,以使單片機工作在調試狀態(tài)。請讀者注意:片外程序存儲器存放調試程序的部分,其編址與片內程序存儲器的編址是可以重疊的,借EA的換接可實現分別訪問?,F在以8051為內核的單片機大都帶有內部的FLASH程序存儲器,如AT89C51或AT89S51均自帶4KB的FLASH程序存儲器,還有的單片機帶有20KB甚至更大容量的程序存儲器。

2.程序的入口地址程序地址空間可由用戶根據需要任意安排使用。但有幾個地址是CPU執(zhí)行特殊程序的入口地址,用戶必須按規(guī)定存放相應程序。特殊程序的入口地址規(guī)定見表2.3。從表2.3看出,51單片機對復位后CPU執(zhí)行程序的入口地址和響應中斷后CPU執(zhí)行中斷服務程序的入口地址做了規(guī)定。當發(fā)生復位操作時,PC被自動置0000H地址,從此執(zhí)行程序。當CPU響應中斷時,PC被自動置相應中斷服務程序入口地址,從此執(zhí)行中斷服務程序。所以,要求用戶必須把監(jiān)控程序從0000H開始存放,把中斷服務程序從規(guī)定的入口地址開始存放。否則,程序執(zhí)行將會出現“走飛”現象,即不按正常的執(zhí)行流執(zhí)行。從表2.3還可以看出,入口地址互相離得很近,只隔幾個字節(jié),程序起始地址與外部中斷0的入口地址僅隔3個字節(jié),中斷服務程序之間僅隔8個字節(jié)(實際程序規(guī)模往往不止幾個字節(jié))。實際應用中,可在規(guī)定的入口地址處存放一條無條件轉移指令,使程序執(zhí)行跳轉到存放地址處執(zhí)行。這樣,就可以把各種程序按用戶自己的安排存放了。2.4.2數據存儲器

1.編址與訪問

51單片機片內、外數據存儲器是兩個獨立的地址空間,應分別單獨編址。片內數據存儲器除RAM塊外,還有特殊功能寄存器(SFR)塊。對于51子系列,前者有128個字節(jié),其編址為00H~7FH;后者也占128個字節(jié),其編址為80H~FFH;二者連續(xù)而不重疊。對于52子系列,前者有256個字節(jié),其編址為00H~FFH;后者占128個字節(jié),其編址為80H~FFH;后者與前者高128個字節(jié)的編址是重疊的,由于訪問所用的指令不同,因而并不會引起混亂。片外數據存儲器一般是16位編址。數據存儲器的編址如圖2.8所示。圖2.851單片機數據存儲器編址(a)51子系列;(b)52子系列片外數據存儲器的低256字節(jié),也可使用8位地址訪問,訪問的地址為00H~FFH。在這種情況下,地址空間與片內數據存儲器重疊,但訪問片內、外數據存儲器使用的指令是不同的,也不會引起沖突。片外數據存儲器與程序存儲器的地址空間是重疊的,但也不會發(fā)生沖突。因為它們是兩個獨立的地址空間,使用不同的指令訪問,控制信號也不同。訪問程序存儲器時,用PSEN信號選通,而訪問片外數據存儲器時,由RD(讀)和WR(寫)選通信號。

2.片內數據存儲器

片內數據存儲器在應用中是非常緊缺的資源。為了合理地使用,對低128字節(jié)RAM空間劃分了不同的功能區(qū)。圖2.9給出了51子系列單片機片內RAM的配置圖。由圖可見,片內數據存儲器劃分為工作寄存器區(qū)、位尋址區(qū)、數據緩沖區(qū)3個區(qū)域。圖2.951單片機片內RAM的配置圖

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

00H~1FH單元為工作寄存器區(qū)。工作寄存器也稱通用寄存器,用于臨時寄存8位信息。工作寄存器分成4組,每組都有8個寄存器,用R0~R7來表示。程序中每次只用1組,其它各組不工作。使用哪一組寄存器工作由程序狀態(tài)字PSW中的PSW.3(RS0)和PSW.4(RS1)兩位來選擇,其對應關系如表2.4所示。

2)位尋址區(qū)

20H~2FH單元是位尋址區(qū)。這16個單元(共計128位)的每一位都賦予了一個位地址,位地址范圍為00H~7FH。位尋址區(qū)的每一位都可當作軟件觸發(fā)器,由程序直接進行位處理。通??梢园迅鞣N程序狀態(tài)標志、位控制變量存于位尋址區(qū)內。

3)數據緩沖區(qū)

30H~7FH是數據緩沖區(qū),也即用戶RAM區(qū),共80個單元。

4)堆棧和堆棧指針堆棧是按先進后出或后進先出原則進行讀/寫的特殊RAM區(qū)域。51單片機的堆棧區(qū)是不固定的,原則上可設置在內部RAM的任意區(qū)域內。要根據對片內RAM各功能區(qū)的使用情況而靈活設置,應避開工作寄存器區(qū)、位尋址區(qū)和用戶實際使用的數據區(qū),一般設在2FH地址單元以后的區(qū)域。棧頂的位置由專門設置的堆棧指針寄存器SP指出。51單片機的SP是8位寄存器,堆棧屬向上生長型的(即棧頂地址總是大于棧底地址,堆棧從棧底地址單元開始,向高地址端延伸),如圖2.10所示。圖2.1051單片機堆棧當數據壓入堆棧時,SP的值自動加1,作為本次進棧的指針,然后再存入數據。當數據從堆棧彈出時,先讀取數據,SP值自動減1。復位時,SP的初值為07H,堆棧實際上從08H開始堆放信息,即工作寄存器區(qū)內。實際應用中,用戶在初始化程序中要給SP重新賦值,以規(guī)定堆棧的初始位置,即棧底位置。

3.特殊功能寄存器特殊功能寄存器(SFR,SpecialFunctionRegisters)又稱為專用寄存器,專用于控制、管理片內算術邏輯部件、并行I/O口、串行I/O口、定時器/計數器、中斷系統(tǒng)等功能模塊的工作。用戶在編程時可以置數設定,卻不能自由移作它用。在51子系列單片機中,各專用寄存器(PC例外)與片內RAM統(tǒng)一編址,且作為直接尋址字節(jié),可直接尋址。除PC外,51子系列有18個專用寄存器,其中3個為雙字節(jié)寄存器,共占用21個字節(jié);52子系列有21個專用寄存器,其中5個為雙字節(jié)寄存器,共占用26個字節(jié)。按地址排列的各特殊功能寄存器的名稱、表示符、地址等如表2.5所示。

必須注意:在SFR塊的地址空間80H~FFH中,僅有21個(51子系列)或26個(52子系列)字節(jié)作為特殊功能寄存器離散分布在這128個字節(jié)范圍內。其余字節(jié)無定義,但用戶不能對這些字節(jié)進行讀/寫操作。若對其進行訪問,則將得到一個不確定的隨機數,因而是沒有意義的。2.5并行輸入/輸出接口

51系列單片機有4個8位并行輸入/輸出接口:P0、P1、P2和P3口。這4個口既可以并行輸入或輸出8位數據,又可以按位使用,即每1位均能獨立作輸入或輸出用。每個口的功能雖有所不同,但都具有1個鎖存器(即特殊功能寄存器P0~P3)、1個輸出驅動器和2個(P3口為3個)三態(tài)緩沖器。下面分別介紹各口的結構、原理及功能。2.5.1P0口

1.P0口結構

P0口是1個三態(tài)雙向口,可作為地址/數據分時復用口,也可作為通用I/O接口。其1位的結構原理如圖2.11所示。P0口由8個這樣的電路組成。鎖存器起輸出數據鎖存作用,8個位鎖存器構成了特殊功能寄存器P0;場效應管(FET)V1、V2組成輸出驅動器,以增大帶負載能力;三態(tài)門1是引腳輸入緩沖器;三態(tài)門2是讀鎖存器端口緩沖器;與門3、反相器4及模擬轉換開關構成了輸出控制電路。圖2.11P0口1位內部結構

2.地址/數據分時復用功能

當P0口作為地址/數據分時復用總線時,可分為兩種情況:一種是從P0口輸出地址或數據,另一種是從P0口輸入數據。從P0口輸出地址或數據信號時,單片機內部產生一個高電平控制信號(邏輯1),控制轉換開關MUX把反相器4的輸出端與V1接通,同時把與門3打開。當輸出地址或數據為“1”時,經反相器4使V1截止,而經與門3使V2導通,P0.x引腳上出現相應的高電平“1”;當輸出地址或數據為“0”時,經反相器4使V1導通而V2截止,引腳上出現相應的低電平“0”。這樣就將地址/數據的信號輸出。

3.通用I/O接口功能

當P0口作為通用I/O口使用,在CPU向端口輸出數據時,內部產生一個低電平控制信號(邏輯0),控制轉換開關把鎖存器??端與V1接通,同時因與門3輸出為0使V2截止,此時,輸出驅動電路呈現漏極開路。當單片機執(zhí)行數據輸出指令時,內部產生一個寫鎖存器控制信號,加在鎖存器的時鐘端CLK上,內部總線上的數據以反相的狀態(tài)反映在端,再經V1反相,輸出到P0.x線上。在內部經過了兩次反相,P0引腳上出現的數據正好是內部總線輸出的數據。當要從P0口輸入數據時,內部產生一個讀引腳控制信號,開通輸入緩沖器1,引腳數據就進入內部總線。但需注意,只有在鎖存器是“1”狀態(tài)時,才能正確輸入。當鎖存器是“1”狀態(tài)時,Q=?0,V1截止,輸入口呈現高阻抗輸入狀態(tài);當鎖存器是“0”狀態(tài)時,Q=?1,V1導通,輸入口線被箝為低電平,就不能正確輸入。這正是稱P0口為準雙向口的內在原因。當P0口作為通用I/O接口時,要注意以下四點:

(1)輸出數據時,因輸出驅動是漏極開路電路,無驅動能力,要使“1”信號正常輸出,必須外接上拉電阻。

(2)?P0口作通用I/O口使用時,是準雙向口。要正確輸入,輸入前必須用指令將鎖存器置為“1”狀態(tài)(與P1、P2、P3相同)。

(3)對輸出數據具有鎖存能力。對輸入數據無鎖存能力(與P1、P2、P3相同)。

(4)單片機復位時,鎖存器被置為“1”狀態(tài)(與P1、P2、P3相同)。

4.端口操作

51單片機對4個I/O口輸出或輸入數據時,使用數據傳送指令(MOV指令),但還有一些對端口進行功能操作的指令,如邏輯運算指令等。這些指令的執(zhí)行過程分成“讀—修改—寫”三步,即先將鎖存器數據讀入,然后進行功能操作,再將操作結果寫入鎖存器。執(zhí)行這類指令時,內部產生一個讀鎖存器控制信號,鎖存器中的數據經三態(tài)門2讀入。綜上所述,P0口在有外部擴展存儲器或I/O口時,復用為地址/數據總線,是一個真正的雙向口;在沒有外部擴展存儲器或I/O時,P0口可作為通用的I/O接口,但只是一個準雙向口。還需指出,P0口輸出具有驅動8個LSTTL負載的能力。一個LSTTL負載的驅動電流約100?μA,即P0口能提供約800?μA的負載驅動電流。2.5.2P1口

P1在51子系列單片機中,只有準雙向I/O口功能。對于52子系列單片機P1口的P1.0與P1.1,除作為通用I/O接口線外,還具有第二功能,即P1.0可作為定時器/計數器2的外部計數脈沖輸入端T2,P1.1可作為定時器/計數器2的外部控制輸入端T2EX。其1位的內部結構如圖2.12所示。它在結構上與P0口的區(qū)別在于輸出驅動部分。其輸出驅動部分由場效應管V1與內部上拉電阻組成。當其某位輸出高電平時,具有提供拉電流負載的能力,不必像P0口那樣需要外接電阻。P1口的I/O特性同P0口,也具有端口功能操作特性。P1口具有驅動4個LSTTL負載的能力。圖2.12P1口1位內部結構2.5.3

P2口

P2具有準雙向I/O口或高8位地址總線兩種功用。其1位的內部結構如圖2.13所示。接口結構中比P1口多了一個模擬轉換開關MUX和反相器3。圖2.13P2口1位內部結構當作為準雙向通用I/O口使用時,控制信號使轉換開關接向左側,鎖存器Q端經反相器3接V1,其工作原理與P1相同,也具有輸入、輸出、端口操作三種工作方式,負載能力也與P1相同。當作為外部擴展存儲器的高8位地址總線使用時,控制信號使轉換開關接向右側,由程序計數器PC來的高8位地址PCH或數據指針DPTR來的高8位地址DPH經反相器3和V1原樣呈現在P2口的引腳上,輸出高8位地址A8~A15。在上述情況下,口鎖存器的內容不受影響,所以,取指或訪問外部存儲器結束后,由于轉換開關又接至左側,使輸出驅動器與鎖存器Q端相連,因而引腳上將恢復原來的數據。2.5.4

P3口

P3口除作為通用準雙向I/O外,還具有第二功能。其1位結構如圖2.14所示。它的輸出驅動由與非門3、V1和上拉電阻組成,比P0、P1、P2口多了一個緩沖器4。圖2.14P3口1位內部結構當P3口作為通用I/O接口時,第2功能輸出線為高電平,輸出數據直接通過與非門3,經V1到輸出口線。P3口的I/O及端口操作特性同P0、P1、P2。負載能力同P1和P2口。當P3口作為第2功能(各引腳功能見表2.1)使用時,其鎖存器Q端必須為高電平,否則V1管導通,引腳將箝位為低電平,無法輸入或輸出第2功能信號。當Q端為高電平時,P3口的口線狀態(tài)就取決于第2功能輸出信號的狀態(tài)。P3口的引腳信號輸入通道中有2個緩沖器,第2功能輸入信號RXD、INT0、INT1、T0、T1經緩沖器4輸入,通用輸入信號仍經緩沖器1輸入。2.6定時器/計數器定時器/計數器是51單片機的重要功能模塊之一。在檢測、控制及智能儀器等應用中,常用定時器作實時時鐘來實現定時檢測、定時控制;還可用定時器產生毫秒寬的脈沖,來驅動步進電機一類的電器機械。對于定時器/計數器來說,不管是獨立的定時器芯片還是單片機內的定時器,大都具有以下特點:

(1)定時器/計數器有多種方式,可以是計數方式,也可以是定時方式。

(2)定時器/計數器的計數值是可變的,當然計數的最大值是有限的,這取決于計數器的位數。計數的最大值也就限定了定時的最大值。

(3)在到達設定的定時或計數值時發(fā)出中斷申請,以便實現定時控制。

51單片機(51子系列)內帶有兩個16位定時器/計數器T0和T1,它們均可作為定時器或計數器使用。2.6.1定時器/計數器T0、T1的結構定時器/計數器T0、T1的結構框圖如圖2.15所示。它由加法計數器、TMOD寄存器、TCON寄存器等組成。圖2.15定時器/計數器C/T0、C/T1的內部結構

1.16位加法器定時器/計數器的核心是16位加法計數器,圖中用特殊功能寄存器TH0、TL0及TH1、TL1表示。TH0、TL0是定時器/計數器0加法計數器的高8位和低8位,TH1、TL1是定時器/計數器1加法計數器的高8位和低8位。

2.定時器/計數器方式控制寄存器TMOD

定時器/計數器C/T0、C/T1都有4種工作方式,可通過對TMOD編程設置來選擇。TMOD的低4位用于定時器/計數器0,高4位用于定時器/計數器1。其位定義如下:

C/T:定時或計數功能選擇位,當C/T=1時,為計數方式;當C/T=0時,為定時方式。

M1、M0:定時器/計數器工作方式選擇位,其值與工作方式對應關系見表2.6。

GATE:門控位,用于控制定時器/計數器的啟動是否受外部中斷請求信號的影響。如果GATE=1,則定時器/計數器0的啟動受芯片引腳

INT0(P3.2)控制,定時器/計數器1的啟動受芯片引腳INT1(P3.3)控制;如果GATE=0,則定時器/計數器的啟動與引腳INT0、INT1無關。一般情況下GATE=0。

3.定時器/計數器控制寄存器TCON

TCON控制寄存器各位的定義如下:

TF0(TF1):T0(T1)定時器/計數器溢出中斷標志位。當T0(T1)計數溢出時,由硬件置位,并在允許中斷的情況下,向CPU發(fā)出中斷請求信號,CPU響應中斷而轉向中斷服務程序時,由硬件自動將該位清0。

TR0(TR1):T0(T1)運行控制位。當TR0(TR1)=1時,啟動T0(T1);當TR0(TR1)=0時,關閉T0(T1)。該位由軟件進行設置。

TCON的低4位與外部中斷有關,見2.8節(jié)。2.6.2定時器/計數器T0、T1的4種工作方式

1.工作方式0當M1M0=00時,定時器/計數器設定為工作方式0,構成13位定時器/計數器。其邏輯結構如圖2.16所示(圖中x取0或1,分別代表T0或T1的有關信號)。圖2.16定時器/計數器方式0的邏輯結構如果C/T=1,則圖2.14中開關S1將打在下面,定時器/計數器工作在計數狀態(tài),加法計數器對Tx引腳上的外部脈沖計數。計數值由下式確定:N=213-x=8192-x式中N為計數值,x是THx、TLx的初值。x=8191時為最小計數值1,x=0時為最大計數值8192,即計數范圍為1~8192。定時器/計數器在每個機器周期的S5P2期間采樣Tx腳輸入信號,若一個機器周期的采樣值為1,下一個機器周期的采樣值為0,則計數器加1。由于識別一個高電平到低電平的跳變需兩個機器周期,因此對外部計數脈沖的頻率應小于fosc/24,且高電平與低電平的延續(xù)時間均不得小于1個機器周期。

C/T=0時為定時器方式,開關S1打在上面,加法計數器對機器周期脈沖Tcy計數,每個機器周期TLx加1。定時時間由下式確定:T=N×Tcy=(8192-x)Tcy式中Tcy為單片機的機器周期。如果振蕩頻率fosc=12MHz,則Tcy=1μs,定時范圍為1~8192μs。

定時器/計數器的啟動或停止由TRx控制。當GATE=0時,只要用軟件置TRx=1,開關S2閉合,定時器/計數器就開始工作;置TRx=0,S2打開,定時器/計數器停止工作。

GATE=1為門控方式。此時,僅當TRx=1且INTx引腳上出現高電平(即無外部中斷請求信號)時S2才閉合,定時器/計數器開始工作。如果INTx

引腳上出現低電平(即有外部中斷請求信號),則停止工作。所以,門控方式下,定時器/計數器的啟動受外部中斷請求的影響,可用來測量INTx

引腳上出現正脈沖的寬度。

2.工作方式1當M1M0=01時,定時器/計數器設定為工作方式1,構成了16位定時器/計數器。此時THx、TLx都是8位加法計數器。其它與工作方式0相同。在方式1時,計數器的計數值由下式確定:N=216-x=65536-x計數范圍為1~65536。定時器的定時時間由下式確定:T=N×Tcy=(65536-x)Tcy如果fosc=12MHz,則Tcy=1μs,定時范圍為1~65536μs。

3.工作方式2當M1M0=10時,定時器/計數器設定為工作方式2。方式2是自動重裝初值的8位定時器/計數器。其邏輯結構如圖2.15所示。TLx

作為8位加法計數器使用,THx作為初值寄存器使用,THx、TLx的初值都由軟件設置。TLx計數溢出時,不僅置位TFx,而且發(fā)出重裝載信號,使三態(tài)門打開,將THx中的初值自動送入TLx,并從初值開始重新計數。重裝初值后,THx的內容保持不變。在工作方式2時,計數器的計數值由下式確定:N=28-x=256-x計數范圍為1~256。定時器的定時值由下式確定:T=N×Tcy=(256-x)Tcy如果fosc=12MHz,則Tcy=1μs,定時范圍為1~256μs。圖2.17定時器/計數器方式2的邏輯結構

4.工作方式3當M1M0=11時,定時器/計數器設定為工作方式3。方式3下的定時器/計數器的邏輯結構如圖2.16所示。圖2.18定時器/計數器方式3的邏輯結構方式3只用于C/T0。當C/T0工作在方式3時,TH0和TL0被分成2個獨立的8位計數器。這時,TL0既可作為定時器使用,也可作為計數器使用,而TH0只能作為定時器使用,并且占用了C/T1的兩個控制信號TR1和TF1。在這種情況下,C/T1雖仍可用于方式0、1、2,但不能使用中斷方式。通常是將C/T1用作串行口的波特率發(fā)生器,由于已沒有計數溢出標志位TF1可供使用,因此只能把計數溢出直接送給串行口。當作為波特率發(fā)生器使用時,只需設置好工作方式,便可自行運行。如要停止工作,只需送入一個把它設置為方式3的方式控制字就可以了。由于定時器/計數器C/T1不能在方式3下使用,如果強行把它設置為方式3,就相當于停止工作。

方式3下,低8位計數器TL0的啟動及其控制同方式0、方式1和方式2。高8位TH0作定時器使用的啟動,借用了C/T1的控制位TR1,僅由它來控制啟停。

方式3下兩個計數器的初值,根據不同的計數和定時要求,應分別設置。其初值的設定、初值范圍、計數或定時范圍與方式2相同。應用單片機內部的定時器/計數器時,應按以下步驟進行設置工作:

(1)根據計數或定時要求,選用C/T0或C/T1,并確定工作方式、啟動方式,設置方式控制字。

(2)根據計數或定時要求,計算初值。

(3)用指令將方式控制字寫入TMOD,把初值按8位操作寫入計數器THx、TLx。

(4)啟動定時/計數器。用指令將啟動控制字寫入TCON,或用位操作指令使TRx置1。2.7串行輸入/輸出口2.7.1串行通信的基本概念計算機與外界的信息交換稱為通信。通信的基本方式分為并行和串行通信兩種。并行通信是構成一組數據的各位同時進行傳送,例如8位數據或16位數據并行傳送。其特點是傳送速度快,但當距離較遠、位數又多時,會導致通信線路復雜且成本高。串行通信是數據一位接一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現通信(如電話線),從而大大降低了成本,特別適用于遠距離通信。其缺點是傳送速度慢。圖2.19為以上兩種通信方式的示意圖。由圖可知,假設并行傳送N位數據所需時間為T,那么串行傳送的時間至少為N×T,而實際上總是大于N×T的。圖2.19兩種通信方式示意圖(a)并行通信;(b)串行通信串行通信又可分為異步傳送和同步傳送兩種方式。

1.異步傳送方式異步傳送的特點是數據在線路上的傳送不連續(xù)。傳送時,數據是以一個字符為單位進行傳送的。它用一個起始位表示字符的開始,用停止位表示字符的結束。異步傳送的字符格式如圖2.20所示。圖2.20異步通信的信息幀格式(a)字符格式;(b)有空閑的字符格式一個字符又稱為一幀信息。一幀信息由起始位、數據位、奇偶校驗位和停止位4個部分組成。起始位為信號0,占1位;其后是數據位,可以是5位、6位、7位或8位,傳送時低位在先、高位在后;再后面的1位為奇偶檢驗位(可要可不要);最后是停止位,它用信號1來表示一幀信息的結束,可以是1位、1位半或2位。異步傳送中,字符間隔不固定。在停止位后可以加空閑位,空閑位用高電平表示,用于等待傳送。這樣,接收和發(fā)送可以隨時或間斷進行,而不受時間的限制。圖2.18(b)為有空閑位的情況。在串行異步傳送中,通信雙方必須事先約定:

(1)字符格式。雙方要事先約定字符的編碼形式、奇偶校驗形式及起始位和停止位的規(guī)定。例如,用ASCII碼通信,有效數據為7位,加一個奇偶校驗位、一個起始位和一個停止位,共10位。當然,停止位也可以大于1位。

(2)波特率(Baudrate)。波特率就是數據的傳送速率,即每秒傳送的二進制位數,單位為位/秒。它與字符的傳送速率(字符/秒)之間有以下關系:波特率=一個字符的二進制編碼位數×字符/秒

2.同步傳送方式在同步傳送中,每一個數據塊開頭處要用同步字符SYN來加以指示,使發(fā)送與接收雙方取得同步。數據塊的各字符間取消了起始位和停止位,從而使通信速度得以提高,如圖2.21所示。同步通信時,如果發(fā)送的數據塊之間有時間間隔,則發(fā)送同步字符填充。圖2.21同步通信的格式串行通信的數據傳送方向有以下三種形式:

(1)單工方式:如圖2.22(a)所示,A端為發(fā)送站,B端為接收站,數據僅能從A站發(fā)至B站。

(2)半雙工方式:如圖2.22(b)所示,數據既可以從A站發(fā)送到B站,也可以由B站發(fā)送到A站。不過,在同一時間只能作一個方向的傳送。

(3)全雙工方式:如圖2.22(c)所示,每個站(A、B)既可同時發(fā)送,也可同時接收。圖2.22串行通信數據的三種傳輸方式(a)單工方式;(b)半雙工方式;(c)全雙工方式2.7.2

51單片機的串行口

1.功能與結構

51單片機內部有一個功能很強的全雙工串行口,可同時接收和發(fā)送數據。接收、發(fā)送數據均可工作在查詢方式或中斷方式,使用十分靈活,能方便地與其它計算機或串行傳送信息的外部設備(如打印機、CRT終端等)實現雙機、多機通信。串行口有4種工作方式,如表2.7所示。方式0并不用于通信,而是通過外接移位寄存器芯片實現擴展I/O口的功能,該方式又稱移位寄存器方式。方式1、方式2、方式3都是異步通信方式。方式1是8位異步通信接口,一幀信息由10位組成,用于雙機通信。方式2和方式3都是9位異步通信接口,其區(qū)別僅在于波特率不同。方式2和方式3主要用于多機通信,也可用于雙機通信。串行口主要由發(fā)送數據緩沖器、發(fā)送控制器、輸出控制門、接收控制器、輸入移位寄存器等組成。圖2.23是方式0的結構示意圖,圖2.24是方式1、2、3的結構示意圖。發(fā)送數據緩沖器只能寫入,不能讀出;接收數據緩沖器只能讀出,不能寫入,故兩個寄存器共用一個符號(特殊功能寄存器SBUF),共用一個地址(99H)。串行口中還有兩個特殊功能寄存器SCON和PCON,分別用來控制串行口的工作方式和波特率。波特率發(fā)生器可用定時器/計數器1或定時器/計數器2來構成。圖2.23串行口方式0邏輯結構圖2.24串行口方式1、2、3邏輯結構

串行口控制寄存器SCON的格式如下:

SM0、SM1:用于選擇串行口的工作方式,通過軟件來設置。其設置代碼與方式的對應關系見表2.7。

SM2:多機通信控制位。多機通信時,必須設置為1;雙機通信時,設置為0;方式0時,必須設置為0。

REN:允許串行接收控制位。若REN?=?0,則禁止接收;若REN?=?1,則啟動接收。該位由軟件置位或復位。

TB8:在方式2和方式3時,裝載發(fā)送數據的第9位;在多機通信中,作為主機發(fā)送的是地址還是數據的標志,TB8?=?0是數據,TB8?=?1是地址;也可用作數據的奇偶校驗位。該位可由軟件置位或復位。

RB8:在方式2和方式3時,裝載接收數據的第9位;在多機通信中,可作為從機識別接收的是地址還是數據的標志;若SM2?=?0,則RB8是接收到的停止位。

TI:發(fā)送中斷標志位。一個數據發(fā)送結束時,由內部硬件自動置TI為1,作為CPU查詢的標志或中斷請求信號。該位必須用軟件來清0。

RI:接收中斷標志位。串行口接收完一個數據后,由內部硬件自動置RI為1,作為CPU查詢的標志或中斷請求信號。該位也必須用軟件清0。

電源控制寄存器的格式如下:

2.串行口的工作方式

1)方式0串行口的工作方式0為移位寄存器方式。圖2.23是串行口方式0的結構示意圖。數據從RxD引腳上接收或發(fā)送;一幀信息由8位數據組成,低位在前;波特率固定,為fosc/12;同步脈沖從TxD引腳上輸出。

(1)發(fā)送數據過程。

CPU執(zhí)行一條寫SBUF的指令(MOVSBUF,A)就啟動了一個發(fā)送過程。執(zhí)行指令時,內部產生一個“寫SBUF”控制信號,打開三態(tài)門1,將數據寫入發(fā)送數據緩沖器SBUF,同時啟動發(fā)送控制器。經過一個機器周期,發(fā)送控制端SEND有效(高電平),打開發(fā)送控制門5和門6,允許RxD發(fā)送數據,TxD向接收方輸出同步移位脈沖。在時鐘信號S6觸發(fā)產生的內部移位脈沖作用下,發(fā)送數據緩沖器中的數據逐位輸出,每一個機器周期從RxD上發(fā)送一位數據。S6同時形成同步移位脈沖,從TxD上輸出。8位數據(一幀信息)發(fā)送完畢后,SEND恢復低電平狀態(tài),停止發(fā)送數據,發(fā)送控制器自動置發(fā)送中斷標志TI?=?1。TI是CPU了解串行口一個數據是否發(fā)送完畢的標志。CPU可采用查詢方式或中斷方式向串行口再送數據。再送數據時,必須用指令把TI清0。

(2)接收數據過程。

在RI?=?0的條件下,通過軟件置REN(SCON.4)為1,就啟動了一次接收過程。由REN啟動接收控制器,經過一個機器周期,接收控制端RECV有效(高電平),打開門6,允許TxD輸出同步移位脈沖。該脈沖控制外接芯片逐位輸入數據。在內部移位脈沖作用下,RxD上的串行數據逐位移入移位寄存器。當8位數據(一幀信息)全部移入移位寄存器后,接收控制器使RECV失效,停止輸出移位脈沖,同時發(fā)出“裝載SBUF”信號,打開三態(tài)門2,將8位數據并行送入接收數據緩沖器SBUF中。與此同時,接收控制器自動置接收中斷標志RI?=?1。RI是CPU了解串行口一個數據是否接收完畢的標志。CPU可采用查詢方式或中斷方式讀取串行口接收數據緩沖器SBUF中的數據。讀取數據后,必須用指令把RI清0。

2)方式1方式1是8位異步通信接口方式,其結構示意圖如圖2.24所示。RxD為接收端,TxD為發(fā)送端。發(fā)送或接收一幀信息由10位組成,其中1位起始位、8位數據位和1位停止位。方式1的波特率可變,由定時器/計數器T1的溢出率以及SMOD(PCON.7)決定,且發(fā)送波特率與接收波特率可以不同。

(1)發(fā)送數據過程。

CPU執(zhí)行一條寫SBUF指令(MOVSBUF,A),就啟動了一個發(fā)送過程。執(zhí)行指令時,內部產生一個“寫SBUF”控制信號,將數據送入SBUF,同時啟動發(fā)送控制器。經一個機器周期,發(fā)送控制端的SEND、DATA有效,打開輸出控制門。發(fā)送控制器接收波特率發(fā)生器時鐘再產生內部移位脈沖,控制數據從TxD上逐位發(fā)送。一個數據幀信息發(fā)送完畢后,SEND、DATA失效,發(fā)送控制器自動置發(fā)送中斷標志TI?=?1。

(2)數據過程接收。

方式1下,接收接口增加負跳變檢測器和位檢測器,它們以波特率的16倍速率采樣RxD上的數據,其中7、8、9三次采樣中至少有兩次相同,則認為是有效采樣。負跳變檢測器的作用是檢測一幀信息的起始位。位檢測器是為接收數據可靠性而設置的。用指令把REN(SCON.4)置1,就啟動接收負跳變檢測器,檢測到一幀信息的起始位后,啟動位檢測器,開始接收數據。位檢測器把采樣到的有效數據送入移位寄存器。在內部移位脈沖的作用下,從RxD接收數據。當8位數據及停止位全部移入后,根據以下狀態(tài)進行響應操作:

①如果RI?=?0(表示有新數據)、SM2?=?0(是數據接收狀態(tài)),接收控制器發(fā)出“裝載SBUF”信號,將8位數據裝入接收數據緩沖器SBUF,停止位裝入RB8,并置RI?=?1。

②如果RI?=?0(表示有新數據)、SM2?=?1(是地址接收狀態(tài)),那么只有停止位為1(表示是地址)才發(fā)生上述操作。③?RI?=?0(表示有新數據)、SM2?=?1(是地址接收狀態(tài))且停止位為0(表示不是地址),所接收的數據不裝入SBUF,數據被丟棄。

④如果RI=1(表示前次數據未取走),則所接收的數據在任何情況下都不裝入SBUF,即數據丟失。

無論出現哪一種情況,跳變檢測器將繼續(xù)采樣RxD引腳的負跳變,以便接收下一幀信息。移位器采用移位寄存器和SBUF雙緩沖結構,以避免在接收一幀數據之前CPU尚未取走前一幀數據,造成兩幀數據重疊。采用雙緩沖結構后,前、后兩幀數據進入SBUF的時間間隔至少有10個機器周期。在后一幀數據送入SBUF之前,CPU有足夠的時間將前一幀數據取走。

3)方式2與方式3方式2與方式3都是9位異步通信接口,其結構示意圖如圖2.22所示。發(fā)送或接收一幀信息由11位組成,其中1位起始位、9位數據位和1位停止位。方式2與方式3僅波特率不同,方式2的波特率為fosc/32(SMOD=1時)或fosc/64(SMOD=0時),而方式3的波特率由定時器/計數器T1及SMOD決定。

3.波特率設置串行口的4種工作方式對應著3種波特率模式。對于方式0,波特率是固定的,為fosc/12。

對于方式2,波特率由振蕩頻率fosc和SMOD(PCON.7)所決定,對應公式為當SMOD=0時,波特率為fosc/64;當SMOD=1時,波特率為fosc/32。

對于方式1和方式3,波特率由定時器/計數器T1的溢出率和SMOD決定,即可按下式確定:

4.多機通信在實際應用中,經常需要多個單片機之間協調工作,即多機通信。利用51單片機串行口可實現多機通信,串行口用于多機通信時必須使用方式2或方式3。主從式多機通信是多機通信中應用最廣,也是最簡單的一種。主從式多機通信中只有一臺主機,從機則可以有多臺。主機發(fā)出的信息只能傳送到所有從機或指定的從機;而從機發(fā)送的信息只能被主機接收,各從機之間不可以直接通信,各從機之間的通信必須通過主機進行。由51單片機構成的主從式多機通信系統(tǒng)如圖2.25所示。圖2.25主從式多機通信系統(tǒng)示意在主從多機系統(tǒng)中,主機首先要發(fā)送從機的地址,選中一個從機,然后在選中的從機之間進行數據傳送。主機發(fā)送的地址可被所用從機接收,但發(fā)送的數據只有被選中的從機才能接收。這樣就存在兩種信息的識別和控制問題。主機發(fā)送的兩種信息要有區(qū)分標志。其區(qū)分通過TB8來實現:TB8=1,是地址信息;TB8=0,是命令或數據。從機要能識別兩種信息,并控制能隨時接收地址,但只有被從機選中時才能接收命令或數據。只要從機的SM2=1、RI=0(表示可以接收新數據)時,可隨時接收信息。從機通過RB8來識別地址信息。接收到RB8=1,就識別出是地址信息,裝載到SBUF中。CPU讀取SBUF,并與本機地址比較。如果與本機地址相等(被主機選中),就把SM2清0,準備接收命令或數據。如果比較不等(未被選中),SM2仍保持1狀態(tài)(等待接收地址)。主機發(fā)送命令或數據時,被選中從機的SM2=0,就接收,并裝載到SBUF中。未選中從機(SM2=1)時,也能接收主機數據,但根據RB?=?0判斷出不是地址,不裝載到SBUF(丟棄)。

單片機多機通信概括為以下幾點:

(1)使所有的從機的SM2位置1,以便接收主機發(fā)來的地址。

(2)主機發(fā)出一幀地址信息,其中包括8位從機地址,第9位為1(地址標志)。

(3)所有從機接收到地址幀后,各自與本機地址相比較,對于地址相同的從機,使SM2位清0,以接收主機隨后發(fā)來的所有信息;對于地址不符合的從機,仍保持SM2?=?1的狀態(tài),對主機隨后發(fā)來的數據不予理睬,直至發(fā)送新的地址幀。

(4)主機給已被尋址的從機發(fā)送控制指令和數據(數據幀的第9位為0)。2.8

51單片機的中斷系統(tǒng)2.8.1中斷的基本概念所謂中斷,是指CPU對系統(tǒng)中或系統(tǒng)外發(fā)生的某個事件的一種響應過程,即CPU暫時停止現行程序的執(zhí)行,而自動轉去執(zhí)行預先安排好的處理該事件的服務子程序;當處理結束后,再返回到被暫停程序的斷點處,繼續(xù)執(zhí)行原來的程序。實現這種中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。中斷系統(tǒng)是計算機的重要組成部分。實時控制、故障自動處理時往往用到中斷系統(tǒng),計算機與外部設備間傳送數據及實現人機聯系時也常常采用中斷方式。中斷系統(tǒng)需要解決的基本問題是:

(1)中斷源:中斷請求信號的來源,包括中斷請求信號的產生及該信號怎樣被CPU有效地識別,而且要求中斷請求信號產生一次,只能被CPU接收處理一次,即不允許一次中斷申請被CPU多次響應。這就涉及到中斷請求信號的及時撤除問題。

(2)中斷響應與返回:CPU采集到中斷請求信號后,怎樣轉向特定的中斷服務子程序及執(zhí)行完中斷服務子程序后怎樣返回被中斷的程序繼續(xù)正確地執(zhí)行。中斷響應與返回的過程中涉及到CPU響應中斷的條件、現場保護等問題。

(3)優(yōu)先級控制:一個計算機應用系統(tǒng),特別是計算機實時測控應用系統(tǒng),往往有多個中斷源,各中斷源所要求的處理具有不同的輕重、緩急程度。與人處理問題的思路一樣,希望重要、緊急的事件先處理,而且如

溫馨提示

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

評論

0/150

提交評論