單片機教案(第1章組成原理)_第1頁
單片機教案(第1章組成原理)_第2頁
單片機教案(第1章組成原理)_第3頁
單片機教案(第1章組成原理)_第4頁
單片機教案(第1章組成原理)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 MCS-51單片機組成原理(初識單片機) MCS-51系列單片機是美國Intel公司生產(chǎn)的高檔8位機,在這個系列中常用的、最典型的有下列三種產(chǎn)品:1、8031單片機;2、8051單片機;3、8751單片機。2-1 MCS-51單片機的內(nèi)部結(jié)構(gòu)框圖: 一、 中央處理器CPU(8位機)由運算器和控制器組成,是單片機的核心:(1) 運算器ALU:完成二進制的算術(shù)運算和邏輯運算功能;(2) 控制器:在時鐘脈沖的作用下,對指令進行譯碼,控制單片機系統(tǒng)的各部件協(xié)調(diào)有序的工作。二、 片內(nèi)ROM主要用于存放程序、原始數(shù)據(jù)和表格等內(nèi)容,也稱為:程序存儲器或片內(nèi)ROM。(在MCS-51系列中:8031單片

2、機,片內(nèi)無ROM;8051單片機,片內(nèi)有4KB的掩膜ROM;8751單片機,片內(nèi)有4KB的EPROM)。三、片內(nèi)RAM(256個字節(jié)單元)(1) 高128個的字節(jié)單元組成了21個特殊功能的寄存器SFR,其功能已有專門規(guī)定,用戶不能亂用;(2) 低128個的字節(jié)單元,作隨機存取單元,供用戶使用。(有時指片內(nèi)RAM為128B就是這個意思)四、 定時器/計數(shù)器(2×16位)片內(nèi)有2個16位的定時/計數(shù)器(T0,T1),并能以其定時或計數(shù)的結(jié)果對系統(tǒng)進行控制。五、并行I/O接口(4×8位)片內(nèi)有4個8位并行I/O接口(P0,P1,P2,P3)。它們可雙向使用。(1) P0口通常用作

3、8位數(shù)據(jù)總線或低8位的位置總線的信息傳送;(2) P1口一般作通用數(shù)據(jù)I/O接口使用;(3) P2口通常用作高8位位置總線的信息傳送;(4) P3口常用于以第2功能(有8種)的輸入或輸出的形式。六、 串行接口片內(nèi)有2個1位的串行接口,TXD為輸出口,RXD為輸入口,它們還可編程為一個全雙工(雙向同步信息傳送)的通用異步串行接口模式(UART)。七、 中斷控制系統(tǒng)MCS-51有5個中斷源:(1)2個外部中斷源;(2)2個定時器/計數(shù)器中斷源;(3)1個串行中斷源。八、 重要功能(1)可以尋址64KB的片外ROM和64KB的片外RAM;(2)具有位操作功能(邏輯處理)的位尋址功能。2-2 CPU的

4、結(jié)構(gòu) CPU是單片機的核心,它由兩大部分所組成:運算器和控制器。一、運算器1、 算術(shù)/邏輯部件:(1) 完成算術(shù)運算。如:加、減、乘、除運算;(2) 完成邏輯運算。如:與、或、非、異或等;(3) 將運算結(jié)果的特征量,作為下一步操作指令的依據(jù)。2、 累加器A:(8位寄存器)(1) 在算/邏運算中用于存放操作數(shù)或結(jié)果(2) 與外部存儲器交換信息時要經(jīng)過A;(3) 與I/O接口交換信息時也要經(jīng)過A。3、 寄存器B:(8位寄存器)(1) 做乘法運算時,用來寄存乘數(shù)或積的高位字節(jié);(2) 做除法運算時,用來寄存除數(shù)或余數(shù);(3) 不做上述運算時,可做通用寄存器使用。4、 程序狀態(tài)標(biāo)志寄存器PSW:(8位

5、寄存器)(1) 進位標(biāo)志位Cy(D7位):做加、減運算時,若運算結(jié)果在最高位有進位或借位時,Cy被硬件自動置“1”,反之則自動置“0”。(2) 輔助進位標(biāo)志位AC:(半進位標(biāo)志位,D6位) 做加、減運算時,若低4位有向高4位進位或借位時,AC被硬件自動置“1”,反之則自動置“0”。 CPU常根據(jù)AC的狀態(tài)對BCD碼的運算結(jié)果進行調(diào)整。(3) 用戶標(biāo)志位F0(D5位):用戶可用軟件對F0位,置“1”或置“0”,以決定程序的走向。(4) 工作寄存器組選擇標(biāo)志位RS1、RS0(D4、D3位):用戶通過軟件改變RS1和RS0的組合內(nèi)容,來選擇片內(nèi)RAM中4組工作寄存器組之一。RS1RS0選定的當(dāng)前使用

6、的工作寄存器組(區(qū))片內(nèi)RAM位置通用寄存器名稱00第0組00H07HR0R701第1組08H0FHR0R710第2組10H17HR0R711第3組18H1FHR0R7(5) 溢出標(biāo)志位OV(D2位): 當(dāng)運算的結(jié)果超過8位二進制數(shù)的允許范圍時,OV由硬件自動置“1”,反之置“0”。(6) 空缺位(D1位):此位未定義。(7) 奇偶校驗標(biāo)志位P(D0位):MCS-51采用偶校驗,當(dāng)A累加器中1的個數(shù)為奇數(shù)時,P被硬件置為“1”,反之被置為“0”。二、控制器控制器主要由定時控制邏輯電路和各種控制寄存器組成,它們嚴(yán)格按照定時電路的各種譯碼指令完成規(guī)定的操作。1、 指令寄存器IR和指令譯碼器ID(8

7、位)IR主要用于寄存指令代碼,并通過ID將指令代碼譯出由控制電路產(chǎn)生相應(yīng)的控制信號。2、 程序計數(shù)器PC是一個十六位的寄存器,專門用于寄存CPU將要執(zhí)行的指令位置(即下一條指令的位置),所以PC會自動加1。PC可尋址64KB范圍的ROM。注意PC本身沒有位置,因此用戶無法對其進行讀寫,但可以通過相應(yīng)的指令改變其內(nèi)容,實現(xiàn)程序的轉(zhuǎn)移。3、 堆棧指針(寄存器)SP(8位)堆棧:只有一個數(shù)據(jù)進/出端口且按照“先進后出”原則管理的存儲器。棧底:堆棧存儲器的底部。此時的堆棧指針為SP。棧頂:存儲器的數(shù)據(jù)入口處??諚r,棧頂?shù)奈恢玫扔跅5椎奈恢?兩者重合)。隨著數(shù)據(jù)的不斷進棧,棧頂?shù)奈恢靡膊粩嗟脑黾?上浮

8、)。數(shù)據(jù)進棧的操作:首先SP+1,送入SP,然后再向堆棧存儲器寫入數(shù)據(jù);數(shù)據(jù)出棧的操作:首先從堆棧存儲器讀出數(shù)據(jù),然后SP-1,送入SP。堆棧指針(寄存器)SP:就是專門用于寄存指示堆棧存儲器位置的寄存器。4、 數(shù)據(jù)指針(位置)寄存器DPTR(16位)是一個十六位的專用寄存器,它由兩個8位的寄存器DPH(高8位)和DPL(低8位)組成。專門用來寄存片外RAM及擴展I/O口進行數(shù)據(jù)存取用的位置。三、寄存器和特殊功能寄存器R1、工作寄存器MCS-51共有32個工作寄存器(在片內(nèi)RAM的00H1FH的位置單元中),分為四個組(區(qū)),每個組(區(qū))有8個寄存器,分別用R0、R1、R2、R3、R4、R5、

9、R6、R7表示。(由前面的表中可以看出)每個時刻只有一個區(qū)工作,而且由程序狀態(tài)標(biāo)志寄存器RS1、RS0來決定。當(dāng)RS1RS0=00時,選定的當(dāng)前的工作器組為第0組(區(qū)),它們的位置分別為00H07H,對應(yīng)的通用寄存器的名稱分別為R0R7。注意:R0、R1不僅做工作寄存器用外,還經(jīng)常用于做間接尋址的位置指針。2、特殊功能寄存器SFR(專用寄存器)MCS-51共有21個特殊功能寄存器(除PC外),離散地分布在片內(nèi)RAM的80H0FFH的位置單元中,共占據(jù)了128個存儲單元,構(gòu)成了SFR存儲塊。 將其位置由大到小排列如下(關(guān)于尋址方式將在下一章討論)特殊功能寄存器 功能名稱 位置 單元內(nèi)復(fù)位后初態(tài)

10、是否可以位尋址B 寄存器 F0H 00H 可以A 累加器 E0H 00H 可以PSW 程序狀態(tài) D0H 00H 可以標(biāo)志寄存器 IP 中斷優(yōu)先級 B8H XXX00000B 可以 控制寄存器P3 P3口數(shù)據(jù)寄存器 B0H FFH 可以IE 中斷允許 A8H 0XX00000B 可以 控制寄存器P2 P2口數(shù)據(jù)寄存器 A0H FFH 可以SBUF 串行口發(fā)送/接收 99H 不定 不可以 數(shù)據(jù)緩沖寄存器SCON 串行口控制寄存器 98H 00H 可以P1 P1口數(shù)據(jù)寄存器 90H FFH 可以TH1 T1計數(shù)器 8DH 00H 不可以 高8位寄存器 TH0 T0計數(shù)器 8CH 00H 不可以 高8

11、位寄存器 TL1 T1計數(shù)器 8BH 00H 不可以 低8位寄存器TL0 T0計數(shù)器 8AH 00H 不可以 低8位寄存器 TMOD 定時器/計數(shù)器 89H 00H 不可以 方式控制寄存器TCON 定時器控制寄存器 88H 00H 可以PCON 電源控制寄存器 87H 00H 不可以DPH 位置寄存器高8位 83H 00H 不可以DPL 位置寄存器低8位 82H 00H 不可以SP 堆棧指針寄存器 81H 07H 不可以P0 P0口數(shù)據(jù)寄存器 80H FFH 可以以上21個特殊功能寄存器,它們的位置能被8整除的都可以位尋址。上面已介紹了B、A、PSW、SP及DPTR,其它的將在以后的章節(jié)中分別

12、讀者討論。23 MCS-51單片機存儲器半導(dǎo)體存儲器1. 幾個基本概念 1. 數(shù)的本質(zhì)和物理現(xiàn)象。 我們知道,計算機可以進行數(shù)學(xué)運算,這可令我們非常的難以理解,計算機嗎,我們雖不了解它的組成,但它總只是一些電子元器件,怎么可以進行數(shù)學(xué)運算呢?我們做數(shù)學(xué)題如37+45是這樣做的,先在紙上寫37,然后在下面寫45,然后大腦運算,最后寫出結(jié)果,運算的原材料:37、45和結(jié)果:82都是寫在紙上的,計算機中又是放在什么地方呢?為了解決這個問題,先讓我們做一個實驗:這里有一盞燈,我們知道燈要么亮,要么不亮,就有兩種狀態(tài),我們可以用0和1來代替這兩種狀態(tài),規(guī)定亮為1,不亮為0?,F(xiàn)在放上兩盞燈,一共有幾種狀態(tài)

13、呢?我們列表來看一下:狀態(tài) 表達 0 0 0 1 1 0 1 1 請大家自已寫上3盞燈的情況000 001 010 011 100 101 110 111我們來看,這個000,001,101 不就是我們學(xué)過的的二進制數(shù)嗎?本來,燈的亮和滅只是一種物理現(xiàn)象,可當(dāng)我們把它們按一按的順序排更好后,燈的亮和滅就代表了數(shù)字了。讓我們再抽象一步,燈為什么會亮呢?看電路1,是因為輸出電路輸出高電平,給燈通了電。因此,燈亮和滅就可以用電路的輸出是高電平還是低電平來替代了。這樣,數(shù)字就和電平的高、低了解上了。(請想一下,我們還看到過什么樣的類似的例子呢?(海軍之)燈語、旗語,電報,甚至紅、綠燈)2. 位的含義:

14、 通過上面的實驗我們已經(jīng)知道:一盞燈亮或者說一根線的電平的高低,可以代表兩種狀態(tài):0和1。實際上這就是一個二進制位,因此我們就把一根線稱之為一“位”,用BIT表示。3. 字節(jié)的含義: 一根線可以表于0和1,兩根線可以表達00,01,10,11四種狀態(tài),也就是可以表于0到3,而三根可以表達0-7,計算機中通常用8根線放在一起,同時計數(shù),就可以表過到0-255一共256種狀態(tài)。這8根線或者8位就稱之為一個字節(jié)(BYTE)。不要問我為什么是8根而不是其它數(shù),因為我也不知道。(計算機世界是一個人造的世界,不是自然界,很多事情你無法問為什么,只能說:它是一種規(guī)定,大家在以后的學(xué)習(xí)過程中也要注意這個問題)

15、1. 存儲器的工作原理: 1、存儲器構(gòu)造存儲器就是用來存放數(shù)據(jù)的地方。它是利用電平的高低來存放數(shù)據(jù)的,也就是說,它存放的實際上是電平的高、低,而不是我們所習(xí)慣認(rèn)為的1234這樣的數(shù)字,這樣,我們的一個謎團就解開了,計算機也沒什么神秘的嗎。圖2圖3 讓我們看圖2。這是一個存儲器的示意圖:一個存儲器就象一個個的小抽屜,一個小抽屜里有八個小格子,每個小格子就是用來存放“電荷”的,電荷通過與它相連的電線傳進來或釋放掉,至于電荷在小格子里是怎樣存的,就不用我們操心了,你可以把電線想象成水管,小格子里的電荷就象是水,那就好理解了。存儲器中的每個小抽屜就是一個放數(shù)據(jù)的地方,我們稱之為一個“單元”。

16、有了這么一個構(gòu)造,我們就可以開始存放數(shù)據(jù)了,想要放進一個數(shù)據(jù)12,也就是00001100,我們只要把第二號和第三號小格子里存滿電荷,而其它小格子里的電荷給放掉就行了(看圖3)??墒菃栴}出來了,看圖2,一個存儲器有好多單元,線是并聯(lián)的,在放入電荷的時候,會將電荷放入所有的單元中,而釋放電荷的時候,會把每個單元中的電荷都放掉,這樣的話,不管存儲器有多少個單元,都只能放同一個數(shù),這當(dāng)然不是我們所希望的,因此,要在結(jié)構(gòu)上稍作變化,看圖2,在每個單元上有個控制線,我想要把數(shù)據(jù)放進哪個單元,就給一個信號這個單元的控制線,這個控制線就把開關(guān)打開,這樣電荷就可以自由流動了,而其它單元控制線上沒有信號,所以開關(guān)

17、不打開,不會受到影響,這樣,只要控制不同單元的控制線,就可以向各單元寫入不同的數(shù)據(jù)了,同樣,如果要某個單元中取數(shù)據(jù),也只要打開相應(yīng)的控制開關(guān)就行了。2、存儲器譯碼那么,我們怎樣來控制各個單元的控制線呢?這個還不簡單,把每個單元元的控制線都引到集成電路的外面不就行了嗎?事情可沒那么簡單,一片27512存儲器中有65536個單元,把每根線都引出來,這個集成電路就得有6萬多個腳?不行,怎么辦?要想法減少線的數(shù)量。我們有一種方法稱這為譯碼,簡單介紹一下:一根線可以代表2種狀態(tài),2根線可以代表4種狀態(tài),3根線可以代表幾種,256種狀態(tài)又需要幾根線代表?8種,8根線,所以65536種狀態(tài)我們只需要16根線

18、就可以代表了。圖43、存儲器的選片及總線的概念至此,譯碼的問題解決了,讓我們再來關(guān)注另外一個問題。送入每個單元的八根線是用從什么地方來的呢?它就是從計算機上接過來的,一般地,這八根線除了接一個存儲器之外,還要接其它的器件,如圖4所示。這樣問題就出來了,這八根線既然不是存儲器和計算機之間專用的,如果總是將某個單元接在這八根線上,就不好了,比如這個存儲器單元中的數(shù)值是0FFH另一個存儲器的單元是00H,那么這根線到底是處于高電平,還是低電平?豈非要打架看誰歷害了?所以我們要讓它們分離。辦法當(dāng)然很簡單,當(dāng)外面的線接到集成電路的引腳進來后,不直接接到各單元去,中間再加一組開關(guān)(參考圖4)就行了。平時我

19、們讓開關(guān)打開著,如果確實是要向這個存儲器中寫入數(shù)據(jù),或要從存儲器中讀出數(shù)據(jù),再讓開關(guān)接通就行了。這組開關(guān)由三根引線選擇:讀控制端、寫控制端和片選端。要將數(shù)據(jù)寫入片中,先選中該片,然后發(fā)出寫信號,開關(guān)就合上了,并將傳過來的數(shù)據(jù)(電荷)寫入片中。如果要讀,先選中該片,然后發(fā)出讀信號,開關(guān)合上,數(shù)據(jù)就被送出去了。注意圖4,讀和寫信號同時還接入到另一個存儲器,但是由于片選端不同,所以雖有讀或?qū)懶盘?,但沒有片選信號,所以另一個存儲器不會“誤會”而開門,造成沖突。那么會不同時選中兩片芯片呢?只要是設(shè)計好的系統(tǒng)就不會,因為它是由計算控制的,而不是我們?nèi)藖砜刂频?,如果真的出現(xiàn)同時出現(xiàn)選中兩片的情況,那就是電路

20、出了故障了,這不在我們的討論之列。從上面的介紹中我們已經(jīng)看到,用來傳遞數(shù)據(jù)的八根線并不是專用的,而是很多器件大家共用的,所以我們稱之為數(shù)據(jù)總線,總線英文名為BUS,總即公交車道,誰者可以走。而十六根位置線也是連在一起的,稱之為位置總線。2. 半導(dǎo)體存儲器的分類 按功能可以分為只讀和隨機存取存儲器兩大類。所謂只讀,從字面上理解就是只可以從里面讀,不能寫進去,它類似于我們的書本,發(fā)到我們手回之后,我們只能讀里面的內(nèi)容,不可以隨意更改書本上的內(nèi)容。只讀存儲器的英文縮寫為ROM(READ ONLY MEMORY)所謂隨機存取存儲器,即隨時可以改寫,也可以讀出里面的數(shù)據(jù),它類似于我們的黑板,我可以隨時寫

21、東西上去,也可以用黑板擦擦掉重寫。隨機存儲器的英文縮寫為RAM(READ RANDOM MEMORY)這兩種存儲器的英文縮寫一定要記牢。注意:所謂的只讀和隨機存取都是指在正常工作情況下而言,也就是在使用這塊存儲器的時候,而不是指制造這塊芯片的時候。否則,只讀存儲器中的數(shù)據(jù)是怎么來的呢?其實這個道理也很好理解,書本拿到我們手里是不能改了,可以當(dāng)它還是原材料白紙的時候,當(dāng)然可以由印刷廠印上去了。順便解釋一下其它幾個常見的概念。PROM,稱之為可編程存儲器。這就象我們的練習(xí)本,買來的時候是空白的,可以寫東西上去,可一旦寫上去,就擦不掉了,所以它只能用寫一次,要是寫錯了,就報銷了。EPROM,稱之為紫

22、外線擦除的可編程只讀存儲器。它里面的內(nèi)容寫上去之后,如果覺得不滿意,可以用一種特殊的方法去掉后重寫,這就是用紫外線照射,紫外線就象“消字靈”,可以把字去掉,然后再重寫。當(dāng)然消的次數(shù)多了,也就不靈光了,所以這種芯片可以擦除的次數(shù)也是有限的幾百次吧。FLASH,稱之為閃速存儲器,它和EPROM類似,寫上去的東西也可以擦掉重寫,但它要方便一些,不需要光照了,只要用電學(xué)方法就可以擦除,所以就方便許多,而且壽面也很長(幾萬到幾十萬次不等)。再次強調(diào),這里的所有的寫都不是指在正常工作條件下。不管是PROM、EPROM還是FLASH ROM,它們的寫都要有特殊的條件,一般我們用一種稱之為“編程器”的設(shè)備來做

23、這項工作,一旦把它裝到它的工作位置,就不能隨便改寫了。存儲器是存放程序和數(shù)據(jù)的器件。MCS-51單片機一共有四個物理存儲器: 內(nèi)/外程序存儲器統(tǒng)一編址,片外位置從0000H0FFFFH有64KB,片內(nèi)位置從0000H0FFFH有4KB,重疊處由信號來控制。 當(dāng)時,從0000H0FFFFH片內(nèi)到片外; 當(dāng)時,內(nèi)部位置無效,外部位置從0000H0FFFFH。 0000H為系統(tǒng)復(fù)位后程序的入口位置; 0000H0002H內(nèi)存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)至主程序的入口位置; 0003H002AH單元均勻分為5段(每段8個單元),存放5個中斷源入口位置及對應(yīng)的中斷服務(wù)程序; 從0003H開始存放外部中斷0(

24、)位置; 從000BH開始存放定時器0溢出中斷位置; 從0013H開始存放外部中斷1()位置; 從001BH開始存放定時器1溢出中斷位置; 從001BH開始存放串行中斷口位置。 從002BH以后開始存放主程序;1、內(nèi)部程序存儲器(ROM);2、外部程序存儲器(ROM);3、內(nèi)部數(shù)據(jù)存儲器;(獨立編址) 片內(nèi)數(shù)據(jù)存儲空間區(qū):位置00H7FH,共有128B個存儲單元:分配如下 工作寄存器組(區(qū)):位置00H1FH,共有四個組(區(qū)),每個組(區(qū))8個單元; 位尋址區(qū):位置20H2FH,共有16個單元,每個單元又有8位,每一位都有一個位位置,共有128個位位置。(見教材P11的128位位置單元分配表)

25、 用戶RAM區(qū)(數(shù)據(jù)緩沖區(qū)):位置30H7FH,共有80個單元,主要用于存放隨機數(shù)據(jù)、運算的中間結(jié)果和作堆棧工作區(qū)。 專用寄存器區(qū)(特殊功能寄存器SFR):位置80H0FFH,共有12B個存儲單元。主要存放21個特殊功能的寄存器組成SFR塊。(前面已講述) 4、外部數(shù)據(jù)存儲器。(獨立編址)由于單片機內(nèi)部數(shù)據(jù)存儲器不夠用,則在片外擴展數(shù)據(jù)存儲器,位置從0000H0FFFFH,共有64KB個存儲單元。 內(nèi)/外數(shù)據(jù)存儲器的位置有重疊,但由于操作的指令不同,因此單片機可以正確地訪問內(nèi)/外數(shù)據(jù)存儲器; 訪問片內(nèi)的數(shù)據(jù)存儲器用MOV指令; 訪問片外的數(shù)據(jù)存儲器用MOVX指令; 外部存儲器的16位位置,用數(shù)

26、據(jù)指針寄存器DPTR來寄存。(前面已講述)24 時鐘電路及時序時序分析:先提一個問題:我們學(xué)校里什么是最重要的。(鈴聲)校長可以出差,老師可以休息,但學(xué)校一日無鈴聲必定大亂。整個學(xué)校就是在鈴聲的統(tǒng)一指揮下,步調(diào)一致,統(tǒng)一協(xié)調(diào)地工作著。這個鈴是按一定的時間安排來響的,我們可以稱之為“時序��時間的順序”。一個由人組成的單位尚且要有一定的時序,計算機當(dāng)然更要有嚴(yán)格的時序。事實上,計算機更象一個大鐘,什么時候分針動,什么時候秒針動,什么時候時針動,都有嚴(yán)格的規(guī)定,一點也不能亂。計算機要完成的事更復(fù)雜,所以它的時序也更復(fù)雜。我們已知,計算機工作時,是一條一條地從ROM中取指

27、令,然后一步一步地執(zhí)行,我們規(guī)定:計算機訪問一次存儲器的時間,稱之為一個機器周期。這是一個時間基準(zhǔn),好象我們?nèi)擞谩懊搿弊鳛槲覀兊臅r間基準(zhǔn)一樣,為什么不干脆用“秒”,多好,很習(xí)慣,學(xué)下去我們就會知道用“秒”反而不習(xí)慣。一個機器周期包括12個時鐘周期。下面讓我們算一下一個機器周期是多長時間吧。設(shè)一個單片機工作于12M晶振,它的時鐘周期是1/12(微秒)。它的一個機器周期是12*(1/12)也就是1微秒。(請計算一個工作于6M晶振的單片機,它的機器周期是多少)。MCS-51單片機的所有指令中,有一些完成得比較快,只要一個機器周期就行了,有一些完成得比較慢,得要2個機器周期,還有兩條指令要4個機器周期

28、才行。這也不難再解,不是嗎?我讓你掃地的執(zhí)行要完成總得比要你完成擦黑板的指令時間要長。為了恒量指令執(zhí)行時間的長短,又引入一個新的概念:指令周期。所謂指令周期就是指執(zhí)行一條指令的時間。INTEL對每一條指令都給出了它的指令周期數(shù),這些數(shù)據(jù),大部份不需要我們?nèi)ビ洃?,但是有一些指令是需要記住的,如DJNZ指令是雙周期指令。 單片機本身就是一個復(fù)雜的同步時序電路,為了確保同步工作方式的執(zhí)行,電路應(yīng)在唯一的時鐘信號的控制下嚴(yán)格地按時序進行工作。一、時鐘電路、XTAL1端和XTAL2端將晶振、電容C1和C2與內(nèi)部的反相放大器連接起來組成并聯(lián)諧振電路;、振蕩頻率范圍在212MHz,一般常用6MHz或12MH

29、z;、C1、C2取31PF,對頻率有微調(diào)作用;、產(chǎn)生的振蕩信號送入內(nèi)部的時鐘電路再二分頻構(gòu)成了單片機的時鐘;、最后向CPU提供P1、P2兩相時鐘信號。1、 內(nèi)部方式時鐘電路:晶振倒相器2、 外部方式時鐘電路:(8051型單片機)、由外部振蕩器產(chǎn)生振蕩信號;、經(jīng)電平轉(zhuǎn)換電路接至XTAL2端;、XTAL1端接低電平。外部振蕩器二、時序 CPU在執(zhí)行指令時,各控制信號在時間順序上的關(guān)系稱時序。CPU發(fā)出的時序信號有兩類: 一類是用于片內(nèi)各功能部件的控制,基本與用戶無關(guān);(不討論) 另一類用于片外存儲器、擴展的I/O端口的控制,非常重要。(要掌握)1、基本概念: 振蕩周期晶體振蕩器直接產(chǎn)生的振蕩信號的

30、周期。 時鐘周期(狀態(tài)周期)S 一個時鐘周期等于兩個振蕩周期,換句話說就是對振蕩頻率進行2分頻的振蕩信號。一個時鐘周期S分為P1和P2兩個節(jié)拍: P1節(jié)拍完成算術(shù)邏輯運算; P2節(jié)拍完成內(nèi)部寄存器間數(shù)據(jù)的傳送。 機器周期 完成一個基本操作所需的時間稱為機器周期。一個機器周期由6個時鐘周期(分別用S1S6來表示)即12個振蕩周期(分別用S1P1、S1P2、S2P1、S2P2、S3P1、S6P2)組成。 指令周期執(zhí)行一條指令所需的全部時間稱為指令周期。MCS-51單片機的指令周期一般需要14個機器周期。例 已知晶振頻率分別為:6MHz、12MHz,試計算出它們的機器周期和指令周期。解:當(dāng)晶振頻率為

31、6MHz時: 振蕩周期=1/振蕩頻率=1/6(s) 時鐘周期=2×振蕩周期=2/6(s) 機器周期=6×時鐘周期=2(s) 指令周期=(14)×機器周期=28(s)當(dāng)晶振頻率為12MHz時:振蕩周期=1/振蕩頻率=1/12(s) 時鐘周期=2×振蕩周期=2/12(s) 機器周期=6×時鐘周期=1(s) 指令周期=(14)×機器周期=14(s)由此可見:單片機在晶振頻率為12MHz時,執(zhí)行一條指令最多需要14(s)。2、幾種典型的MCS-51單片機 取指/執(zhí)行時序單片機的每條指令的執(zhí)行過程都要包括兩個階段,即取指階段和執(zhí)行階段。、指令存

32、放在內(nèi)部ROM區(qū)域,指令本身是訪問內(nèi)部RAM的時序 位置鎖存信號ALE(單片機的輸出信號)在每一個機器周期內(nèi)有效兩次。即:S1P2S2P1、S4P2S5P1,有效寬度為一個S狀態(tài)周期(圖中第四行波形)。ALE信號每有效一次,單片機就進行一次讀指令的操作。(圖中第2行波形) 單字節(jié)單機器周期指令如:INC A(這是一條累加器A加1指令)屬于單字節(jié)指令,所以只進行一次取指操作,其完整過程是:當(dāng)ALE第一次有效(即S1)時,從ROM中讀出上指令并送至指令寄存器IR中開始執(zhí)行,在執(zhí)行過程中CPU一方面在第二次ALE有效(即S4)時封鎖PC加1,使第二次讀操作成為假讀,另一方面完成指令的執(zhí)行。(圖中第3

33、行波形) 雙字節(jié)單機器周期指令 如:ADD A, #data(這是一條將累加器A中的內(nèi)容與data數(shù)據(jù)相加的加法指令)屬于雙字節(jié)指令,其對應(yīng)ALE的兩次取指操作都是有效的,其完整過程是: 第一次讀指令的操作碼,經(jīng)譯碼器譯碼后得知是雙字節(jié)指令,CPU一方面使PC+1,繼續(xù)第二次讀指令的操作數(shù),另一方面等兩個字節(jié)全讀出后,便完成了指令的執(zhí)行。(圖中第4行波形) 單字節(jié)雙機器周期指令 如:INC DPTR(這是一條數(shù)據(jù)指針DPTR加1指令)屬于單字節(jié)指令,但用了兩個機器周期,共進行了4次讀指令操作。其完整過程是:當(dāng)?shù)谝淮巫x指令的操作碼后,經(jīng)譯碼器譯碼得知是單字節(jié)雙機器周期指令,CPU一方面自動封鎖后

34、面的讀操作(PC不加1),使后3次讀操作全成為假讀,另一方面在第2個機器周期結(jié)束時完成指令的執(zhí)行。(圖中第5行波形)、指令存放在內(nèi)部ROM區(qū)域,指令本身是訪問外部RAM的時序如:MOVX A,DPTR(這也是一條單字節(jié)的數(shù)據(jù)傳送指令),只要是訪問外部RAM的指令都是雙機器周期指令,它與前述的單字節(jié)雙機器周期指令不同。其完整的過程如下: 在第一個機器周期中第一次ALE有效時(即S1)讀操作碼,在第二次ALE有效(即S4)時封鎖PC加1,使第二次讀操作成為假讀,在S5的狀態(tài)開始時送出外部RAM單元的位置,進行數(shù)據(jù)的讀寫;在第二個機器周期中,因CPU在讀/寫數(shù)據(jù),所以ALE信號全部丟失,在S1、S4

35、時不產(chǎn)生取指操作,在S6P2時完成指令的全部執(zhí)行。(圖中第6行波形)25 輸入/輸出端口MCS-51單片機有32條I/O線,分屬于4個(P0、P1、P2、P3)8位I/O雙向并行接口,每個接口均由鎖存器、輸出驅(qū)動電路和輸入緩沖器組成。并行口結(jié)構(gòu)分析: 1、輸出結(jié)構(gòu)先看P1口的一位的結(jié)構(gòu)示意圖(只畫出了輸出部份):從圖中可以看出,開關(guān)的打開和合上代表了引腳輸出的高和低,如果開關(guān)合上了,則引腳輸出就是低,如果開關(guān)打開了,則輸出高電平,這個開關(guān)是由一根線來控制的,這根數(shù)據(jù)總線是出自于CPU,讓我們回想一下,數(shù)據(jù)總線是一根大家公用的線,很多的器件和它連在一起,在不同的時候,不同的器件當(dāng)然需要不同的信號

36、,如某一時刻我們讓這個引腳輸出高電平,并要求保持若干時間,在這段時間里,計算機當(dāng)然在忙個不停,在與其它器件進行聯(lián)絡(luò),這根控制線上的電平未必能保持原來的值不變,輸出就會發(fā)生變化了。怎么解決這個問題呢?我們在存儲器一節(jié)中學(xué)過,存儲器中是可以存放電荷的,我們不妨也加一個小的存儲器的單元,并在它的前面加一個開關(guān),要讓這一位輸出時,就把開關(guān)打開,信號就進入存儲器的單元,然后馬上關(guān)閉開關(guān),這樣這一位的狀態(tài)就被保存下來,直到下一次命令讓它把開關(guān)再打開為止。這樣就能使這一位的狀態(tài)與別的器件無關(guān)了,這么一個小單元,我們給它一個很形象的名字,稱之為“鎖存器”。2、輸入結(jié)構(gòu)這是并行口的一位的輸出結(jié)構(gòu)示意圖,再看,除

37、了輸出之外,還有兩根線,一根從外部引腳接入,另一根從鎖存器的輸出接出,分別標(biāo)明讀引腳和讀鎖存器。這兩根線是用于從外部接收信號的,為什么要兩根呢?原來,在51單片機中輸入有兩種方式,分別稱為讀引腳和讀鎖存器,第一種方式是將引腳作為輸入,那是真正地從外部引腳讀進輸入的值,第二種方式是該引腳處于輸出狀態(tài)時,有時需要改變這一位的狀態(tài),則并不需要真正地讀引腳狀態(tài),而只是讀入鎖存器的狀態(tài),然后作某種變換后再輸出。請注意輸入結(jié)構(gòu)圖,如果將這一根引線作為輸入口使用,我們并不能保證在任何時刻都能得到正確的結(jié)果(為什么?)參考圖2輸入示意圖。接在外部的開關(guān)如果打開,則應(yīng)當(dāng)是輸入1,而如果閉合開關(guān),則輸入0,但是,

38、如果單片機內(nèi)部的開關(guān)是閉合的,那么不管外部的開關(guān)是開還是閉,單片機接受到的數(shù)據(jù)都是0??梢姡屵@一端口作為輸入使用,要先做一個準(zhǔn)備工作,就是先讓內(nèi)部的開關(guān)斷開,也就是讓端口輸出1才行。正因為要先做這么一個準(zhǔn)備工作,所以我們稱之為“準(zhǔn)雙向I/O口”。以上是P1口的一位的結(jié)構(gòu),P1口其它各位的結(jié)構(gòu)與之相同,而其它三個口:P0、P2、P3則除入作為輸入輸出口之外還有其它用途,所以結(jié)構(gòu)要稍復(fù)雜一些,但其用于輸入、輸出的結(jié)構(gòu)是相同的??磮D()。對我們來說,這些附加的功能不必由我們來控制,所以我們就不去關(guān)心它了。一、 P0口P0口有8位,每1位由一個鎖存器、兩個三態(tài)輸入緩沖器、控制電路和驅(qū)動電路組成。(

39、見下圖)1、P0口作通用I/O口 P0口既可作輸入口,也可作輸出口(每1位都可以作),其工作原理如下: P0口作輸入口: 在位置/數(shù)據(jù)和控制信號的作用下,使MUX接端; 為保證數(shù)據(jù)正確輸入,必須使T2管處于截止?fàn)顟B(tài),因此應(yīng)先對鎖存器寫“1”,然后再寫入數(shù)據(jù); 外部信號通過P0.X進入2號三態(tài)緩沖器,三態(tài)緩沖器打開,數(shù)據(jù)輸入到內(nèi)部總線。 鎖存器一方面通過端到MUX控制T2的狀態(tài),另一方面通過1號三態(tài)緩沖器維持輸入的狀態(tài)。 P0口作輸出口: 在位置/數(shù)據(jù)和控制信號的作用下,使MUX接端; 內(nèi)部數(shù)據(jù)通過內(nèi)部總線并在寫脈沖的控制下寫入鎖存器; 內(nèi)部信號通過端到MUX控制T2的狀態(tài),使T2的輸出保持與內(nèi)

40、部數(shù)據(jù)的同相; P0口的I/O是分時使用,所以稱它為準(zhǔn)雙向口。2、作分時復(fù)用的位置/數(shù)據(jù)總線(第二功能) MCS-51單片機沒有單獨的位置/數(shù)據(jù)總線。當(dāng)接RAM時,它的16位位置和8位數(shù)據(jù)分別由P0口和P2口共同完成,P2口負(fù)責(zé)傳送高8位位置,P0口負(fù)責(zé)傳送低8位位置和8位雙向數(shù)據(jù)。(這就是所謂分時復(fù)用技術(shù))其工作原理如下: 從P0口輸出位置或數(shù)據(jù): 在位置/數(shù)據(jù)(假若為“1”)和控制信號的作用下,使MUX接上面的觸點,此時T1導(dǎo)通,T2截止,輸出為“1”,完成了位置/數(shù)據(jù)信號的正確傳送; 在位置/數(shù)據(jù)(假若為“0”)和控制信號的作用下,使MUX接上面的觸點,此時T1截止,T2導(dǎo)通,輸出為“0

41、”,完成了位置/數(shù)據(jù)信號的正確傳送。 從P0口輸入數(shù)據(jù):輸入數(shù)據(jù)直接通過2號三態(tài)緩沖器進入內(nèi)部總線,無需先對鎖存器寫“1”,此工作由CPU自動完成。是一個真正的雙向端口。二、P1口 P1口是一個專用的準(zhǔn)雙向I/O口,每1位都由一個鎖存器、兩個三態(tài)輸入緩沖器和驅(qū)動電路組成。(見下圖) 它與P0口有兩點不同:1、沒有電子開關(guān)MUX,所以工作時必須先對該位的鎖存器寫“1”,然后再輸入數(shù)據(jù);2、在驅(qū)動電路部分,用內(nèi)部的上拉電阻取代了場效應(yīng)管。 其工作原理與P0口相同,只是不能復(fù)用(無第二功能),是一個準(zhǔn)雙向口。三、P2口P2口是一個8位的準(zhǔn)雙向口,每1位由一個鎖存器、兩個三態(tài)輸入緩沖器、控制電路和驅(qū)動

42、電路組成。(見下圖)1、作通用I/O口,與P0口的功能類似;2、可以作擴展系統(tǒng)的高8位位置總線,然后與P0口傳送的低8位位置一起組成16位位置總線。(第二功能)四、P3口P3口也是一個8位準(zhǔn)雙向口,每1位都由一個鎖存器、兩個三態(tài)輸入緩沖器和驅(qū)動電路組成。(見下圖)1、P3口作一般輸出口使用時與P1口的功能類同,均可以作為通用的I/O口使用。注意:第二功能輸出端(與非門的輸入端)要保持高電平,以維持鎖存器到輸出端的數(shù)據(jù)暢通。2、P3口最重要的功能是第二功能。當(dāng)P3工作在第二功能時,鎖存器的Q端要保持高電平,以維持第二功能(與非門的另一端)輸出的數(shù)據(jù)暢通。在P3口工作在第二功能時,它的每1位都具有

43、不同的功能。(見下表)P3口引腳第 二 功 能P3-0RXD串行數(shù)據(jù)輸入口P3-1TXD串行數(shù)據(jù)輸出口P3-2外部中斷0P3-3外部中斷1P3-4T0定時/計數(shù)器0外部計數(shù)脈沖輸入端P3-5T1定時/計數(shù)器1外部計數(shù)脈沖輸入端P3-6片外RAM寫選通信號輸出端P3-7片外RAM讀選通信號輸出端五、P0口P3口有使用中的特點1、 P0口的輸出級的每一位可驅(qū)動8個TTL門,但它驅(qū)動NMOS門時需外加上拉電阻;而作位置/數(shù)據(jù)總線(復(fù)用)時,無須外接上拉電阻。2、 P1口P3口輸出級的每一位可驅(qū)動4個TTL門,無須外接上拉電阻。3、 P0口P3口若是由CMOS電路組成,當(dāng)它驅(qū)動普通晶體管的基極時,應(yīng)在

44、端口和晶體管之間串入一個電阻,來限制高電平的輸出電流。4、 P0口一般可用作8位的數(shù)據(jù)總線的輸入/輸出。5、 P0口在第二功能時和P2口構(gòu)成16位位置總線中的低8位。6、 P1口通常用于數(shù)據(jù)的輸入/輸出。(無第二功能)7、 P2口一般可用作8位的數(shù)據(jù)總線的輸入/輸出。8、 P2口在第二功能時和P0口構(gòu)成16位位置總線中的高8位。9、 P3口可以用作8位的數(shù)據(jù)總線的輸入/輸出。10、P3口通常用于第二功能的輸入/輸出。11、系統(tǒng)復(fù)位后,P0口P3口的32個管腳均輸出高電平(0FFH)。(注意與外設(shè)的配合)12、可以規(guī)定并行口的一部分管腳為輸入腳,另一部分腳為輸出腳,沒有使用的腳可以懸空。26 M

45、CS-51單片機的引腳功能 MCS-51型系列單片機是具有40個引腳的雙列直插式封裝的器件,其中許多引腳具有第二功能,一共分為四大類。(不同的芯片略有不同)見下引腳圖:一、電源類引腳1、 (40腳):芯片工作電源的輸入端,+5V。2、 (20腳):電源的接地端。二、時鐘振蕩電路引腳XTAL1(19腳)和XTAL2(18腳)的內(nèi)部是一個振蕩電路。1、當(dāng)使用內(nèi)部振蕩電路時,在這兩個管腳上外接石英晶體和微調(diào)電容;2、當(dāng)使用外部時鐘時,XTAL2接外部振蕩信號,XTAL1接低電平。三、輸入/輸出引腳1、 P0口(3239腳):是一個8位漏極開路型的雙向I/O口;訪問外部RAM時,分時提供低8位位置,并

46、用作8位數(shù)據(jù)總線。2、 P1口(18腳):是一個帶內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。3、 P2口(2128腳):是一個帶內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口;訪問外部RAM時,分時提供高8位位置。4、 P3口(1017腳):是一個帶內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。四、控制類引腳1、 (9腳,兩功能) RST為復(fù)位信號輸入端:只要給RST端兩個機器周期的高電平,就可以復(fù)位; 為內(nèi)部的備用電源(+5V)的輸入端:若突然掉電,可保護內(nèi)部RAM的信息不丟失。2、 (30腳,兩功能) ALE位置鎖存信號輸出端:(a) 在訪問外部RAM時,ALE用來鎖存P0的擴展位置低8位;(b) 不訪問外部RAM時,AL

47、E以時鐘頻率的1/6的固定頻率輸出;(給外部定時用)(c) ALE能驅(qū)動8個TTL邏輯門。 編程脈沖輸入端:僅用于8751型單片機內(nèi)部EPROM編程的脈沖輸入(低電平有效)。3、 (29腳)外部程序ROM的讀選通信號輸出端:當(dāng)訪問外部程序ROM時,定時產(chǎn)生一個負(fù)脈沖作選通信號,即每個機器周期內(nèi)的效兩次。注意:若訪問外部RAM或片內(nèi)的ROM,不會有輸出(為高電平)。4、 (31腳,兩功能) 訪問內(nèi)/外程序存儲器的控制信號輸出端:(a) 當(dāng)時,限定訪問外部的程序ROM,位置從0000HFFFFH;若某單片機(如:8031型)無內(nèi)部程序ROM,則應(yīng)將端接地。(b) 當(dāng)時,先訪問片內(nèi)的程序ROM(有4

48、KB),若超出時自動切換到外部RAM去訪問。 編程電壓(+21V)輸入端:當(dāng)對8751型單片機內(nèi)部的程序ROM(即4KB的EPROM)進行程序固化時,在此端應(yīng)接入+21V的編程電壓。27 MCS-51單片機的工作方式 MCS-51有三種工作方式:即復(fù)位、程序執(zhí)行、節(jié)電工作方式。一、復(fù)位方式 系統(tǒng)開始運行和重新啟動靠復(fù)位電路來實現(xiàn),這種工作方式為復(fù)位方式。1、 單片機復(fù)位后的工作狀態(tài)當(dāng)單片機RST輸入了復(fù)位信號后,芯片回到初始狀態(tài),但不影響內(nèi)部RAM中的內(nèi)容。 程序計數(shù)器PC的值回復(fù)到0000H,復(fù)位后各特殊功能寄存器的初始狀態(tài)如下表所示:特殊功能寄存器內(nèi)容初始狀態(tài)特殊功能寄存器內(nèi)容初始狀態(tài)特殊功能寄存器內(nèi)容初始狀態(tài)B00HSBUF不定TMOD00HA 00HSCON00HTCON0

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論