單片機并行接口擴展技術(shù)第二章文檔_第1頁
單片機并行接口擴展技術(shù)第二章文檔_第2頁
單片機并行接口擴展技術(shù)第二章文檔_第3頁
單片機并行接口擴展技術(shù)第二章文檔_第4頁
單片機并行接口擴展技術(shù)第二章文檔_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 AT89S51 單片機的硬件結(jié)構(gòu)     本章“從內(nèi)到外”主要講述關(guān)于AT89S51單片機的一些基礎(chǔ)知識。首先介紹AT89S51單片機的組成、CPU 、存儲器組織以及特殊功能寄存器(SFR),然后,詳細講解了AT89S51的引腳分布及其功能;最后,討論了使用AT89S51單片機時的時鐘和復(fù)位電路。 2.1 AT89S51 單片機的組成     如前所述,AT89S51單片機與MCS-51完全兼容,內(nèi)部的結(jié)構(gòu)如圖2.1所示:        從功能上分

2、,它包括如下部件:一個8位中央處理器(CPU);4K可在線編程Flash ;128字節(jié)RAM與特殊功能寄存器;2個16位定時/計數(shù)器;中斷邏輯控制電路;一個全雙工串行接口(UART);32條可編程的IO口線;另外,還包括一些寄存器如程序計數(shù)器PC 、程序狀態(tài)寄存器PSW 、堆棧指針寄存器SP 、數(shù)據(jù)指針寄存器DPTR等部件。 2.2 AT89S51 單片機 CPU 的結(jié)構(gòu)     CPU是單片機的核心,它主要由運算器(ALU)、時序控制邏輯電路(控制器)以及各種寄存器等部件組成。    ( 1 )運算器的功能是進行算術(shù)和邏輯

3、運算。它主要由算術(shù)邏輯單元ALU(Arithmetic Logic Unit)和寄存器組成,實現(xiàn)“加、減、乘、除、比較”等算術(shù)運算和“與、或、異或、求補、循環(huán)”等邏輯操作。運算器中還包含一個布爾處理器,可以執(zhí)行置位、清零、求補、取反、測試、邏輯與、邏輯或等操作,為單片機的應(yīng)用提供了極大的便利。   ( 2 )控制器的主要功能是產(chǎn)生各種控制信號和時序。在CPU內(nèi)部協(xié)調(diào)各寄存器之間的數(shù)據(jù)傳送,完成ALU的各種算術(shù)或邏輯運算操作;在CPU訪問外部存儲器或端口時,提供地址鎖存信號ALE、外部程序存貯器選通信號PSEN以及讀(/RD)、寫(/WR)等控制信號。 &

4、#160; ( 3 )寄存器。CPU中還有一些寄存器,如累加器(ACC)、程序狀態(tài)字(PSW)、B寄存器、程序計數(shù)器PC 、堆棧指針(SP)、指令寄存器(IR)等,這些寄存器有的在片內(nèi)特殊功能寄存器空間有地址映像,它們既可看作CPU的寄存器,也可看作具有確定單元的存儲單元。      累加器ACC(Accumulator)。ACC是一個8位的寄存器,也是CPU中最重要、最繁忙的寄存器,許多運算中的數(shù)據(jù)和結(jié)果都要經(jīng)過累加器。      程序狀態(tài)字PSW(Program Status Wo

5、rd)。PSW是一個8位的寄存器,用于存放程序運行結(jié)果的一些特征,本書擬在特殊功能寄存器一節(jié)詳細介紹。      B寄存器。B寄存器主要是和ACC配合完成乖法和除法運算,存放運算結(jié)果,不進行乖、除運算時,B寄存器可作為RAM使用。      程序計數(shù)器PC。程序計數(shù)器PC用來存放即將執(zhí)行的指令地址。它是一個獨立的16位寄存器,沒有內(nèi)存映射單元,總是指向?qū)⒁獔?zhí)行的指令的地址,并具有內(nèi)容自動加l功能。       堆棧指針SP(Stack Point

6、er)。為一個指向堆棧頂部的指針,當執(zhí)行子程序調(diào)用或中斷服務(wù)程序時,需要將下一條要執(zhí)行的指令地址即PC值壓入堆棧保存起來,當子程序或中斷返回時,再將SP指向單元的內(nèi)容回送到程序計數(shù)器PC中。這是一個很重要的指針。      指令寄存器IR(Instruction Register)。指令寄存器的功能是存放指令代碼,CPU執(zhí)行指令時,由程序存儲器中讀取指令代碼送入指令寄存器,經(jīng)譯碼器譯碼后,由定時與控制部分發(fā)出相應(yīng)的控制信號,以完成指令功能,它也沒有內(nèi)存映射單元。    ( 4 )布爾(位)處理器。除對字節(jié)

7、(Byte)進行操作外,AT89S51單片機借用PSW中的C可以直接對位(Bit)進行操作,在進行位操作時,C就類似進行字節(jié)操作的ACC用作數(shù)據(jù)源或存放結(jié)果。通過位操作指令可以實現(xiàn)置位、清零、取反以及位邏輯運算等操作。 2.3 AT89S51 單片機系統(tǒng)的存貯器組織     單片機系統(tǒng)中,存放程序的存儲器稱為程序存儲器,類似與通用計算機系統(tǒng)中的ROM,只能進行讀操作,存放數(shù)據(jù)的存儲器稱為數(shù)據(jù)存儲器,相當于通用計算機系統(tǒng)中的RAM。與通用計算機系統(tǒng)不同,單片機系統(tǒng)中的程序存儲器和數(shù)據(jù)存儲器都有各自的讀信號(PSEN 、/RD ),換言之,單片機系統(tǒng)的存儲器

8、可以分成兩個物理存儲器,即程序存儲器和數(shù)據(jù)存儲器,它們的范圍都是64KB 。       3 ) RAM區(qū)。30H 7FH共80個字節(jié)稱為RAM區(qū),RAM區(qū)一般作為普通的數(shù)據(jù)緩沖區(qū)和堆棧區(qū)使用。    ( 2 )專用功能寄存器區(qū)。專用功能寄存器(SFR)也稱為特殊功能寄存器,主要用于控制、管理單片機內(nèi)部各種部件如算術(shù)邏輯部件、IO口、串行口(UART)、定時計數(shù)器、中斷系統(tǒng)等功能模塊的工作,用戶通過編程專用功能寄存器設(shè)定對應(yīng)模塊的工作方式。各專用功能寄存器名稱、符號、地址以及復(fù)位值如表

9、 2.3 所示:    AT89S51單片機共有22個專用功能寄存器,各專用功能寄存器和RAM統(tǒng)一編址,離散地分布在80H 0FFH之間,訪問這些專用寄存器僅允許使用直接尋址方式,對 80H FFH 之間未定義的單元進行讀操作時,將得到一個隨機數(shù),寫操作無任何意義。專用功能寄存器中,如果字節(jié)地址末位是0或8 ,則該寄存器還可進行位尋址。 AT89S51單片機共有256個可尋址的位,前128個(位地址00H 7FH)位于字節(jié)地址20H2FH中,如表2.2所示,后128個(位地址80H8FH)位于SFR中,如表2.4 所示:   

10、; 1 )累加器ACC和B寄存器在2.2節(jié)已經(jīng)介紹過,這里不再贅述。    2 )程序狀態(tài)字寄存器(PSW)。PSW是8位寄存器,用于反映操作或運算結(jié)果的狀態(tài),字節(jié)地址為0D0H,是一個可進行位尋址的寄存器,各位具體定義如表2.5所示:       P :奇偶標志(Parity flag)。如果ACC中有奇數(shù)個1,則P為l,否則P為0 。      OV :溢出標志(Overflow flag)。有符號數(shù)運算時,如果發(fā)生溢出,則OV被置l,否則清

11、0。對于有符號數(shù),如果用最高位表示符號,則一個字節(jié)能表示的數(shù)的范圍為-128 +127 。如果運算結(jié)果超出了這個數(shù)值范圍,就會發(fā)生溢出,此時,OV被置l;在乘法運算中,如果乘積超過255,則OV被置l;在除法運算中,除數(shù)為0時,OV被置l。       RS1 、RS0 :工作寄存器組選擇位(Register bank Select control bits),當前工作寄存器組的選擇如表2.6 所示。      用戶可以用軟件改變RS1和RS0的值以切換當前選用的工作寄存器組。單片機在復(fù)位時,

12、RS1、RS0均為0,故復(fù)位啟動后,當前工作寄存器的缺省選擇為第0組。      F0 :用戶標志。由用戶置位或復(fù)位。PSW.1為保留位(Reserved)。      AC :輔助進位標志(Auxiliary Carry flag)。AC主要用于BCD碼運算,當進行加法(或減法)運算時,如果低半字節(jié)(D3)向高半字節(jié)(D4)有進位(或借位),則AC置1,否則清0。      C :進位標志(Carry flag)。在進行加法(或減法)運算時,如

13、果操作結(jié)果的最高位(D7)有進位,則C置1,否則清0。在進行位操作時,C作為操作位累加器。    3 )堆棧指針寄存器(SP,Stack Pointer register)。堆棧指針寄存器是一個8位專用功能寄存器,主要用于指示堆棧頂部在RAM中的位置。堆棧是向上生成的,即當執(zhí)行PUSH或ALL指令時,SP的值就會增加。系統(tǒng)復(fù)位后,SP被初始化為07H,堆棧實際上是從08H單元開始的,考慮到08H1FH為工作寄存器區(qū),20H 2FH為位尋址區(qū),程序可能會用到這些區(qū)域,所以,程序初始時最好把SP初值設(shè)為2FH以后的位置如60H單元。在使用堆棧時要注意,堆棧一

14、般設(shè)置在RAM的頂部,由于堆棧減少了內(nèi)部RAM的可利用單元,不能設(shè)得太低,但也不能設(shè)得太高,如果在壓棧過程中,SP超過07FH(對于AT89S51單片機),就會引起程序運行出錯,這是單片機初學者常犯的錯誤之一。    4 )數(shù)據(jù)指針(Data Pointer)。 AT89S51單片機有兩個數(shù)據(jù)指針寄存器,即DPTR0、DPTR1,它們都是16位寄存器,主要用于訪問外部64KB數(shù)據(jù)存儲器時存放地址。它們也可以分別作為兩個8位的寄存器DPLx和DPHx(x=0,1)使用。    5 ) P0、P1、P2和P3。P0、P

15、1、P2、P3分別為單片機P0 P3口的鎖存器。     6 )串行數(shù)據(jù)緩沖寄存器(SBUF ,Serial Data Buffer register)。SBUF 實際上是兩個獨立的寄存器,即發(fā)送數(shù)據(jù)緩沖寄存器和接收數(shù)據(jù)緩沖寄存器,兩個寄存器共用一個地址(SBUF),當發(fā)送數(shù)據(jù)時,數(shù)據(jù)被送往發(fā)送數(shù)據(jù)緩沖寄存器;當接收數(shù)據(jù)時,接收到的數(shù)據(jù)被送往接收數(shù)據(jù)緩沖寄存器。    7 ) TH0 、TL0 、TH1 和 TL1。單片機有2個16位的定時/計數(shù)器,即T0和T1,TH0、TL0 和TH1、TL1分別為T0和T1計數(shù)

16、寄存器的高8位和低8位。    8 ) IP、IE、TMOD、TCON、SCON和PCON。這些SFR包含了單片機的中斷系統(tǒng)、定時/計數(shù)器以及串行口等部件的工作方式和狀態(tài)位,詳解見第四章。    9 )輔助寄存器AUXR(Auxiliary Register)。AUXR的地址為08EH,各位功能如表2.7 所示:       DISALE :禁止或允許(Disable/Enable)ALE信號。為1時,僅當執(zhí)行MOVX和MOXC 指令時,ALE才激活(出現(xiàn));為0時

17、,ALE信號始終以振蕩器1/6的頻率出現(xiàn)在單片機的ALE引腳上。      DISRTO :禁止或允許WDT溢出時的復(fù)位輸出(Disable/Enable Reset-out)。為1時,單片機的復(fù)位引腳僅用于輸入;為0時,在WDT溢出后,單片機的復(fù)位引腳輸出一個高電平脈沖。       WDIDLE :在空閑模式下禁止或允許WDT的計數(shù)器計數(shù)。為1時,空閑模式時WDT的計數(shù)停止計數(shù);為0時,空閑模式時WDT的計數(shù)器繼續(xù)計數(shù)。      “”保留位

18、,用于擴展。    系統(tǒng)復(fù)位后,AUXR的值為:xxx00xx0,即復(fù)位后,單片機系統(tǒng)缺省的狀態(tài)是:ALE信號始終出現(xiàn)在單片機的ALE引腳;WDT溢出后,單片機的復(fù)位引腳輸出一個寬度為98個機器周期的高電平脈沖;空閑模式時WDT的計數(shù)器繼續(xù)計數(shù)。    10 )輔助寄存器AUXR1(Auxiliary Register 1)。AUXR1的地址為0A2H ,各位功能如表2.8所示:       DPS :數(shù)據(jù)指針寄存器選擇(Data Pointer Register Selec

19、t)。為 1 時,選擇           DP1L和DP1H為當前DPTR;為 0 時,選擇DP0L和DP0H為當前DPTR ;      “”保留位,用于擴展。    系統(tǒng)復(fù)位后,DPS為0,即選擇DP0L和DP0H為當前DPTR。    11 ) WDTRST :看門狗定時器復(fù)位(Watchdog Timer Reset)專用功能寄存器。    單片機系統(tǒng)在正常工作時,CPU常會受到各種干擾,使程序陷入死循環(huán)或

20、跑飛狀態(tài),看門狗定時器(WDT ,Watchdog Timer)是一種能使程序自動恢復(fù)到正常的運行狀態(tài)的有效方法。 AT89S51 單片機內(nèi)部包含了一個WDT,它包含了一個14位的計數(shù)器和一個看門狗定時器復(fù)位(WDTRST)SFR ,WDTRST的地址為0A6H 。當WDT使能后,只要振蕩器在工作,每個機器周期都會使WDT計數(shù)器的值加1 。 WDT的工作原理如下:    正常情況下,程序周期性地在WDT計數(shù)器的值到達3FFFH之前對其進行清0,如果CPU受到干擾使程序進入非正常運行狀態(tài),這種清零操作將不再被執(zhí)行,當WDT的計數(shù)器的值到達 3FFFH時,便產(chǎn)生溢出,引起單片機

21、復(fù)位,在單片機的RST引腳上輸出一寬度為98個振蕩周期的正脈沖,同時,置PC的值為0000H ,程序從頭開始重新執(zhí)行,恢復(fù)到正常的運行狀態(tài)。    單片機上電復(fù)位后,WDT的缺省狀態(tài)是禁止,為了使能WDT ,用戶必須按順序依次向 WDTRST寫入1EH 和 0E1H兩字節(jié)數(shù)據(jù)。WDT 一旦使能,將無法通過軟件禁止,用戶必須在最長 16383個機器周期時間內(nèi)對WDT的計數(shù)器清0 ,計數(shù)器清0操作同使能WDT一樣,也是按順序依次向WDTRST寫入1EH 和 0E1H 兩字節(jié)數(shù)據(jù),換言之,每次按順序依次向WDTRST寫入1EH和0E1H 兩字節(jié)數(shù)據(jù)后,WDT計數(shù)器都從0重新開始計

22、數(shù)。WDTRST是一個只寫寄存器,而WDT的計數(shù)器既不能讀,也不能寫。    當單片機工作在掉電模式(Power-down mode)時,振蕩器停止,這時WDT的計數(shù)器也停止計數(shù),用戶程序可以不再對其進行清0操作。硬件復(fù)位和低電平觸發(fā)的外部中斷都可以使單片機退出掉電模式。如果是硬件復(fù)位退出掉電模式,以后對WDT操作和正常系統(tǒng)復(fù)位時的操作完全相同;如果是低電平中斷引起退出掉電模式,則要求引起中斷的低電平信號要有足夠的寬度,以保證振蕩器在低電平期間能進入穩(wěn)定的工作狀態(tài)。為了避免在中斷信號為低電平期間,WDT引起復(fù)位,WDT計數(shù)器在中斷信號變成高電平后才開始計數(shù)。一般情況下,進入

23、中斷服務(wù)程序時,要對WDT的計數(shù)器清0。為了避免在剛退出掉電模式的幾個機器周期內(nèi)產(chǎn)生復(fù)位,最好在進入掉電模式前,先對WDT的計數(shù)器執(zhí)行一次清0操作。    SFR AUXR中的WDIDLE位決定了空閑(IDLE mode)模式時WDT的計數(shù)器是否繼續(xù)計數(shù),若 WDIDLE為0(缺省值),則在空閑模式時,WDT的計數(shù)器會繼續(xù)計數(shù),為了避免在空閑模式時, WDT引起AT89S51單片機復(fù)位,用戶程序總是設(shè)置一個定時器,周期性地退出空閑模式,對 WDT的計數(shù)器清0 ,然后,再進入空閑模式。當WDIDLE為1時,在空閑模式,WDT的計數(shù)器停止計數(shù),退出空閑模式時,WDT的計數(shù)器恢復(fù)

24、計數(shù)。    ( 3 )外部數(shù)據(jù)存儲器。當內(nèi)部RAM不夠用,就需要擴展外部數(shù)據(jù)存儲器,原則最大可擴展64KB。按照訪問方式的不同,外部數(shù)據(jù)存儲器也可分成二塊,最低的256字節(jié)(0000H00FFH)既通過DPTR尋址,也可能通過R0和R1間接尋址,而0100H0FFFFH只能通過DPTR 間接尋址。    實際使用中,可以通過分頁技術(shù)使外部數(shù)據(jù)存儲器的容量遠遠超過64KB;另一種方法是使用非并行接口的存儲器芯片,如使用I2C接口的存儲器芯片或SPI接口的存儲器芯片,可使數(shù)據(jù)存儲器的容量擴至數(shù)百兆。單片機的外部數(shù)據(jù)存儲器和端口是統(tǒng)一編址的,也就是說,如果某

25、一個單元作了端口,就不能再作為存儲器單元,反之,如果某一個單元作為存儲器單元,就不能再作為端口。 2.4 AT89S51 單片機引腳及功能     AT89S51單片機有4種封裝形式,分別為40-lead PDIP、44-lead PLCC、40-lead TQFP和 42-lead PDIP,其中40腳 PDIP 封裝的引腳分布如圖2.5所示,引腳描述如下:     ( 1 )電源引腳(2條,VCC、GND)          VCC(40 P

26、in)接+5V電源;          GND(20 Pin)接地。    ( 2 )外接晶體引腳(2條,XTAL1、XTAL2)          XTAL1(19 Pin)外接石英晶體和微調(diào)電容,在單片機內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器輸入端。當采用外部振蕩器時,此引腳接地。         

27、; XTAL2(18 Pin):外接石英晶體和微調(diào)電容的另一端,在單片機內(nèi)部,它接至片內(nèi)振蕩器的反相放大器輸出端。當采用外部振蕩器時,該引腳接收外部振蕩器信號,即外部振蕩器通過XTAL2被送到單片機內(nèi)部的時鐘發(fā)生器輸入端。   ( 3 )控制類引腳(4條,RST、ALE、/EA和/PSEN)          RST(9 Pin)復(fù)位信號(Reset)引腳。RST為輸入引腳,當振蕩器在運行時,該引腳上出現(xiàn)兩個機器周期以上的高電平,即可引起單片機復(fù)位,復(fù)位一般有兩種,即上電或手

28、動復(fù)位以及WDT超時復(fù)位。如果DISRTO允許復(fù)位輸出,則當WDT引起復(fù)位時,會在RST引輸出一個寬度為98個機器周期的正脈沖。           ALE(30 Pin)地址鎖存允許信號(Address Latch Enable)。ALE是輸出信號引腳,用于鎖存訪問外部數(shù)據(jù)存儲器時的低8位地址。在正常情況下,ALE信號總以固定頻率(振蕩器頻率的1/6)周期地出現(xiàn),可用作對外定時或為其它芯片提供時鐘,每當訪問外部數(shù)據(jù)存儲器時,將會丟失一個ALE脈沖。如果需要,ALE信號也可通過設(shè)置SRF(8EH)位而被禁

29、止。          /EA(30 Pin)外部存取允許(External Access Enable)信號。/EA為輸入信號引腳,當使用外部程序存儲器時,即希望程序從外部程序存儲器的0000H開始執(zhí)行程序時, /EA必須接GND ;當/EA為高電平時,單片機復(fù)位后,將從內(nèi)部 Flash的0000H開始取指。當需要對單片機內(nèi)部Flash編程時,該引腳(/PROG)也接收12V的編程電壓。          /PSE

30、N(29 Pin):外部程序存儲器“讀”選通信號,在訪問外部程序存儲器期間,每個機器周期,該信號兩次有效,但當訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不會出現(xiàn)。   ( 4 )I/O 端口引腳(32條,P0、P1、P2、P3)          AT89S51單片機共有4個并行IO端口,每個端口是8位雙向端口,共32條引腳。每個端口的結(jié)構(gòu)基本相同,即都包含有鎖存器,輸出驅(qū)動和輸入緩沖,但在對輸出的控制上有很大差別,因此,在功能和用途上各不相同,在沒有外擴程序或數(shù)據(jù)存

31、儲器系統(tǒng)中,這四個端口的每一位都可作為I/O口使用。    1)P0口。P0口是一個8位漏極開路的雙向I/O口,P0.x的結(jié)構(gòu)如圖 2.6 所示。V1、V2構(gòu)成輸出驅(qū)動器,與門3、反向器4以及多路模擬開關(guān)MUX構(gòu)成輸出控制電路,三態(tài)門1、2組成輸入緩沖器。P0口有兩種功能,即地址/數(shù)據(jù)分時復(fù)用總線和I/O接口。     當單片機系統(tǒng)有外接存儲器時,P0口用作地址/數(shù)據(jù)分時復(fù)用總線。當需要輸出地址信息時,控制信號為“1”,CPU控制多路開關(guān)MUX 使AC相接,地址信息經(jīng)過反向器4 到達P0口引腳;當需要輸出數(shù)據(jù)時,控

32、制信號為“0”,CPU控制多路開關(guān)MUX使AB相接,數(shù)據(jù)經(jīng)過鎖存器的/Q端到達P0口引腳;當需要從P0口引腳輸入數(shù)據(jù)時,控制信號仍為“0”,CPU會自動先向鎖存器寫1,使/Q端為低電平,從而V1截止,引腳上的輸入信號經(jīng)緩沖器1進入內(nèi)部數(shù)據(jù)總線。當單片機系統(tǒng)沒有外擴存儲器時,P0口可作為準雙向I/O口使用,這時,控制信號為“0”, V2截止,需要外接上拉電阻。    2)P1口。P1口8位雙向I/O端口,內(nèi)含有上拉電阻。P1口的結(jié)構(gòu)如圖2.7所示。輸出數(shù)據(jù)時(即寫數(shù)據(jù)到引腳),數(shù)據(jù)被寫到P1口的鎖存器,若寫的數(shù)據(jù)為“1”,則鎖存器的/Q端為低電平,V截止,

33、P1.x引腳為高電平;反之,若寫的數(shù)據(jù)為“0”,則鎖存器的/Q端為高電平,V導(dǎo)通,P1.x 引腳為低電平。    輸入數(shù)據(jù)時(即讀引腳數(shù)據(jù)),必須先向鎖存器寫“1”,使V截止,引腳數(shù)據(jù)經(jīng)過緩沖器1進入內(nèi)部數(shù)據(jù)總線。如果讀引腳時,鎖存器的Q端為“0”,則V導(dǎo)通,讀到的信息永遠為“0”。單片機復(fù)位后,P1口鎖存器的值為0FFH 。    另外,在進行串行Flash編程和校驗操作時,P1.5(MOSI)、P1.6(MISO)、P1.7(SCK)分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。   &

34、#160;3)P2口。P2口具有內(nèi)部上拉的電阻的準8位雙向I/O口,結(jié)構(gòu)如圖2.8所示。它有兩種功能,當系統(tǒng)有外部存儲器時,P2口用作地址總線,提供高8位地址(A15A8),這時控制信號為“1”,MUX的AC相接,地址信號經(jīng)過緩沖器3到達P2.x 當系統(tǒng)沒有外部存儲器,P2可作為通用的I/O口使用,工作原理與P1口相同。    4) P3口。P3口也是具有內(nèi)部上拉的電阻的準8位雙向I/O口,P3口的每條線都有兩種功能,即作為I/O和第二功能。結(jié)構(gòu)如圖2.9所示。    P3口用作輸出時,數(shù)據(jù)由鎖存器的Q端經(jīng)與非門3

35、和反相器到達P3.x ;輸入數(shù)據(jù)時,鎖存器的Q端必須為高電平,V管截止,數(shù)據(jù)信號從P3.x經(jīng)緩沖器4和1最后進入內(nèi)部數(shù)據(jù)總線。    P3口的每條線都有第二功能,如表2.9所示。P3口作為第二功能使用時,其鎖存器的Q端必須為高電平,否則,若Q為低電平,則與非門3將輸出高電平,使V管導(dǎo)通,第二功能輸入時, P3.x 被鉗成低電平,使得第二功能輸入信號恒為低電平;第二功能輸出時,若Q為“0”,則與非門3的輸出恒為高電平,V管導(dǎo)通,P3.x恒為低電平。      P0、P1、P2、P3口可總結(jié)如下: 

36、      從結(jié)構(gòu)上講,每個端口均有鎖存器、輸出驅(qū)動和輸入緩沖等組成       P1、P2、P3口內(nèi)部均有上拉電阻,當它們用作通用輸入口(即讀引腳狀態(tài))時,對應(yīng)位的鎖存器Q端必須先置為“1”;P0口內(nèi)部無上拉電阻,作為I/O口使用時,必須外接上拉電阻,讀引腳時,對應(yīng)的鎖存器也必須先置“1”。       當系統(tǒng)有外部存儲器時,P0一般分時用作地址/數(shù)據(jù)總線,P2用作高8位地址總線, P3口的P3.7和P3.6負責提供外部數(shù)據(jù)存儲器的讀、寫信號;當系統(tǒng)沒有

37、外部存儲器時,P0、 P1、P2、P3均可用作I/O口。 2.5 AT89S51 的時鐘電路     單片機系統(tǒng)中的各個部件是在一個統(tǒng)一的時鐘脈沖控制下有序地進行工作,時鐘電路是單片機系統(tǒng)最基本、最重要的電路。 2.5.1 時鐘電路    AT89S51單片機內(nèi)部有一個高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端,如果在引腳XTAL1和XTAL2兩端跨接上晶體振蕩器(晶振)或陶瓷振蕩器就構(gòu)成了穩(wěn)定的自激振蕩電路,該振蕩器電路的輸出可直接送入內(nèi)部時序電路。AT89S51單片機的時鐘可由兩

38、種方式產(chǎn)生,即內(nèi)部時鐘方式和外部時鐘方式。    ( 1 )內(nèi)部時鐘方式。內(nèi)部時鐘方式即是由單片機內(nèi)部的高增益反相放大器和外部跨接的晶振、微調(diào)電容構(gòu)成時鐘電路產(chǎn)生時鐘的方法,其工作原理如圖 2.10( a )所示。    外接晶振(陶瓷振蕩器)時,C1、C2的值通常選擇為30pF(40pF)左右;C1、C2對頻率有微調(diào)作用,晶振或陶瓷諧振器的頻率范圍可在1.2MHz 12MHz之間選擇。為了減小寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機引腳XTALl 和XTAL2靠近。由于內(nèi)部時鐘方式外部

39、電路接線簡單,單片機應(yīng)用系統(tǒng)中大多采用這種方式。內(nèi)部時鐘方式產(chǎn)生的時鐘信號的頻率就是晶振的固有頻率,常用fsoc來表示。如選擇12MHz 晶振,則 fsoc=12×106Hz。    ( 2 )外部時鐘方式。外部時鐘方式即完全用單片機外部電路產(chǎn)生時鐘的方法,外部電路產(chǎn)生的時鐘信號被直接接到單片機的XTAL1引,此時XTAL2開路,具體電路如圖2.10( b )所示。 2.5.2 CPU 工作周期。      CPU在執(zhí)行指令時,都是按照一定順序進行的,由于指令的字節(jié)數(shù)不同,取指所需時間也就不同,即使是字節(jié)數(shù)相同的指

40、令,執(zhí)行操作也會有很大差別,不同的指令的執(zhí)行時間當然也不相同,即CPU在執(zhí)行各個指令時,所需要的節(jié)拍數(shù)是不同的。為了便于對CPU時序的理解,人們按指令的執(zhí)行過程定義了幾個名詞,即時鐘周期、機器周期和指令周期。     ( 1 )時鐘周期。時鐘周期也稱為振蕩周期,定義為時鐘脈沖頻率(fOSC)的倒數(shù),是單片機中最基本的、最小的時間單位。由于時鐘脈沖控制著計算機的工作節(jié)奏,對同一型號的單片機,時鐘頻率越高,計算機的工作速度顯然就會越快。然而,受硬件電路的限制,時鐘頻率也不能無限提高,對某一種型號的單片機,時鐘頻率都有一個范圍,如對AT89S51單片機,其時鐘

41、頻率范圍是0 33MHz。為方便描述,振蕩周期一般用P(pause)表示。      ( 2 )機器周期。完成一個最基本操作(讀或?qū)懀┧枰臅r問稱為機器周期。 AT89S51單片機的機器周期是固定的,即一個機器周期由12個時鐘周期組成。采用6MHz的時鐘頻率時,一個機器周期就是2s ,采用12MHz的時鐘頻率時,一個機器周期就是1s 。      ( 3 )指令周期。指令周期是執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成,指令不同,后需要的機器周期數(shù)也不同。對于一些簡單的單字節(jié)指令,分指令周期可能和機器周期

42、時間相同;而對于一些比較復(fù)雜的指令,如乘除運算則需要多個機器周期才能完成,這時指令周期大于機器周期。      通常,一個機器周期即可完成的指令稱為單周期指令,兩個機器周期才能完成的指令稱為雙周期指令。 AT89S51單片機中的大多數(shù)指令都是單周期或雙周期指令,只有乘、除運算為四周期指令。2.6 AT89S51 的復(fù)位電路     大規(guī)模集成電路在上電時一般都需要進行一次復(fù)位操作,以便使芯片內(nèi)的一些部件處于一個確定的初始狀態(tài),復(fù)位是一種很重要的操作。器件本身一般不具有自動上電復(fù)位能力,需要借助外部復(fù)位電路提供的復(fù)位

43、信號才能進行復(fù)位操作。 2.6.1 復(fù)位電路設(shè)計     AT89S51單片機的第9腳(RST)為復(fù)位引腳,系統(tǒng)上電后,時鐘電路開始工作,只要RST 引腳上出現(xiàn)大于兩個機器周期時間的高電平即可引起單片機執(zhí)行復(fù)位操作。有兩種方法可以使AT89S51單片機復(fù)位,即在RST引腳加上大于兩個機器周期時間的高電平或WDT計數(shù)溢出。單片機復(fù)位后,PC=0000H,CPU從程序存儲器的0000H開始取指執(zhí)行。復(fù)位后,單片機內(nèi)部各SFR 的值如表2.3所示。單片機的外部復(fù)位電路有上電自動復(fù)位和按鍵手動復(fù)位兩種。   ( 1 )上電復(fù)位電路。

44、最簡單的上電復(fù)位電路由電容和電阻串聯(lián)構(gòu)成,如圖2.11所示。    上電瞬間,由于電容兩端電壓不能突變,RST引腳電壓端為VR為VCC,隨著對電容的充電, RST引腳的電壓呈指數(shù)規(guī)律下降,到t1時刻,VR降為3.6V,隨著對電容充電的進行,VR最后將接近0V。RST引腳的電壓變化如圖2.12所示。為了確保單片機復(fù)位,t1必須大于兩個機器周期的時間,機器周期取決于單片機系統(tǒng)采用的晶振頻率,圖2.11中,R不能取得太小,典型值 8.2k;t1與RC 電路的時間常數(shù)有關(guān),由晶振頻率和R可以算出C的取值。   ( 2 )上電復(fù)位和按鍵復(fù)位組合電路     圖2.13上電復(fù)位和按鍵復(fù)位組合電路,R2的阻值一般很小,只有幾十歐姆,當按下復(fù)位按鍵后,電容迅速通過R2放電,放電結(jié)束時的VR為(R1*Vcc)/

溫馨提示

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

提交評論