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

下載本文檔

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

文檔簡介

1、第二章AT89S51單片機(jī)的硬件結(jié)構(gòu)本章從內(nèi)到外”主要講述關(guān)于 AT89S51單片機(jī)的一些基礎(chǔ)知識(shí)。首先介紹AT89S51單片機(jī)的組成、CPU、存儲(chǔ)器組織以及特殊功能寄存器(SFR),然后,詳細(xì)講解了 AT89S51的引腳分布及其功能; 最后,討論了使用AT89S51單片機(jī)時(shí)的時(shí)鐘和復(fù)位電路。2.1 AT89S51單片機(jī)的組成如前所述,AT89S51單片機(jī)與MCS-51完全兼容,內(nèi)部的結(jié)構(gòu)如圖2.1所示:從功能上分,它包括如下部件:一個(gè)8位中央處理器(CPU); 4K可在線編程Flash ; 128字節(jié)RAM與特殊功能寄存器;2個(gè)16位定時(shí)/計(jì)數(shù)器;中斷邏輯控制電路;一個(gè)全雙工串行接口(UAR

2、T); 32條可編程的I /O 口線;另外,還包括一些寄存器如程序計(jì)數(shù)器PC、程序狀態(tài)寄存器 PSW、堆棧指針寄存器SP、數(shù)據(jù)指針寄存器DPTR等部件。2.2 AT89S51 單片機(jī)CPU的結(jié)構(gòu)CPU是單片機(jī)的核心,它主要由運(yùn)算器( ALU)、時(shí)序控制邏輯電路(控制器)以及各種寄存器等部件 組成。(1 )運(yùn)算器的功能是進(jìn)行算術(shù)和邏輯運(yùn)算。它主要由算術(shù)邏輯單元ALU (Arithmetic Logic Unit )和寄存器組成,實(shí)現(xiàn) 加、減、乘、除、比較”等算術(shù)運(yùn)算和 與、或、異或、求補(bǔ)、循環(huán)”等邏輯操作。運(yùn)算器中 還包含一個(gè)布爾處理器,可以執(zhí)行置位、清零、求補(bǔ)、取反、測試、邏輯與、邏輯或等操作

3、,為單片機(jī)的 應(yīng)用提供了極大的便利。(2 )控制器的主要功能是產(chǎn)生各種控制信號(hào)和時(shí)序。在CPU內(nèi)部協(xié)調(diào)各寄存器之間的數(shù)據(jù)傳送,完成ALU的各種算術(shù)或邏輯運(yùn)算操作;在CPU訪問外部存儲(chǔ)器或端口時(shí),提供地址鎖存信號(hào)ALE、外部程序存貯器選通信號(hào)PSEN以及讀(/RD )、寫(/WR )等控制信號(hào)。(3 )寄存器。CPU中還有一些寄存器,如累加器(ACC)、程序狀態(tài)字(PSW)、B寄存器、程序計(jì) 數(shù)器PC、堆棧指針(SP)、指令寄存器(IR)等,這些寄存器有的在片內(nèi)特殊功能寄存器空間有地址映 像,它們既可看作 CPU的寄存器,也可看作具有確定單元的存儲(chǔ)單元。?累加器ACC( Accumulator

4、)。ACC是一個(gè)8位的寄存器,也是 CPU中最重要、最繁忙的寄存器,許 多運(yùn)算中的數(shù)據(jù)和結(jié)果都要經(jīng)過累加器。?程序狀態(tài)字PSW(Program Status Word )。PSW是一個(gè)8位的寄存器,用于存放程序運(yùn)行結(jié)果的一 些特征,本書擬在特殊功能寄存器一節(jié)詳細(xì)介紹。? B寄存器。B寄存器主要是和 ACC配合完成乖法和除法運(yùn)算,存放運(yùn)算結(jié)果,不進(jìn)行乖、除運(yùn)算時(shí), B寄存器可作為RAM使用。?程序計(jì)數(shù)器PC。程序計(jì)數(shù)器PC用來存放即將執(zhí)行的指令地址。它是一個(gè)獨(dú)立的16位寄存器,沒有內(nèi)存映射單元,總是指向?qū)⒁獔?zhí)行的指令的地址,并具有內(nèi)容自動(dòng)加I功能。?堆棧指針SP(Stack Pointer )。

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

6、時(shí),C就類似進(jìn)行字節(jié)操作的 ACC用作數(shù)據(jù)源或存放結(jié)果。通過位操作指令可以實(shí)現(xiàn)置位、清零、取反以及位邏輯運(yùn)算等操作。2.3 AT89S51單片機(jī)系統(tǒng)的存貯器組織單片機(jī)系統(tǒng)中,存放程序的存儲(chǔ)器稱為程序存儲(chǔ)器,類似與通用計(jì)算機(jī)系統(tǒng)中的ROM,只能進(jìn)行讀操作,存放數(shù)據(jù)的存儲(chǔ)器稱為數(shù)據(jù)存儲(chǔ)器,相當(dāng)于通用計(jì)算機(jī)系統(tǒng)中的RAM。與通用計(jì)算機(jī)系統(tǒng)不同,單片機(jī)系統(tǒng)中的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器都有各自2FH7FH7FH7DH7CH7BH7 AH79HTEH2EH77H76H75HMH73H72H71H70H5EH6CH6AH泗2CH7H66HS4H63H62H61H伽2BH5FH5EH咒H5AH翊黨H57H5(5

7、H55H54H訂H52H51H50H4FH4EH4DR呦4BH4AH嶇H2SH47HMH塑H43H42H41H觀)H27H3FH3EH3DH3CH3BH3AH泗3H37H36H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H坊H25口M口23H22H21H加H1FH1EH1DH1CH1BH1AH1?H1H17H16H15H14H13H12H11H10H21H0FHOEHODHOCHOBHOAHOSHOSH20H07HOSH05H04HOSH02H01HOOH3 ) RAM區(qū)。30H7FH共80個(gè)字節(jié)稱為RAM區(qū),RAM區(qū)一般作為普通的數(shù)據(jù)緩沖區(qū)和

8、堆棧區(qū)使用(2 )專用功能寄存器區(qū)。專用功能寄存器 (SFR)也稱為特殊功能寄存器,主要用于控制、管理單片機(jī)內(nèi) 部各種部件如算術(shù)邏輯部件、I /O 口、串行口( UART)、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作,用 戶通過編程專用功能寄存器設(shè)定對(duì)應(yīng)模塊的工作方式。各專用功能寄存器名稱、符號(hào)、地址以及復(fù)位值如表的讀信號(hào)(PSEN 、/RD),換言之,單片機(jī)系統(tǒng)的存儲(chǔ)器可2.3所示:以分成兩個(gè)物理存儲(chǔ)器,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,它們的范圍都是64KB 。OFSHOFOH0E2HOEDHODEHODOHOCSHOCOHOBSHDBOHUASHOAOH9陽5DH卿80HB00000000ACC00

9、030000PSW00000000IP xjdOOGOOOP311111111IEOmOOOOOOP211111111AUXR1WDTR5TSCON00030000SBUFPl 11111111TCON 00000000CD OOOOOOCTLQ oaooooaoTHO ooooooooTL1 ooooooooTH1 ooooooooAUXRKXKOOlrf)P011111111SF 00000111DFDL ooocoanDPOHOQOOOOOODP1LOOOOOOOODP1H otaooooPOON2.3 AT89S51單片ISFR和復(fù)位佰OFPM0F7HOEFH0E7HODFH0D7HO

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

11、址(高恆 應(yīng)地址(甌位)SFROFOH0F7H0F6H0F5H0F4H0F3H0F2HOFLHOFDHBQEOH0E7H0E6H0E5H0E4H0E3H0E2H0E1HOEOHACCODOHGD7HODHGD5H0D4H0D3H0D2H0D1HODOHPSW0B8H.OBCH(JBBHOBAH0B9H0B3HIPOBDH0B7H0B6H0B5H0B4H0B3H0B2HGB1HGBOHP30A3H0AFHOAEH0ADHOACH0ABH0AAHOAPH0A8HIEOAOH0A7H0A6H0A5H0A4H0A3H0A2H0A1HOAOHP29FH9EH9DH9CH9BHPAH99H9SHSCON3

12、0H97H96H95H94H93H92H91H90HPl88HSFHSEH8DHSCHSBHSAH39HSSHICON30H87H86H35H84H83H82H31H80HPO1 )累加器ACC和B寄存器在2.2節(jié)已經(jīng)介紹過,這里不再贅述。2 )程序狀態(tài)字寄存器(PSW) o PSW是8位寄存器,用于反映操作或運(yùn)算結(jié)果的狀態(tài),字節(jié)地址為0D0H,是一個(gè)可進(jìn)行位尋址的寄存器,各位具體定義如表2.5所示:表2.6所示。ESIESO寄存器組片內(nèi)RAN地址00第0組OOHOTH01第!組OSHOFM10第2組10K17H11第Z組lSKlFH表2.5工作寄存器選擇表2$ PSW寄存器的泣定文位D7D6

13、D5D4D3D2DiDOCACFORSIRSOOVP位地址0D?H0D6H0D5H0D4H0D3H0D2H0D1HODOH? P :奇偶標(biāo)志(Parity flag )。如果 ACC中有奇數(shù)個(gè)1,則P為I,否則P為0。? OV :溢出標(biāo)志(Overflow flag )。有符號(hào)數(shù)運(yùn)算時(shí),如果發(fā)生溢出,則 0V被置I,否則清0。對(duì)于有 符號(hào)數(shù),如果用最高位表示符號(hào),則一個(gè)字節(jié)能表示的數(shù)的范圍為-128+127 。如果運(yùn)算結(jié)果超出了這個(gè)數(shù)值范圍,就會(huì)發(fā)生溢出,此時(shí),0V被置I;在乘法運(yùn)算中,如果乘積超過255,貝U OV被置l ;在除法運(yùn)算中,除數(shù)為0時(shí),0V被置I。? RS1、RS0 :工作寄存

14、器組選擇位(Register bank Select control bits ),當(dāng)前工作寄存器組的選擇如用戶可以用軟件改變 RS1和RSO的值以切換當(dāng)前選用的工作寄存器組。單片機(jī)在復(fù)位時(shí),RS1、RSO均為0,故復(fù)位啟動(dòng)后,當(dāng)前工作寄存器的缺省選擇為第0組。? F0 :用戶標(biāo)志。由用戶置位或復(fù)位。PSW.1為保留位(Reserved )。? AC :輔助進(jìn)位標(biāo)志(Auxiliary Carry flag )。AC主要用于BCD碼運(yùn)算,當(dāng)進(jìn)行加法(或減法)運(yùn)算時(shí),如果低半字節(jié)(D3 )向高半字節(jié)(D4 )有進(jìn)位(或借位),則AC置1,否則清0。? C :進(jìn)位標(biāo)志(Carry flag )。在

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

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

17、Data Buffer register )。SBUF實(shí)際上是兩個(gè)獨(dú)立的寄存器,即發(fā)送數(shù)據(jù)緩沖寄存器和接收數(shù)據(jù)緩沖寄存器,兩個(gè)寄存器共用一個(gè)地址(SBUF),當(dāng)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)被送往發(fā)送數(shù)據(jù)緩沖寄存器;當(dāng)接收數(shù)據(jù)時(shí),接收到的數(shù)據(jù)被送往接收數(shù)據(jù)緩沖寄存器。7 ) TH0、TL0、TH1和TL1。單片機(jī)有 2個(gè)16位的定時(shí)/計(jì)數(shù)器,即 T0和T1,TH0、TL0和TH1、TL1分別為T0和T1計(jì)數(shù)寄存器的高8位和低8位。8 ) IP、IE、TMOD、TCON、SCON和PCON。這些SFR包含了單片機(jī)的中斷系統(tǒng)、定時(shí) /計(jì)數(shù)器以及串行口等部件的工作方式和狀態(tài)位,詳解見第四章。9 )輔助寄存器 AU

18、XR (Auxiliary Register )。AUXR的地址為08EH,各位功能如表 2.7所示: 表7輔助寄存SSAUXR的定義位07D6D5D4D3D2D1DO位功能WDIDLEDISRTODISALE? DISALE :禁止或允許(Disable/Enable ) ALE信號(hào)。為1時(shí),僅當(dāng)執(zhí)行 MOVX和MOXC指令時(shí),ALE才激活(出現(xiàn));為 0時(shí),ALE信號(hào)始終以振蕩器1/6的頻率出現(xiàn)在單片機(jī)的 ALE引腳上。? DISRTO :禁止或允許 WDT溢出時(shí)的復(fù)位輸出(Disable/Enable Reset-out )。為1時(shí),單片機(jī)的復(fù)位 引腳僅用于輸入;為0時(shí),在WDT溢出后,

19、單片機(jī)的復(fù)位引腳輸出一個(gè)高電平脈沖。? WDIDLE :在空閑模式下禁止或允許 WDT的計(jì)數(shù)器計(jì)數(shù)。為1時(shí),空閑模式時(shí) WDT的計(jì)數(shù)停止計(jì)數(shù);為0時(shí),空閑模式時(shí) WDT的計(jì)數(shù)器繼續(xù)計(jì)數(shù)。? “一保留位,用于擴(kuò)展。系統(tǒng)復(fù)位后,AUXR的值為:xxx00xx0,即復(fù)位后,單片機(jī)系統(tǒng)缺省的狀態(tài)是:ALE信號(hào)始終出現(xiàn)在單片機(jī)的ALE引腳;WDT溢出后,單片機(jī)的復(fù)位引腳輸出一個(gè)寬度為98個(gè)機(jī)器周期的高電平脈沖;空閑模式時(shí) WDT的計(jì)數(shù)器繼續(xù)計(jì)數(shù)。10 )輔助寄存器 AUXR1 (Auxiliary Register 1 )。AUXR1的地址為0A2H,各位功能如表 2.8所示:表28輔肋寄存器AUXR1

20、的定義位D7D6D5D4E3D2D1DO位功能DPS? DPS :數(shù)據(jù)指針寄存器選擇( Data Pointer Register Select )。為 1 時(shí),選擇 DP1L 和 DP1H 為當(dāng)前 DPTR;為0時(shí),選擇 DPOL和DPOH為當(dāng)前DPTR ;? “保”留位,用于擴(kuò)展。系統(tǒng)復(fù)位后,DPS為0,即選擇DPOL和DPOH為當(dāng)前DPTR。11 ) WDTRST :看門狗定時(shí)器復(fù)位( Watchdog Timer Reset )專用功能寄存器。單片機(jī)系統(tǒng)在正常工作時(shí),CPU常會(huì)受到各種干擾,使程序陷入死循環(huán)或跑飛狀態(tài),看門狗定時(shí)器(WDT ,Watchdog Timer )是一種能使程

21、序自動(dòng)恢復(fù)到正常的運(yùn)行狀態(tài)的有效方法。AT89S51 單片機(jī)內(nèi)部包含了一個(gè)WDT,它包含了一個(gè)14位的計(jì)數(shù)器和一個(gè)看門狗定時(shí)器復(fù)位(WDTRST) SFR,WDTRST的地址為0A6H。當(dāng)WDT使能后,只要振蕩器在工作,每個(gè)機(jī)器周期都會(huì)使WDT計(jì)數(shù)器的值加1。WDT的工作原理如下:正常情況下,程序周期性地在 WDT計(jì)數(shù)器的值到達(dá)3FFFH之前對(duì)其進(jìn)行清0,如果CPU受到干擾使程序 進(jìn)入非正常運(yùn)行狀態(tài),這種清零操作將不再被執(zhí)行,當(dāng) WDT 的計(jì)數(shù)器的值到達(dá) 3FFFH 時(shí),便產(chǎn)生溢出,引 起單片機(jī)復(fù)位,在單片機(jī)的 RST引腳上輸出一寬度為98個(gè)振蕩周期的正脈沖,同時(shí),置 PC的值為0000H ,

22、 程序從頭開始重新執(zhí)行,恢復(fù)到正常的運(yùn)行狀態(tài)。單片機(jī)上電復(fù)位后, WDT 的缺省狀態(tài)是禁止, 為了使能 WDT ,用戶必須按順序依次向 WDTRST 寫入 1EH 和 0E1H 兩字節(jié)數(shù)據(jù)。 WDT 一旦使能,將無法通過軟件禁止,用戶必須在最長 16383 個(gè)機(jī)器周期時(shí)間內(nèi)對(duì) WDT的計(jì)數(shù)器清0,計(jì)數(shù)器清0操作同使能 WDT 一樣,也是按順序依次向 WDTRST寫入1EH和0E1H兩 字節(jié)數(shù)據(jù),換言之,每次按順序依次向WDTRST寫入1EH和0E1H兩字節(jié)數(shù)據(jù)后, WDT計(jì)數(shù)器都從0重新開始計(jì)數(shù)。 WDTRST 是一個(gè)只寫寄存器,而 WDT 的計(jì)數(shù)器既不能讀,也不能寫。當(dāng)單片機(jī)工作在掉電模式(

23、 Power-down mode )時(shí),振蕩器停止,這時(shí) WDT 的計(jì)數(shù)器也停止計(jì)數(shù),用戶 程序可以不再對(duì)其進(jìn)行清 0 操作。硬件復(fù)位和低電平觸發(fā)的外部中斷都可以使單片機(jī)退出掉電模式。如果是 硬件復(fù)位退出掉電模式,以后對(duì) WDT 操作和正常系統(tǒng)復(fù)位時(shí)的操作完全相同;如果是低電平中斷引起退出掉 電模式,則要求引起中斷的低電平信號(hào)要有足夠的寬度,以保證振蕩器在低電平期間能進(jìn)入穩(wěn)定的工作狀態(tài)。 為了避免在中斷信號(hào)為低電平期間,WDT引起復(fù)位,WDT計(jì)數(shù)器在中斷信號(hào)變成高電平后才開始計(jì)數(shù)。一般情況下,進(jìn)入中斷服務(wù)程序時(shí),要對(duì)WDT的計(jì)數(shù)器清0。為了避免在剛退出掉電模式的幾個(gè)機(jī)器周期內(nèi)產(chǎn)生復(fù)位,最好在進(jìn)

24、入掉電模式前,先對(duì)WDT的計(jì)數(shù)器執(zhí)行一次清0操作。SFR AUXR中的 WDIDLE位決定了空閑(IDLE mode )模式時(shí) WDT的計(jì)數(shù)器是否繼續(xù)計(jì)數(shù),若WDIDLE為0 (缺省值),則在空閑模式時(shí), WDT的計(jì)數(shù)器會(huì)繼續(xù)計(jì)數(shù), 為了避免在空閑模式時(shí),WDT引起AT89S51單片機(jī)復(fù)位,用戶程序總是設(shè)置一個(gè)定時(shí)器,周期性地退出空閑模式,對(duì)WDT 的計(jì)數(shù)器清 0 ,然后,再進(jìn)入空閑模式。當(dāng) WDIDLE 為 1 時(shí),在空閑模式, WDT 的計(jì)數(shù)器停止計(jì)數(shù),退出空閑模式時(shí), WDT 的計(jì)數(shù)器 恢復(fù)計(jì)數(shù)。(3 )外部數(shù)據(jù)存儲(chǔ)器。當(dāng)內(nèi)部 RAM不夠用,就需要擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器,原則最大可擴(kuò)展64K

25、B。按照訪問方式的不同,外部數(shù)據(jù)存儲(chǔ)器也可分成二塊,最低的256字節(jié)(0000H00FFH )既通過DPTR尋址,也可能通過 R0 和 R1 間接尋址,而 0100H0FFFFH 只能通過 DPTR 間接尋址。實(shí)際使用中,可以通過分頁技術(shù)使外部數(shù)據(jù)存儲(chǔ)器的容量遠(yuǎn)遠(yuǎn)超過64KB ;另一種方法是使用非并行接口的存儲(chǔ)器芯片,如使用I2C接口的存儲(chǔ)器芯片或 SPI接口的存儲(chǔ)器芯片,可使數(shù)據(jù)存儲(chǔ)器的容量擴(kuò)至數(shù)百兆。 單片機(jī)的外部數(shù)據(jù)存儲(chǔ)器和端口是統(tǒng)一編址的, 也就是說, 如果某一個(gè)單元作了端口, 就不能再作為存儲(chǔ)器單 元,反之,如果某一個(gè)單元作為存儲(chǔ)器單元,就不能再作為端口。2.4 AT89S51 單片

26、機(jī)引腳及功能AT89S51 單片機(jī)有 4 種封裝形式,分別為 40-lead PDIP 、44-lead PLCC 、40-lead TQFP 和 42-lead PDIP , 其中 40 腳 PDIP 封裝的引腳分布如圖 2.5 所示,引腳描述如下:( 1 )電源引腳( 2 條, VCC、 GND)VCC (40 Pin )接 +5V 電源;GND( 20 Pin )接地。( 2 )外接晶體引腳( 2條, XTAL1、 XTAL2 )XTAL1 (19 Pin )外接石英晶體和微調(diào)電容,在單片機(jī)內(nèi)部,它是構(gòu)成片內(nèi)振蕩器的反相放大器輸入端。 當(dāng)采用外部振蕩器時(shí),此引腳接地。XTAL2 ( 18

27、 Pin ):外接石英晶體和微調(diào)電容的另一端,在單片機(jī)內(nèi)部,它接至片內(nèi)振蕩器的反相放大 器輸出端。當(dāng)采用外部振蕩器時(shí),該引腳接收外部振蕩器信號(hào),即外部振 蕩器通過 XTAL2 被送到單片機(jī)內(nèi)部的時(shí)鐘發(fā)生器輸入端。(3 )控制類引腳(4 條,RST、ALE、/EA 和/PSEN)RST ( 9 Pin)復(fù)位信號(hào)(Reset)引腳。RST為輸入引腳,當(dāng)振蕩 器在運(yùn)行時(shí),該引腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平,即可引起單片機(jī) 復(fù)位,復(fù)位一般有兩種,即上電或手動(dòng)復(fù)位以及WDT超時(shí)復(fù)位。如果DIS RTO 允許 復(fù)位 輸 出, 則當(dāng)WDT 引起 復(fù)位時(shí),會(huì)在RST引輸出一個(gè)寬度為98 個(gè)機(jī)器周期的正脈沖。

28、ALE( 30 Pin )地址鎖存允許信號(hào) (Address Latch Enable )。ALE是輸出信號(hào)引腳,用于鎖 存訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)的低 8 位地址。在正常情況下, ALE 信號(hào)總以固定頻率(振蕩器頻率的 1/6 )周期地出現(xiàn), 可用作對(duì)外定時(shí)或?yàn)槠渌酒峁r(shí)鐘,每當(dāng)訪問外部數(shù) 據(jù)存儲(chǔ)器時(shí),將會(huì)丟失一個(gè) ALE 脈沖。如果需要, ALE 信 號(hào)也可通過設(shè)置SRF(8EH)位而被禁止。/EA( 30 Pin )外部存取允許 ( External Access Enable )信號(hào)。 /EA 為輸入信號(hào)引腳, 當(dāng)使用外部程序存儲(chǔ)器時(shí), 即希望程序從外部 程序存儲(chǔ)器的 0000H 開始

29、執(zhí)行程序時(shí), /EA 必須接 GND ;當(dāng) /EA 為高電平時(shí),單片機(jī)復(fù) 位后,將從內(nèi)部 Flash 的 0000H 開始取指。 當(dāng)需要對(duì)單片機(jī)內(nèi)部 Flash 編程時(shí),該引腳(/PROG)也接收12V的編程電壓。/PSEN( 29 Pin ):外部程序存儲(chǔ)器 “讀” 選通信號(hào), 在訪問外部程序存儲(chǔ)器期間, 每個(gè) 機(jī)器周期, 該信號(hào)兩次有效, 但當(dāng)訪問外部數(shù) 據(jù)存儲(chǔ)器時(shí), 這兩次有效的 /PSEN 信號(hào)將不會(huì)出現(xiàn)圖27 Pl 口內(nèi)部結(jié)構(gòu)圖門1、2組成輸入緩沖器。P0 口有兩種功能,即地址(4 ) I/O 端口引腳(32 條,PO、P1、P2、P3)AT89S51單片機(jī)共有4個(gè)并行I/O端口,每

30、個(gè)端 口是8位雙向端口,共32條引腳。每個(gè)端口的結(jié)構(gòu)基本 相同,即都包含有鎖存器,輸出驅(qū)動(dòng)和輸入緩沖,但在對(duì) 輸出的控制上有很大差別,因此,在功能和用途上各不相 同,在沒有外擴(kuò)程序或數(shù)據(jù)存儲(chǔ)器系統(tǒng)中,這四個(gè)端口的 每一位都可作為I/O 口使用。1 ) P0 口。P0 口是一個(gè)8位漏極開路的雙向I/O 口,PO.x 的結(jié)構(gòu)如圖2.6所示。VI、V2構(gòu)成輸出驅(qū)動(dòng)器,與門 3、 反向器4以及多路模擬開關(guān)MUX構(gòu)成輸出控制電路,三態(tài) /數(shù)據(jù)分時(shí)復(fù)用總線和I/O接口。當(dāng)單片機(jī)系統(tǒng)有外接存儲(chǔ)器時(shí),P0 口用作地址/數(shù)據(jù)分時(shí)復(fù)用總線。當(dāng)需要輸岀地址信息時(shí),控制信號(hào)為“1,”CPU控制多路開關(guān) MUX使AC相

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

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

33、存器1D QP2xCL 0數(shù)據(jù)讀引腳圖28 P2 口內(nèi)部結(jié)構(gòu)圖3 ) P2 口。P2 口具有內(nèi)部上拉的電阻的 準(zhǔn)8位雙向I/O 口,結(jié)構(gòu)如圖2.8所示。 它有兩種功能,當(dāng)系統(tǒng)有外部存儲(chǔ)器時(shí),P2 口用作地址總線,提供高 8位地址 訂 (A15A8 ),這時(shí)控制信號(hào)為 “1” MUX 總整1 L的AC相接,地址信號(hào)經(jīng)過緩沖器 3到達(dá)P2.X當(dāng)系統(tǒng)沒有外部存儲(chǔ)器,P2可作為通 用的I/O 口使用,工作原理與 P1 口相同。4 ) P3 口。P3 口也是具有內(nèi)部上拉的 電阻的準(zhǔn)8位雙向I/O 口,P3 口的每條線 都有兩種功能,即作為I/O和第二功能。結(jié)構(gòu)如圖 2.9 所示。P3 口用作輸出時(shí),數(shù)據(jù)

34、由鎖存器的 Q 端經(jīng)與非門 3 和反相器到達(dá) P3.x ;輸入數(shù)據(jù)時(shí),鎖存器的 Q 端必須 為高電平, V 管截止,數(shù)據(jù)信號(hào)從 P3.x 經(jīng)緩沖器 4 和 1 最后進(jìn)入內(nèi)部數(shù)據(jù)總線。P3 口的每條線都有第二功能,如表 2.9 所示。 P3 口作為第二功能使用時(shí),其鎖存器的 Q 端必須為高電平, 否則,若Q為低電平,則與非門3將輸出高電平,使 V管導(dǎo)通,第二功能輸入時(shí),P3.X被鉗成低電平,使得第二功能輸入信號(hào)恒為低電平;第二功能輸出時(shí),若Q為“0,貝U與非門3的輸出恒為高電平,V管導(dǎo)通,P3.X恒為低電平。表29巧口的第二功能引即第二功能P3.0嗣伸行輸入)輸入P3.1TXD 串行口輸岀)輸出

35、/INTO汁卜部中斷輸入F3 3(外部中斷)輸入)P3.4TO (定時(shí)符數(shù)器0的外部輸入)輸入T1 (定時(shí)研數(shù)器1的外部輸入)輸入P3.6WR,片外數(shù)據(jù)存儲(chǔ)器寫選通輸出P3.7眄 片外數(shù)據(jù)存儲(chǔ)器讀選通輸出PO、P1、P2、P3 口可總結(jié)如下:?從結(jié)構(gòu)上講,每個(gè)端口均有鎖存器、輸岀驅(qū)動(dòng)和輸入緩沖等組成? P1、P2、P3 口內(nèi)部均有上拉電阻,當(dāng)它們用作通用輸入口(即讀引腳狀態(tài))時(shí),對(duì)應(yīng)位的鎖存器Q端必須先置為“1” P0 口內(nèi)部無上拉電阻,作為 I/O 口使用時(shí),必須外接上拉電阻,讀引腳時(shí),對(duì)應(yīng)的鎖存器也 必須先置“1。?當(dāng)系統(tǒng)有外部存儲(chǔ)器時(shí),P0 一般分時(shí)用作地址/數(shù)據(jù)總線,P2用作高8位地址

36、總線,P3 口的P3.7和P3.6負(fù)責(zé)提供外部數(shù)據(jù)存儲(chǔ)器的讀、寫信號(hào);當(dāng)系統(tǒng)沒有外部存儲(chǔ)器時(shí),PO、 P1、P2、P3均可用作I/O 口。2.5 AT89S51的時(shí)鐘電路單片機(jī)系統(tǒng)中的各個(gè)部件是在一個(gè)統(tǒng)一的時(shí)鐘脈沖控制下有序地進(jìn)行工作,時(shí)鐘電路是單片機(jī)系統(tǒng)最基本、最重要的電路。2.5.1時(shí)鐘電路AT89S51單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端,如果在引腳XTAL1和XTAL2兩端跨接上晶體振蕩器(晶振)或陶瓷振蕩器就構(gòu)成了穩(wěn)定的自激振蕩電路,該振 蕩器電路的輸出可直接送入內(nèi)部時(shí)序電路。AT89S51單片機(jī)的時(shí)鐘可由兩種方式產(chǎn)生,即內(nèi)部時(shí)鐘

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

38、用系統(tǒng)中大多采用這種方式。內(nèi)部時(shí)鐘方式產(chǎn)生的時(shí)鐘信號(hào)的頻率就是晶振的固有頻率,常用fsoc來表示。如選擇12MHz晶振,則fsoc=12 X 106Hz。(2 )外部時(shí)鐘方式。外部時(shí)鐘方式即完全用單片機(jī)外部電路產(chǎn)生時(shí)鐘的方法,外部電路產(chǎn)生的時(shí)鐘信號(hào)被直接接到單片機(jī)的 XTAL1弓I,此時(shí)XTAL2開路,具體電路如圖 2.10 ( b )所示。2.5.2 CPU工作周期。CPU在執(zhí)行指令時(shí),都是按照一定順序進(jìn)行的,由于指令的字節(jié)數(shù)不同,取指所需時(shí)間也就不同,即使是字節(jié)數(shù)相同的指令,執(zhí)行操作也會(huì)有很大差別,不同的指令的執(zhí)行時(shí)間當(dāng)然也不相同,即CPU在執(zhí)行各個(gè)指令時(shí),所需要的節(jié)拍數(shù)是不同的。為了便于

39、對(duì)CPU時(shí)序的理解,人們按指令的執(zhí)行過程定義了幾個(gè)名詞,即時(shí)鐘周期、機(jī)器周期和指令周期。(1 )時(shí)鐘周期。時(shí)鐘周期也稱為振蕩周期,定義為時(shí)鐘脈沖頻率(fOSC)的倒數(shù),是單片機(jī)中最基本的、最小的時(shí)間單位。由于時(shí)鐘脈沖控制著計(jì)算機(jī)的工作節(jié)奏,對(duì)同一型號(hào)的單片機(jī),時(shí)鐘頻率越高,計(jì)算機(jī)的工作速度顯然就會(huì)越快。然而,受硬件電路的限制,時(shí)鐘頻率也不能無限提高,對(duì)某一種型號(hào)的單片機(jī),時(shí)鐘頻率都有一個(gè)范圍,如對(duì) AT89S51單片機(jī),其時(shí)鐘頻率范圍是 033MHz。為方便描述,振蕩周期一般用P(pause) 表示。(2 )機(jī)器周期。完成一個(gè)最基本操作(讀或?qū)?所需要的時(shí)問稱為機(jī)器周期。AT89S51單片機(jī)的

40、機(jī)器周期是固定的,即一個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成。采用 6MHz的時(shí)鐘頻率時(shí),一個(gè)機(jī)器周期就是2gs,采用12MHz的時(shí)鐘頻率時(shí),一個(gè)機(jī)器周期就是1gs。(3 )指令周期。指令周期是執(zhí)行一條指令所需要的時(shí)間,一般由若干個(gè)機(jī)器周期組成,指令不同,后 需要的機(jī)器周期數(shù)也不同。對(duì)于一些簡單的單字節(jié)指令,分指令周期可能和機(jī)器周期時(shí)間相同;而對(duì)于一些比較復(fù)雜的指令,如乘除運(yùn)算則需要多個(gè)機(jī)器周期才能完成,這時(shí)指令周期大于機(jī)器周期。通常,一個(gè)機(jī)器周期即可完成的指令稱為單周期指令,兩個(gè)機(jī)器周期才能完成的指令稱為雙周期指令。AT89S51單片機(jī)中的大多數(shù)指令都是單周期或雙周期指令,只有乘、除運(yùn)算為四周期指令

41、。2.6 AT89S51的復(fù)位電路大規(guī)模集成電路在上電時(shí)一般都需要進(jìn)行一次復(fù)位操作,以便使芯片內(nèi)的一些部件處于一個(gè)確定的初始 狀態(tài),復(fù)位是一種很重要的操作。器件本身一般不具有自動(dòng)上電復(fù)位能力,需要借助外部復(fù)位電路提供的 復(fù)位信號(hào)才能進(jìn)行復(fù)位操作。261復(fù)位電路設(shè)計(jì)AT89S51單片機(jī)的第9腳(RST)為復(fù)位引腳,系統(tǒng)上電后,時(shí)鐘電路開始工作,只要RST引腳上出現(xiàn)大于兩個(gè)機(jī)器周期時(shí)間的高電平即可引起單片機(jī)執(zhí)行復(fù)位操作。有兩種方法可以使AT89S51單片機(jī)復(fù)位,即在RST引腳加上大于兩個(gè)機(jī)器周期時(shí)間的高電平或 WDT計(jì)數(shù)溢出。單片機(jī)復(fù)位后, PC=OOOOH, CPU從程序存儲(chǔ)器的0000H開始取

42、指執(zhí)行。復(fù)位后,單片機(jī)內(nèi)部各 SFR的值如表2.3所示。單片機(jī)的外 部復(fù)位電路有上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種。(1 )上電復(fù)位電路。最簡單的上電復(fù)位電路由電容和電阻串聯(lián)構(gòu)成,如圖2.11所示。上電瞬間,由于電容兩端電壓不能突變,RST引腳電壓端為 VR為VCC,隨著對(duì)電容的充電, RST引腳的電壓呈指數(shù)規(guī)律下降,到t1時(shí)刻,VR降為3.6V,隨著對(duì)電容充電的進(jìn)行,VR最后將接近0V。RST引腳的電壓變化如圖2.12所示。為了確保單片機(jī)復(fù)位,t1必須大于兩個(gè)機(jī)器周期的時(shí)間,機(jī)器周期取決于單片機(jī)系統(tǒng)采用的晶振頻率,圖 2.11中,R不能取得太小,典型值8.2k Q; t1與RC電路的時(shí)間常數(shù)有關(guān),由晶振頻率和R可以算出C的取值2.11 RU上電復(fù)位電路(2 )上電復(fù)位和按鍵復(fù)位組合電路圖2.13上電復(fù)位和按鍵復(fù)位組合電路,R2的阻值一般很小,只有幾十歐姆,當(dāng)按下復(fù)位按鍵后,電

溫馨提示

  • 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)論