單片機教程之第3章 單片機的結(jié)構(gòu)及原理_第1頁
單片機教程之第3章 單片機的結(jié)構(gòu)及原理_第2頁
單片機教程之第3章 單片機的結(jié)構(gòu)及原理_第3頁
單片機教程之第3章 單片機的結(jié)構(gòu)及原理_第4頁
單片機教程之第3章 單片機的結(jié)構(gòu)及原理_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章單片機的結(jié)構(gòu)及原理本章以80C51系列的AT89S51/S52為例子,介紹單片機的結(jié)構(gòu)、工作原理、存儲器結(jié)構(gòu)、時序及復(fù)位電路。3.1單片機的結(jié)構(gòu)本節(jié)以89系列單片機中Atmel公司的標(biāo)準(zhǔn)型AT89S51/S52單片機為主要實例,介紹單片機的組成、結(jié)構(gòu)及引腳功能。AT89S51與AT89C51相比增加了ISP串行接口〔程序燒寫更加方便〕和看門狗定時器。1標(biāo)準(zhǔn)型單片機的組成與結(jié)構(gòu)CPU振蕩器中斷控制程序存儲器數(shù)據(jù)存儲器總線控制定時器2定時器1定時器0看門狗ISP串行口I/O端口UART串行端口外部中斷源內(nèi)部中斷源計數(shù)器輸入RXDTXDP0P1P2P3MISOMOSICLK2中央處理器CPU主要完成運算和控制功能。數(shù)據(jù)存儲器RAM用于存儲變化的數(shù)據(jù)。程序存儲器ROM(FlashROM)用于存放程序和固定不變的常數(shù)。定時/計數(shù)器用于實現(xiàn)定時和計數(shù)功能。并行I/O口用于實現(xiàn)數(shù)據(jù)和控制信號的輸入和輸出。串行口全雙工異步串行口用于串行數(shù)據(jù)的輸入輸出,ISP串行口可用于實現(xiàn)在線下載程序。3時鐘電路是產(chǎn)生單片機工作所需要的時鐘脈沖序列。中斷系統(tǒng)中斷系統(tǒng)的主要作用是對外部或內(nèi)部的中斷請求進行管理與處理。3.1.2引腳的定義和功能T2T2EXMOSIMISOSCKMOSI4引腳的定義和功能40只引腳按功能分為4類:〔1〕電源引腳[2]:Vcc、GND;〔2〕時鐘電路引腳[2]:XTAL1、XTAL2?!?〕控制引腳[4]:PSEN*、EA*/Vpp、ALE/PROG*、RST。RST高電超過兩個機器周期時間平復(fù)位。EA接低電平時只訪問片外程序?!?〕I/O口引腳[32]:P0、P1、P2、P3,為4個8位I/O口的外部引腳。53.2 單片機的工作原理單片機是通過執(zhí)行程序工作的,執(zhí)行不同的程序就能完成不同的任務(wù),因此執(zhí)行程序的過程就表達了單片機的工作原理。指令與程序的概述指令:是規(guī)定計算機執(zhí)行某種操作的命令。CPU根據(jù)指令來指揮和控制計算機各局部協(xié)調(diào)地動作,以完成規(guī)定的操作。指令系統(tǒng):計算機全部指令的集合。程序:是根據(jù)任務(wù)要求,有序地編排的指令的集合。63.2.2CPU的工作原理在執(zhí)行程序中起關(guān)鍵作用的是CPU,CPU主要由控制器和運算器兩大局部組成;控制器根據(jù)指令碼產(chǎn)生控制信號,使運算器、存儲器、輸入輸出端口之間能自動協(xié)調(diào)工作;運算器用于進行算術(shù)、邏輯運算以及位操作處理等。71.控制器控制器是用來統(tǒng)一指揮和控制計算機工作的部件。功能是:從存儲器逐條取出指令,對指令進行譯碼,根據(jù)指令發(fā)出控制信號,完成指令所規(guī)定的各種操作??刂破靼ㄖ噶畈考r序部件和操作控制部件?!?〕指令部件指令部件:是對指令進行分析、處理并產(chǎn)生控制信號的邏輯部件,由程序計數(shù)器PC,指令存放器和指令譯碼器組成。這幾個存放器用戶都不能直接訪問。程序計數(shù)器PC:用于存放和指示下一條要指令指令的地址的存放器,它是一個16位專用存放器,它具有自動加1的功能,在調(diào)試中實際看到的是PC自動增加該指令的字節(jié)個數(shù),指向下一個條將要執(zhí)行指令的地址。8指令存放器:是8位存放器,用于暫時存放指令,等待譯碼。指令譯碼器:用于對送入指令譯碼器中的指令進行譯碼,將指令變換成執(zhí)行此指令所需的電信號?!?〕時序部件時序部件由時鐘電路和脈沖分配器組成,用于產(chǎn)生操作控制部件所需要的時序信號。由振蕩器和計數(shù)分頻器組成?!?〕操作控制部件可以為指令譯碼器的輸出信號配上節(jié)拍電位和節(jié)拍脈沖,以完成規(guī)定的操作。92.運算器運算器是用來對數(shù)據(jù)進行算術(shù)運算和邏輯操作的執(zhí)行部件,包括算術(shù)邏輯部件ALU和暫存器?!?〕算數(shù)/邏輯部件ALU算術(shù)邏輯部件是用于對數(shù)據(jù)進行算術(shù)運算和邏輯運算的執(zhí)行部件,由加法器和其他邏輯電路組成?!?〕暫存器暫存器用于暫存進入運算器之前的數(shù)據(jù),它不能通過編程訪問?!?〕還有累加器ACC和程序狀態(tài)存放器PSW專用存放器。10單片機執(zhí)行程序的過程單片機的工作過程實質(zhì)就是執(zhí)行程序的過程,即逐條執(zhí)行指令的過程,計算機每執(zhí)行一條指令都可分為三個階段:即取指令、分析指令和執(zhí)行指令。取指令:根據(jù)程序計數(shù)器PC中的數(shù)值(指令地址),從程序存儲器中讀出指令,送到指令存放器。分析指令:將指令存放器中的指令操作碼取出后進行譯碼,分析該指令要求實現(xiàn)的操作性質(zhì)。執(zhí)行指令:取出操作數(shù),然后按照操作碼的性質(zhì)對操作數(shù)進行操作。11單片機指令執(zhí)行過程示意圖指令部件時序部件操作控制部件CPU控制器CPU運算器12指令執(zhí)行過程舉例設(shè)執(zhí)行指令:MOVA,#0E0H,它的作用是把操作數(shù)E0H送入累加器A中,其機器碼是:“74H,E0H〞。這條指令存放在0200H和0201H單元。取指令階段:單片機將PC指向的當(dāng)前指令的地址0200H中的指令〔數(shù)據(jù)74H〕取出送到指令存放器,PC自動加1。分析指令階段:單片機經(jīng)譯碼器對74H譯碼后,單片時機知道該指令要將一個數(shù)送到累加器A中,這個數(shù)存放在下一個地址中。指令執(zhí)行階段:指令譯碼器向微操作控制電路發(fā)出控制命令,微操作控制電路結(jié)合時序部件,產(chǎn)生74H操作碼的微操作序列,將0201H中數(shù)據(jù)0E0H取出送入累加器A。PC再加1。0200H0201H74HE0HPC->0200H:MOVA,#0E0HPC->PC->0200H:MOVA,#0E0H133.380C51的存儲器存儲器是計算機的主要組成局部,其用途是存放程序和數(shù)據(jù)。存儲器的結(jié)構(gòu)和地址空間80C51系列單片機的存儲器結(jié)構(gòu)采用“哈佛結(jié)構(gòu)〞,程序存儲器ROM和數(shù)據(jù)存儲器RAM在物理結(jié)構(gòu)上是分開的,又有片內(nèi)和片外之分。另外一種存儲器結(jié)構(gòu)是馮.諾伊曼結(jié)構(gòu),程序存儲器和數(shù)據(jù)存儲器放在一個邏輯空間,統(tǒng)一編址。80C51單片機存儲器在物理結(jié)構(gòu)上分為4個空間:片內(nèi)RAM、片外RAM、片內(nèi)ROM、片外ROM。14AT89S51片內(nèi)存儲器SFRRAM4KBROM片外可擴展64KBRAM片外可擴展64KBROM00HFFHFFFFHFFFFH00HFFFH1000H100H00H7FHAT89S51存儲空間分布圖一般情況下,我們只用片內(nèi)存儲器(RAM和FLASHROM)就夠了。在邏輯上(從用戶角度看),80C51系列有三個存儲空間:(1)片內(nèi)外ROM。(2)片內(nèi)RAM。(3)片外RAM。FFH15程序存儲器ROM程序存儲器用于存放編好的程序和表格。1.程序存儲器的結(jié)構(gòu)和地址分配AT89S51單片機片內(nèi)有4KB的閃存,通過片外16位地址線最多可擴展64KB程序存儲器,片內(nèi)外ROM統(tǒng)一編址,EA管腳接高電平那么首先訪問片內(nèi)存儲器,如果EA管腳接低電平,那么只方位片外程序存儲器。16幾個特殊的地址2.程序存儲器的入口地址在程序存儲器中有7個地址有特殊用途。0000H單元為主程序開始地址。

5個中斷源的中斷入口地址:0003H外中斷0000BH定時器T00013H外中斷1001BH定時器T10023H串行口中斷002B定時器2編程時在0003~0030H間一般不放用戶程序。使用中斷時放中斷跳轉(zhuǎn)指令。17數(shù)據(jù)存儲器單片機中的數(shù)據(jù)存儲器主要用于存放經(jīng)常改變的中間運算結(jié)果、數(shù)據(jù)暫存或標(biāo)志位等,稱RAM??煞制瑑?nèi)RAM和片外RAM〔擴展〕。1.片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)及操作AT89S51中00H~7FH的RAM可供用戶自由使用。80H~FFH為特殊功能存放器SFR區(qū)。AT89S52中80~FFH也可供用戶自由使用,但要使用間接尋址的方式。182.低128字節(jié)RAM在低128RAM區(qū)中,根據(jù)存儲器的用途,又可分為3個局部:00H~1FH:通用工作存放器區(qū)20H~2FH:位尋址區(qū)30H~7FH:用戶RAM區(qū)19通用工作存放器區(qū)〔1〕通用工作存放器區(qū)RS1RS0所選的4組存放器000區(qū)〔R0~R7為:00H~07H〕011區(qū)〔R0~R7為:08H~0FH〕102區(qū)〔R0~R7為:10H~17H〕113區(qū)〔R0~R7為:18H~1FH〕CPU復(fù)位后選中第0組工作存放器。R000HR101HR202H………R707H20〔2〕位尋址區(qū)指令區(qū)別:MOVA,20HMOVC,20H21位尋址區(qū)即可以按字節(jié)尋址也可以按位尋址。共16個字節(jié),128個位。位尋址區(qū)主要用于用戶標(biāo)志位或1位的處理,特別適合工業(yè)控制應(yīng)用。位尋址區(qū)訪問方法:MOVC,00H;意思是把00H位地址〔也就是字節(jié)地址20H的最后一位〕數(shù)據(jù)〔0,1〕送入C,而不是把字節(jié)地址00H中值給C,因為C是一個位。通用工作存放器區(qū)和位尋址區(qū)在不用作通用存放器或位尋址時,都可作為一般的用戶數(shù)據(jù)區(qū)。22〔3〕用戶RAM區(qū)30H~7FH為用戶RAM區(qū),可同作直接或間接尋址方式訪問??勺鳛槎褩^(qū)。3.片外數(shù)據(jù)存儲器的結(jié)構(gòu)及操作片外RAM可最多擴展64KB。訪問片內(nèi)RAM用MOV指令,訪問片外RAM用MOVX指令,只能采用間接尋址。MOVA,35H;將片內(nèi)35H中數(shù)據(jù)送入AMOVXA,@DPTR;將片外RAM中DPTR指向的地址中數(shù)據(jù)取出送給A。MOVA,@R0;將片內(nèi)RAM中R0指向的地址中的數(shù)據(jù)取出送給A。MOVXA,@R0;將片外RAM中R0指向的地址中的數(shù)據(jù)取出送給A。23特殊功能存放器特殊功能存放器又稱SFR,主要用于管理片內(nèi)和片外的功能部件。AT89S51有21個〔S52有27個〕。特殊功能存放器可以按其名稱符號訪問也可以按地址訪問,一般按名稱訪問。如:MOVB,A。有些可以位尋址〔地址值能被8整除〕,一般按位名稱訪問。如:SETBEA;IE存放器的最高位EA置1。SETBP1.0;P1口的最低位置1。24AT89S51增加了與看門狗復(fù)位有關(guān)的特殊功能存放器WDTRST。AT89S52還有定時器2存放器。251.程序狀態(tài)字存放器PSWP[PSW.0]奇偶標(biāo)志位 P=1,A中“1〞的個數(shù)為奇數(shù) P=0,A中“1〞的個數(shù)為偶數(shù)F1位:用戶標(biāo)志位,由用戶置位或復(fù)位。OV〔PSW.2〕溢出標(biāo)志位指示運算是否產(chǎn)生溢出。正數(shù)相加得負數(shù)、負數(shù)相加得正數(shù)、除0都產(chǎn)生溢出。F126PSWRS1、RS0[PSW.4、PSW.3]:4組工作存放器區(qū)選擇控制位1和位0。RS1RS0所選的4組存放器000區(qū)〔內(nèi)部RAM地址00H~07H〕011區(qū)〔內(nèi)部RAM地址08H~0FH〕102區(qū)〔內(nèi)部RAM地址10H~17H〕113區(qū)〔內(nèi)部RAM地址18H~1FH〕F0[PSW.5]標(biāo)志位由用戶使用的一個狀態(tài)標(biāo)志位。同F(xiàn)1。27PSW、ACCAC半進位標(biāo)志位,當(dāng)進行加法或減法運算時,低半字節(jié)向高半字節(jié)有進位或借位時該位為1。CY進位標(biāo)志位,如果計算結(jié)果最高位有進位或借位那么CY=1。2.累加器ACCACC是一個8位存放器,通過暫存器與ALU相連。它是CPU中最繁忙的存放器,28DPTR、B3.數(shù)據(jù)指針存放器DPTR0/1用于尋址片外RAM中的數(shù)據(jù)。AT89S51只有DPTR0AT89S52通過AUXR1的第0位選擇使用哪個DPTR〔0對應(yīng)DPTR0,1對應(yīng)DPTR1〕,默認選擇DPTR0。4.B存放器B存放器可作為一般存放器使用,在乘除法時用來暫存一個數(shù)據(jù)。MULAB;(A)×(B)BA,B15~8,A7~0DIVAB;(A)除以(B),商A,余數(shù)B29堆棧:是一種數(shù)據(jù)存儲結(jié)構(gòu),它采用先進后出的存儲操作方法。5.堆棧指針SP堆棧指針SP是一個8位特殊功能存放器,它存放堆棧棧頂?shù)牡刂?。每存入或取出一個數(shù)據(jù),SP自動加1或減1。SP6B6B986A986998入棧前SP6C6B986A986998916C壓入棧后SP6A6A986998彈出棧后用戶使用堆棧前一般要先設(shè)置棧底地址,一般大于2FH。棧底壓棧出棧30I/O口6.P0~P3端口存放器特殊功能存放器P0~P3分別用于控制端口P0~P3的I/O操作。輸入輸出數(shù)據(jù)是通過讀寫端口存放器P0~P3實現(xiàn)的。當(dāng)I/O端口某一位用作輸入功能時,該位要先置1。單片機復(fù)位后,除SP為07H,P0~P3為FFH外,其余都為0。313.4輸入/輸出端口51單片機有4個雙向〔輸入、輸出〕的8位并行I/O端口(Port),記作P0~P3。通過特殊功能存放器P0~P3訪問端口。3.4.1P0口可作為地址〔低8位〕/數(shù)據(jù)總線:有輸出0、輸出1和高阻三種狀態(tài)。見擴展總線可作為通用I/O口:無上拉電阻,只有輸出0和高阻狀態(tài),如果要輸出1那么需要接上拉電阻。I/O口從輸出變?yōu)檩斎霠顟B(tài)時要先輸出1,阻斷對地晶體管。32P0口的位結(jié)構(gòu)電路原理圖VCCR作為地址數(shù)據(jù)線時工作過程作為I/O口時工作過程1:地址數(shù)據(jù)0:I/O操作33可用作通用I/O口:有上拉電阻〔10K左右〕,輸出有0、1狀態(tài),如果作為輸入,先輸出1阻斷接地FET。3.4.2P1口34P1口第二功能AT89S51/52的P1口還具有第二功能P1口各位第二功能P1.0T2:定時器T2的外部計數(shù)輸入/時鐘輸出P1.1T2EX:定時器T2的捕獲除法和雙向控制P1.5MOSI:主機輸出線P1.6MISO:主機輸入線P1.7SCK:串行時鐘線353.4.3P2口可作為外部地址總線的高8位,與P0配合。可作為通用I/O口,同P1口36可作為通用I/O口,用法同P1。3.4.4P3口37P3口的第二功能P3.0 RXD〔串行輸入口〕P3.1 TXD〔串行輸出口〕P3.2 INT0*〔外部中斷0〕P3.3 INT1*〔外部中斷1〕 P3.4 T0〔定時器0外部計數(shù)輸入〕P3.5 T1〔定時器1外部計數(shù)輸入〕P3.6WR〔輸出外部數(shù)據(jù)存儲器寫選通信號〕P3.7RD〔輸出外部數(shù)據(jù)存儲器讀選通信號〕383.4.5讀引腳與讀端口操作1.讀端口〔鎖存器〕操作實際可理解為寫端口,是單片機對鎖存器值進行修改。有ANL,ORL等指令,是先讀出數(shù)據(jù),單片機計算完后再將數(shù)據(jù)送到端口鎖存器。2.讀引腳單片機將引腳的電位讀入內(nèi)部,端口改為輸入之前要將端口該引腳置1。393.4.64個端口的主要異同點〔1〕主要相同點都是8位雙向口。都可作通用I/O端口使用。在作為一般的輸入時,都必須先寫1。復(fù)位時全輸出1?!?〕主要不同點P0口作為地址低8位,P2口作為地址高8位。P3(P1)口有第二功能。P0口作為I/O口時,無上拉電阻;P1、P2、P3沒有高阻狀態(tài),稱為準(zhǔn)雙向口。403.5CPU時序及時鐘電路單片機的時序就是CPU在執(zhí)行指令時各控制信號之間的時間順序關(guān)系,為了保證各部件間協(xié)調(diào)一致地同步工作,單片機內(nèi)部的電路應(yīng)在唯一的時鐘信號控制下嚴格地按照時序進行工作。3.5.1CPU的時序及有關(guān)概念CPU執(zhí)行指令的一系列動作都是在統(tǒng)一的時鐘脈沖控制下逐拍進行的,這個脈沖是由單片機控制器中的時序電路發(fā)出的。為了便于對CPU時序進行分析,人們按指令執(zhí)行過程規(guī)定了幾種周期:時鐘周期、機器周期、指令周期。41單片機的周期〔1〕時鐘周期時鐘周期也稱“振蕩周期〞,是時鐘脈沖頻率的倒數(shù)。80C51系列單片機中,一個振蕩周期定義位一個節(jié)拍P,2個節(jié)拍定義為一個狀態(tài)周期S。時鐘頻率越高計算機的運算速多越快?!?〕機器周期在計算機中,為了便于管理,常把一條指令執(zhí)行過程劃分為假設(shè)干個階段,每一階段完成一個根本操作,如取指令、讀存儲器、寫存儲器等。完成一個根本操作所需要的時間稱為“機器周期〞,在80C51系列單片機中,一個機器周期是12個時鐘周期的長度。42指令周期〔3〕指令周期指令周期是指執(zhí)行一條指令所需要的時間,一般由假設(shè)干個機器周期組成。指令不同需要的機器周期個數(shù)也不同。有單周期指令,雙周期指令和多周期指令。433.5.2振蕩器和時鐘電路給CPU提供時序需要有關(guān)硬件電路,即振蕩器和時鐘電路。1.振蕩器和時鐘電路的工作原理80C51系列單片機內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器,但要形成時鐘,外部還需附加電路〔諧振器〕。ALE輸出脈沖頻率為時鐘頻率Fosc的1/6。PCON的PD位等于0可以控制振蕩器停止工作。使單片機進入休眠狀態(tài),降低功耗。44振蕩器和時鐘電路工作原理452.時鐘電路接法〔1〕內(nèi)部時鐘方式XTAL1和XTAL2外接晶體諧振器,C1、C2通常為20~30pF陶瓷電容,為了保證振蕩器穩(wěn)定可靠工作,諧振器和電容盡可能與單片機靠近安裝。46外部時鐘〔2〕外部時鐘方式將外部振蕩脈沖接入XTAL1,XTAL2懸空。3.5.380C51的指令時序有取指令、分析指令和執(zhí)行指令階段。473.6復(fù)位和復(fù)位電路復(fù)位是單片機的初始化操作,使單片機從頭〔0000H〕開始運行。單片機在啟動運行時要先復(fù)位。內(nèi)部復(fù)位信號的產(chǎn)生引腳RST加上大于2個機器周期〔即24個時鐘振蕩周期〕以上的高電平就可使MCS-51復(fù)位。用施密特觸發(fā)器防止干擾483.6.2復(fù)位狀態(tài)復(fù)位時,PC初始化為0000H,使MCS-51單片機從0000H單元開始執(zhí)行程序。除PC之外,復(fù)位操作還對其它一些存放器有影響。特殊功能存放器中,SP=07H,P0-P3的引腳均為高電平FFH,其它為0。在復(fù)位有效期間,ALE腳和PSEN*腳均為高電平,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響。同學(xué)要記住復(fù)位后片內(nèi)存放器和管腳狀態(tài)。493.6.3外部復(fù)位電路設(shè)計復(fù)位電路上電復(fù)位電路按鍵復(fù)位電路

專用復(fù)位芯片AT89S51/52還有內(nèi)部看門狗復(fù)位電路。22u1K200看門狗電路相當(dāng)于一個電容充電電路,當(dāng)充電滿時向CPU發(fā)復(fù)位信號,為了使其不讓單片機復(fù)位那么單片機需要定期在看門狗電路充電沒滿時給它放電,稱“喂狗〞。503.780C51系列單片機的低功耗方式80C51系列單片機除具有一般的程序執(zhí)行方式外還具有兩種低功耗方式,即

溫馨提示

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

評論

0/150

提交評論