單片機硬件結(jié)構(gòu)和原理_第1頁
單片機硬件結(jié)構(gòu)和原理_第2頁
單片機硬件結(jié)構(gòu)和原理_第3頁
單片機硬件結(jié)構(gòu)和原理_第4頁
單片機硬件結(jié)構(gòu)和原理_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

演示文稿單片機硬件結(jié)構(gòu)和原理*1目前一頁\總數(shù)一百零二頁\編于二十點*2(優(yōu)選)單片機硬件結(jié)構(gòu)和原理目前二頁\總數(shù)一百零二頁\編于二十點熟悉MCS-51單片機CPU內(nèi)部組成結(jié)構(gòu)、各功能部件的作用;掌握MCS-51單片機引腳功能;掌握存儲器的組織結(jié)構(gòu);掌握P0~P3并行I/O口結(jié)構(gòu);掌握時鐘電路、CPU時序和復位電路。本章教學要求

目前三頁\總數(shù)一百零二頁\編于二十點本章目錄2.1MCS-51系列單片機分類2.2單片機硬件結(jié)構(gòu)

2.2.1單片機的引腳功能

2.2.2單片機的內(nèi)部結(jié)構(gòu)

2.3中央處理器(CPU)

2.3.1運算器2.3.2控制器

2.3.3布爾(位)處理器

2.4存儲器

2.4.1程序存儲器

2.4.2數(shù)據(jù)存儲器目前四頁\總數(shù)一百零二頁\編于二十點本章目錄2.7單片機的工作方式

2.7.1復位方式

2.7.2程序執(zhí)行方式

2.7.3低功耗運行方式習題與思考題2.5并行輸入/輸出端口

2.5.1P1口

2.5.2P2口

2.5.3P3口

2.5.4P0口

2.5.5并行口的應(yīng)用2.6時鐘電路和時序

2.6.1時鐘電路

2.6.2時序目前五頁\總數(shù)一百零二頁\編于二十點2.1MCS-51系列單片機的分類

自從Intel公司于20世紀80年代初推出MCS-51系列單片機以后,所有的51系列單片機都是以Intel公司最早的典型產(chǎn)品8051為核心,增加一定的功能部件后構(gòu)成的。本章以8051為主闡述MCS-51系列單片機的系統(tǒng)結(jié)構(gòu)、工作原理和應(yīng)用中的一些技術(shù)問題。

MCS-51系列可分為兩大系列:51子系列和52子系列。51子系列主要有8031、8051和8751三種機型。52子系列主要有8032、8052和8752三種機型。目前六頁\總數(shù)一百零二頁\編于二十點表2-1MCS-51系列單片機的性能一覽表

2.1MCS-51系列單片機的分類

目前七頁\總數(shù)一百零二頁\編于二十點2.2單片機硬件結(jié)構(gòu)

芯片引腳按功能分成3類,即:2.2.1單片機的引腳功能51單片機的引腳功能數(shù)據(jù)總線地址總線控制總線目前八頁\總數(shù)一百零二頁\編于二十點1.主電源引腳Vcc和VssVcc(+5V)電源輸入端Vss(GND)共用接地端2.2.1單片機的引腳功能51單片機電源引腳目前九頁\總數(shù)一百零二頁\編于二十點2.時鐘振蕩電路引腳XTAL1和XTAL2

XTAL1和XTAL2分別用做晶體振蕩電路的反相器輸入端和輸出端。在使用內(nèi)部振蕩電路時,這兩個端子用來外接石英晶體,振蕩頻率為晶體振蕩頻率,振蕩信號送至內(nèi)部時鐘電路產(chǎn)生時鐘脈沖信號。2.2.1單片機的引腳功能51單片機時鐘引腳目前十頁\總數(shù)一百零二頁\編于二十點3.控制信號引腳RST為復位信號輸入端VPD為內(nèi)部RAM的備用電源輸入端PSEN外部程序存儲器的讀選通信號ALE地址鎖存允許信號2.2.1單片機的引腳功能復位/外部存儲器/地址鎖存引腳目前十一頁\總數(shù)一百零二頁\編于二十點

復位信號輸入端RST當RST(RESET)端保持兩個機器周期(24個時鐘周期)以上的高電平時,單片機完成復位操作。VPD為內(nèi)部RAM的備用電源輸入端。當主電源Vcc一旦發(fā)生斷電或電壓降到一定值時,可通過VPD為單片機內(nèi)部RAM提供電源,以保護片內(nèi)RAM中的信息不丟失,使Vcc上電后能繼續(xù)正常運行。2.2.1單片機的引腳功能復位引腳目前十二頁\總數(shù)一百零二頁\編于二十點外部程序存儲器的讀選通信號。當訪問外部ROM時,產(chǎn)生負脈沖作為外部ROM的選通信號。2.2.1單片機的引腳功能ALE與PSEN引腳

地址鎖存允許信號ALE在訪問外部存儲器時,ALE用來鎖存P0送出的低8位地址信號。PROG是對8751內(nèi)部EPROM編程時的編程脈沖輸入端。

讀選通信號PSEN目前十三頁\總數(shù)一百零二頁\編于二十點

外部程序存儲器控制信號EAEA=0:訪問外部程序存儲器。EA=1:訪問片內(nèi)與片外程序存儲器。VPP為8751EPROM的21V編程電源輸入端。2.2.1單片機的引腳功能內(nèi)外程序存儲器控制引腳目前十四頁\總數(shù)一百零二頁\編于二十點P0端口P0端口(P0.0~P0.7)第一功能:是一個8位漏極開路型的雙向I/O口,這時P0口可看成用戶數(shù)據(jù)總線;第二功能:是在訪問外部存儲器時,分時提供低8位地址和8位雙向數(shù)據(jù)總線,這時先用做地址總線再用做數(shù)據(jù)總線。4.P0、P1、P2、P3端口2.2.1單片機的引腳功能目前十五頁\總數(shù)一百零二頁\編于二十點P1口(P1.0~P1.7)內(nèi)部帶上拉電阻的8位準雙向I/O口。

P2口(P2.0~P2.7)第一功能:一個內(nèi)部帶上拉電阻的8位準雙向I/O口。第二功能:在訪問外部存儲器時,輸出高8位地址。

P3口(P3.0~P3.7)第一功能:內(nèi)部帶上拉電阻的8位準雙向I/O口。在系統(tǒng)中,這8個引腳都有各自的第二功能。2.2.1單片機的引腳功能P1、P2和P3端口目前十六頁\總數(shù)一百零二頁\編于二十點2.2.2單片機的內(nèi)部結(jié)構(gòu)一個8位CPU;4KB程序存儲器,采用ROM或EPROM(8031無ROM);128B通用數(shù)據(jù)存儲器;21個特殊功能寄存器(SFR);4個8位并行口,其中P0、P2、P3是復用口(P0和P2為地址/數(shù)據(jù)線,可尋址64KBROM和64KBRAM);一個可編程全雙工串行口;具有5個中斷源,兩個優(yōu)先級嵌套結(jié)構(gòu);兩個16位定時/計數(shù)器;一個片內(nèi)振蕩器與時鐘電路。51單片機內(nèi)部主要器件目前十七頁\總數(shù)一百零二頁\編于二十點2.2.2單片機的內(nèi)部結(jié)構(gòu)51單片機內(nèi)部主要部件目前十八頁\總數(shù)一百零二頁\編于二十點2.3中央處理器(CPU)

單片機的核心部分是CPU,由運算器、控制器和布爾(位)處理器組成。目前十九頁\總數(shù)一百零二頁\編于二十點2.3.1運算器

運算器——算術(shù)邏輯單元(ALU)包括:累加器(ACC)程序狀態(tài)字(PSW)暫存器B寄存器等部件運算器的組成目前二十頁\總數(shù)一百零二頁\編于二十點1.累加器累加器是一個8位寄存器。在指令系統(tǒng)中,累加器在直接尋址時的助記符為ACC。除此之外全部用助記符A表示。2.3.1運算器

累加器目前二十一頁\總數(shù)一百零二頁\編于二十點算術(shù)/邏輯部件

算術(shù)/邏輯部件ALU是用于對數(shù)據(jù)進行算術(shù)運算和邏輯操作的執(zhí)行部件,由加法器和其他邏輯電路(移位電路和判斷電路等)組成。在控制信號的作用下,完成算術(shù)加、減、乘、除和邏輯與、或、異或等運算,以及循環(huán)移位操作、位操作等功能。2.3.1運算器2.算術(shù)/邏輯部件目前二十二頁\總數(shù)一百零二頁\編于二十點程序狀態(tài)字寄存器程序狀態(tài)字寄存器PSW是一個8位寄存器,用來存放運算結(jié)果的一些特征。進位標志位半進位標志位用戶自定義標志位工作寄存器組選擇位溢出標志位奇偶校驗標志位2.3.1運算器3.程序狀態(tài)字寄存器

目前二十三頁\總數(shù)一百零二頁\編于二十點RS1、RS0與片內(nèi)工作寄存器組的對應(yīng)關(guān)系

2.3.1運算器片內(nèi)四組工作寄存器的選擇目前二十四頁\總數(shù)一百零二頁\編于二十點4.B寄存器

在進行乘法、除法運算時,B寄存器作為ALU的輸入之一,與ACC配合完成運算,并存放運算結(jié)果。在無乘除運算時,它可作為內(nèi)部RAM的一個單元。2.3.1運算器寄存器目前二十五頁\總數(shù)一百零二頁\編于二十點2.3.2控制器定時控制邏輯指令寄存器數(shù)據(jù)指針(DPTR)程序計數(shù)器(PC)堆棧指針(SP)地址寄存器地址緩沖器控制器的組成控制器是CPU的大腦中樞,它包括:目前二十六頁\總數(shù)一百零二頁\編于二十點1.程序計數(shù)器

程序計數(shù)器(ProgramCounter,PC)用來存放下一條要執(zhí)行的指令的地址。當按照PC所指的地址從存儲器中取出一條指令后,PC會自動加l,即指向下一條指令。2.3.2控制器程序計數(shù)器目前二十七頁\總數(shù)一百零二頁\編于二十點2.堆棧指針

堆棧指針(StackPointer,SP)是指在片內(nèi)RAM的l28B(52子系列為256B)空間中開辟的堆棧區(qū)的棧頂?shù)刂?,并隨時跟蹤棧頂?shù)刂纷兓?。堆棧是按先進后出的原則存取數(shù)據(jù)的,開機復位后,單片機棧底地址為07H。2.3.2控制器堆棧指針目前二十八頁\總數(shù)一百零二頁\編于二十點3.指令寄存器和指令譯碼器

指令寄存器和指令譯碼器(InstructionRegister,IR)的功能是對將要執(zhí)行的指令進行存儲和譯碼。當指令送入指令寄存器后,對該指令進行譯碼,即把指令轉(zhuǎn)變成所需的電平信號,CPU根據(jù)譯碼輸出的電平信號,使定時控制電路產(chǎn)生執(zhí)行該指令所需的各種控制信號,以便計算機能正確地執(zhí)行指令所要求的操作。2.3.2控制器指令寄存與譯碼目前二十九頁\總數(shù)一百零二頁\編于二十點4.數(shù)據(jù)指針

由于8051系列單片機可以外接64KB的數(shù)據(jù)存儲器和I/O接口電路,故在單片機內(nèi)設(shè)置了l6位的數(shù)據(jù)指針寄存器(DataPointer,DPTR)。它可以對64KB的外部數(shù)據(jù)存儲器和I/O進行尋址,DPTR可分為高8位數(shù)據(jù)指針寄存器(DPH)和低8位數(shù)據(jù)指針寄存器(DPL),地址分別為83H和82H。2.3.2控制器數(shù)據(jù)指針目前三十頁\總數(shù)一百零二頁\編于二十點5.布爾(位)處理器

在8051單片機系統(tǒng)中,與字節(jié)處理器相對應(yīng),還特別設(shè)置布爾(位)處理器。Cy:進位標志位位尋址寄存器位尋址的并行I/O口位操作指令系統(tǒng)2.3.2控制器位處理器目前三十一頁\總數(shù)一百零二頁\編于二十點2.4存儲器8051在物理結(jié)構(gòu)上有4個存儲空間:片內(nèi)程序存儲器片外程序存儲器(ROM)片內(nèi)數(shù)據(jù)存儲器片外數(shù)據(jù)存儲器(RAM)從用戶使用的角度上,MSC-51有3個存儲空間:片內(nèi)外統(tǒng)一編址的64KB程序存儲器空間(用16位地址)256B片內(nèi)數(shù)據(jù)存儲器空間(用8位地址)64KB片外數(shù)據(jù)存儲器地址空間51單片機存儲器布局目前三十二頁\總數(shù)一百零二頁\編于二十點存儲器結(jié)構(gòu)2.4存儲器目前三十三頁\總數(shù)一百零二頁\編于二十點2.4.1程序存儲器

程序存儲器用于存放編好的程序或表格常數(shù)。51子系列片內(nèi)有4KBROM,52子系列片內(nèi)有8KBROM,二者片外地址線均為16位,最多可擴展64KBROM,片內(nèi)片外統(tǒng)一編址。若EA端保持低電平,則所有取指令操作均在片外程序存儲器中進行,0000H地址在片外。若EA端保持高電平,0000H地址在片內(nèi),所有取指令操作均在片內(nèi)程序存儲器中進行。程序存儲器的用途目前三十四頁\總數(shù)一百零二頁\編于二十點程序存儲器

在程序存儲器的開始部分,定義了一段具有特殊功能的地址段,用作程序起始和各種中斷的入口。2.4.1程序存儲器程序入口地址目前三十五頁\總數(shù)一百零二頁\編于二十點2.4.2數(shù)據(jù)存儲器

數(shù)據(jù)存儲器用于存放中間運算結(jié)果、數(shù)據(jù)暫存和緩沖、標志位等。

MCS-51系列單片機的片內(nèi)數(shù)據(jù)存儲器除RAM塊外,還有特殊功能寄存器(SFR)塊。 片內(nèi)數(shù)據(jù)存儲器的容量很小,常需要擴展片外數(shù)據(jù)存儲器。MCS-51系列單片機有一個數(shù)據(jù)指針寄存器,可用于尋址程序存儲器或數(shù)據(jù)存儲器單元,它有16位,尋址范圍可達64KB。 數(shù)據(jù)存儲器分為片外數(shù)據(jù)存儲器、片內(nèi)數(shù)據(jù)存儲器、特殊功能存儲器,以下分別加以介紹。數(shù)據(jù)存儲器的用途目前三十六頁\總數(shù)一百零二頁\編于二十點2.4.2數(shù)據(jù)存儲器片內(nèi)通用數(shù)據(jù)存儲器有:工作寄存器區(qū)位尋址區(qū)數(shù)據(jù)緩沖區(qū)片內(nèi)數(shù)據(jù)存儲器3個區(qū)域1.片內(nèi)通用數(shù)據(jù)存儲器目前三十七頁\總數(shù)一百零二頁\編于二十點片內(nèi)數(shù)據(jù)存儲器2.4.2數(shù)據(jù)存儲器工作寄存器區(qū)位尋址區(qū)數(shù)據(jù)緩沖器區(qū)目前三十八頁\總數(shù)一百零二頁\編于二十點(1)工作寄存器區(qū)

工作寄存器也稱為通用寄存器,供用戶編程時使用,用于臨時存儲8位數(shù)據(jù)信息。 工作寄存器地址為00H~1FH的32個單元,并分成4個工作寄存器組,每個組有8個工作寄存器,名稱為R0~R7。工作寄存器和RAM地址的對應(yīng)關(guān)系如表所示。2.4.2數(shù)據(jù)存儲器工作寄存器區(qū)

每個工作寄存器組都可被選為CPU的當前工作寄存器,通過改變程序狀態(tài)字寄存器(PSW)中的RS1、RS0兩位來實現(xiàn)。目前三十九頁\總數(shù)一百零二頁\編于二十點(2)位尋址區(qū)內(nèi)部RAM中地址為20H~2FH的16個單元,CPU不僅具有字節(jié)尋址功能,而且還具有位尋址功能。這16個單元共1282.4.2數(shù)據(jù)存儲器位尋址區(qū)位,每一位都賦予1個位地址,位地址范圍是00H~7FH。目前四十頁\總數(shù)一百零二頁\編于二十點(3)數(shù)據(jù)緩沖區(qū)30H~7FH是數(shù)據(jù)緩沖區(qū),即用戶RAM區(qū),共80個單元。52子系列片內(nèi)RAM有256個單元,工作寄存器區(qū)和位尋址區(qū)的單元數(shù)與地址都和51子系列的一致,而數(shù)據(jù)緩沖區(qū)有208個單元,地址范圍是30H~FFH。2.4.2數(shù)據(jù)存儲器數(shù)據(jù)緩沖區(qū)目前四十一頁\總數(shù)一百零二頁\編于二十點(4)堆棧與堆棧指針堆棧是一種執(zhí)行“后進先出”算法的數(shù)據(jù)結(jié)構(gòu)。是在內(nèi)存中的一個存儲區(qū)域,數(shù)據(jù)一個一個順序地存入(也就是“壓入—push”)這個區(qū)域之中。有一個地址指針(堆棧指針)總指向最后一個壓入堆棧的數(shù)據(jù)所在的存儲單元,存放這個地址指針的寄存器就叫做堆棧指示器。開始放入數(shù)據(jù)的單元叫做“棧底”。數(shù)據(jù)一個一個地存入,這個過程叫做“壓棧”。讀取這些數(shù)據(jù)時,按照堆棧指示器中的地址讀取數(shù)據(jù),堆棧指示器中的地址數(shù)自動減1。這個過程叫做“彈出pop”。如此就實現(xiàn)了后進先出的原則。2.4.2數(shù)據(jù)存儲器堆棧指針目前四十二頁\總數(shù)一百零二頁\編于二十點2.特殊功能寄存器概念

特殊功能寄存器(SpecialFunctionRegister,SFR)也稱為專用寄存器,用于控制、管理單片機內(nèi)部算術(shù)邏輯部件、并行I/O口、串行I/O口、定時器/計數(shù)器、中斷系統(tǒng)等功能模塊的工作。使用系統(tǒng)初始化時針對使用的功能部件編程設(shè)定。2.4.2數(shù)據(jù)存儲器特殊功能寄存器目前四十三頁\總數(shù)一百零二頁\編于二十點表2-6特殊功能寄存器地址對照表2.4.2數(shù)據(jù)存儲器特殊功能寄存器目前四十四頁\總數(shù)一百零二頁\編于二十點PSW與ACC(1)程序狀態(tài)字寄存器(PSW)

PSW是8位寄存器,存放程序運行狀態(tài)的標志,字節(jié)地址為D0H??梢赃M行位尋址。(2)累加器(ACC)

ACC是8位寄存器,用于算術(shù)或邏輯操作的輸入和運算結(jié)果的輸出。在指令系統(tǒng)中累加器的助記符為A,作為直接地址時助記符為ACC。2.4.2數(shù)據(jù)存儲器PSW與ACC目前四十五頁\總數(shù)一百零二頁\編于二十點(3)數(shù)據(jù)指針寄存器(DPTR)16位的專用地址指針寄存器??蓪ν獠看鎯ζ骱虸/O口進行尋址,也可拆成高字節(jié)DPH和低字節(jié)DPL兩個獨立的8位寄存器,在CPU內(nèi)分別占據(jù)83H和82H兩個地址。當對64KB外部數(shù)據(jù)存儲器尋址時,DPTR可作為間接尋址寄存器使用:從外部數(shù)據(jù)存儲器取數(shù)MOVXA,@DPTR送數(shù)到外部數(shù)據(jù)存儲器MOVX@DPTR,A2.4.2數(shù)據(jù)存儲器DPTR目前四十六頁\總數(shù)一百零二頁\編于二十點(4)B寄存器X*YX/Y

在乘、除法運算中用B寄存器暫存數(shù)據(jù)。乘法指令的兩個操作數(shù)分別取自A和B,結(jié)果再存于B和A中,即A存低字節(jié),B存高字節(jié)。除法指令中被除數(shù)取自A,除數(shù)取自B,結(jié)果商存于A中,余數(shù)存放在B中。在其他指令中,B寄存器可作為RAM中的一個單元使用。B寄存器的地址為B0H。2.4.2數(shù)據(jù)存儲器B寄存器目前四十七頁\總數(shù)一百零二頁\編于二十點(5)堆棧指針(SP)

堆棧是個特殊的存儲區(qū),主要功能是暫時存放數(shù)據(jù)和地址,通常用來保護斷點和現(xiàn)場。它的特點是按照先進后出的原則存取數(shù)據(jù),這里的進與出是指進棧與出棧操作。2.4.2數(shù)據(jù)存儲器堆棧指針(SP)與P0~P3鎖存器(6)端口P0~P3特殊功能寄存器P0~P3分別是I/O端口P0~P3的鎖存器。目前四十八頁\總數(shù)一百零二頁\編于二十點(7)定時器/計數(shù)器TL0、TH0、TL1、TH1MSC-51單片機中有兩個16位的定時器/計數(shù)器T0和T1,它們由4個8位寄存器(TH0、TL0、TH1和TL1)組成。

兩個16位定時器/計數(shù)器是完全獨立的,可以單獨對這4個寄存器尋址。2.4.2數(shù)據(jù)存儲器定時器/計數(shù)器目前四十九頁\總數(shù)一百零二頁\編于二十點(8)串行數(shù)據(jù)緩沖器(SBUF)功能:存放需要發(fā)送和接收的數(shù)據(jù)。組成:由兩個獨立的寄存器構(gòu)成,一個是發(fā)送緩沖器,一個是接收緩沖器,但寄存器名稱統(tǒng)一為SUBF。使用:發(fā)送指令MOVSUBF,A;使用發(fā)送緩沖器。

接收指令MOVA,SUBF;使用接收緩沖器。2.4.2數(shù)據(jù)存儲器串行數(shù)據(jù)緩沖器目前五十頁\總數(shù)一百零二頁\編于二十點(9)控制寄存器控制寄存器有5種。中斷優(yōu)先級控制寄存器(IP)中斷允許控制寄存器(IE)定時器/計數(shù)器控制寄存器(TCON)串行口控制寄存器(SCON)電源控制寄存器(PCON)它們將在后續(xù)章節(jié)中詳細介紹。2.4.2數(shù)據(jù)存儲器控制寄存器目前五十一頁\總數(shù)一百零二頁\編于二十點可位尋址的位地址分布MCS-51可直接位尋址的空間有216位。其中內(nèi)部RAM的20H~2FH這16個單元具有128個位地址空間,位地址為00H~7FH;另一部分位地址在特殊功能寄存器中,這些特殊功能寄存器是一些能被8整除的字節(jié)單元,地址在80H~FFH區(qū)間,只用了11個字節(jié),它們都可進行位尋址,共計88位。如表2-8所示。2.4.2數(shù)據(jù)存儲器可位尋址的位地址分布目前五十二頁\總數(shù)一百零二頁\編于二十點可位尋址的位地址分布2.4.2數(shù)據(jù)存儲器可位尋址的位地址分布目前五十三頁\總數(shù)一百零二頁\編于二十點位操作與字節(jié)操作

盡管位地址和字節(jié)地址有重疊,讀/寫位尋址空間時也采用MOV指令形式,但所有的位操作指令都是以位地址為一個操作數(shù),以進位位(Cy)為另一個操作數(shù)。例如,讀位地址90H,用指令:MOVC,90H或MOVC,P1.0

寫位地址90H,用指令:MOV90H,C或MOVP1.0,C2.4.2數(shù)據(jù)存儲器位操作與字節(jié)操作目前五十四頁\總數(shù)一百零二頁\編于二十點2.5并行輸入/輸出(I/O)端口接口的主要功能包括:緩沖與鎖存數(shù)據(jù)、地址譯碼、信息格式轉(zhuǎn)換、傳遞狀態(tài)(外設(shè)狀態(tài))和發(fā)布命令等。I/O接口有:并行接口、串行接口、定時/計數(shù)器、A/D、D/A等。根據(jù)外設(shè)的不同情況和要求選擇不同的接口。本節(jié)介紹MCS-51單片機的并行輸入/輸出接口。目前五十五頁\總數(shù)一百零二頁\編于二十點并行輸入/輸出接口 MCS-51單片機有P0、P1、P2、P3四個8位雙向并行I/O口,每個端口可以按字節(jié)輸入或輸出,也可以按位進行輸入或輸出,4個并行口共有32根端口線,用做位控制十分方便。并行I/O口具有如下特點。2.5并行輸入/輸出(I/O)端口目前五十六頁\總數(shù)一百零二頁\編于二十點并行I/O口特點(1)4個并行I/O口都是雙向的。P0口為漏極開路驅(qū)動;P1、P2、P3口均具有內(nèi)部上拉電阻驅(qū)動,它們有時稱為準雙向口。(2)32根端口線都可用做輸入或輸出,還可進行位操作。(3)當并行I/O口作為輸入時,該口的鎖存器必須先寫入“1”,這是一個重要條件。否則,該口不能讀入正確數(shù)據(jù)。2.5并行輸入/輸出(I/O)端口目前五十七頁\總數(shù)一百零二頁\編于二十點2.5.1P1口MCS-51單片機的Pl口只有一種功能,即通用輸入/輸出接口。P1口每位的內(nèi)部結(jié)構(gòu)如圖2-5所示。圖2-5P1口每位的內(nèi)部結(jié)構(gòu)示意圖目前五十八頁\總數(shù)一百零二頁\編于二十點1.輸出方式當CPU執(zhí)行寫P1口的指令(如MOVPl,#data)時,P1口工作于輸出方式,此時數(shù)據(jù)data經(jīng)內(nèi)部總線送入鎖存器鎖存。如果某位的數(shù)據(jù)為1,則該位鎖存器輸出端Q=1,而使T截止,從而在引腳P1.x上出現(xiàn)高電平,即輸出數(shù)據(jù)“1”。反之,如果數(shù)據(jù)為0,則Q=0,而使T導通,P1.x上出現(xiàn)低電平,即輸出數(shù)據(jù)“0”。2.5.1P1口P1口工作原理目前五十九頁\總數(shù)一百零二頁\編于二十點2.輸入方式

當CPU執(zhí)行讀P1口的指令(如MOVA,P1)時,P1口工作于輸入方式。2.5.1P1口P1口工作原理目前六十頁\總數(shù)一百零二頁\編于二十點2.5.2P2口P2口有兩種用途:通用I/O口或高8位地址總線。P2口內(nèi)部結(jié)構(gòu)圖2-6P2口每位的內(nèi)部結(jié)構(gòu)示意圖通用I/O與地址線的選擇可根據(jù)指令由控制信號完成。目前六十一頁\總數(shù)一百零二頁\編于二十點MOVXA,@Ri或MOVX@Ri,A此時,Ri寄存器提供的是8位地址,由P0口送出,不需要P2口,P2口引腳原有的數(shù)據(jù)在訪問片外RAM期間不受影響,故P2口仍可用做通用I/O口。當片外RAM容量較大需要由P2口和P0口送出16位地址時,P2口不再用做通用I/O口。P2口用作地址線/通用I/O口2.5.2P2口P2口用作地址線當P2口作為準雙向通用I/O口使用時,其功能與P1口相同,工作方式、負載能力也相同。P2口用作通用I/O口目前六十二頁\總數(shù)一百零二頁\編于二十點2.5.3P3口P3口是雙功能口,默認為第一功能(通用I/O),通過編程可設(shè)定為第二功能。通用I/O口狀態(tài)圖2-7P3口每位的內(nèi)部結(jié)構(gòu)示意圖1.通用I/O口狀態(tài)

P3口用做準雙向通用I/O口時,其功能與P1口相同。目前六十三頁\總數(shù)一百零二頁\編于二十點2.第二功能狀態(tài)2.5.3P3口第二功能狀態(tài)P3口作為第二功能操作時,其鎖存器Q端必須為高電平(可用輸出指令向端口寫1,以使Q=1。單片機復位時,鎖存器輸出端為高電平),否則無法輸入或輸出第二功能信號。P3口第二功能中的輸入信號經(jīng)三態(tài)門2輸入,可直接進入內(nèi)部總線。P3口第二功能定義如表2-8所示。目前六十四頁\總數(shù)一百零二頁\編于二十點2.5.3P3口第二功能狀態(tài)表2-8P3口第二功能目前六十五頁\總數(shù)一百零二頁\編于二十點P3口使用P3口的每一位都可獨立地定義為第一功能I/O或第二功能使用。P3的第二功能涉及到串行口、外部中斷、定時器,與特殊功能寄存器有關(guān),它們的結(jié)構(gòu)、功能等在后面章節(jié)中再作進一步介紹。2.5.3P3口P3口使用P3口的地址為B0H,對應(yīng)P3.0~P3.7的位地址為B0H~B7H。目前六十六頁\總數(shù)一百零二頁\編于二十點2.5.4P0口地址/數(shù)據(jù)分時復用總線通用I/O口P0口的功能圖2-8P0口每位的內(nèi)部結(jié)構(gòu)示意圖P0口有兩種功能P0口內(nèi)部無上拉電阻,作為I/O口時,必須外接上拉電阻。目前六十七頁\總數(shù)一百零二頁\編于二十點地址/數(shù)據(jù)總線狀態(tài)2.5.4P0口P0口作為地址/數(shù)據(jù)總線的工作原理(輸出)P0口作為輸入端口的工作原理(輸入)P0口作為通用I/O口時的工作原理圖2-8P0口每位的內(nèi)部結(jié)構(gòu)示意圖目前六十八頁\總數(shù)一百零二頁\編于二十點當CPU向端口輸出數(shù)據(jù)時,寫脈沖加在鎖存器的時鐘端CL上。由于輸出驅(qū)動級是漏極開路電路(因VT0截止),在作為I/O口使用時應(yīng)外接10K的上拉電阻。當CPU從端口讀數(shù)據(jù)時,端口中兩個三態(tài)門用于讀操作。P0口讀/寫數(shù)據(jù)2.5.4P0口圖2-8P0口每位的內(nèi)部結(jié)構(gòu)示意圖目前六十九頁\總數(shù)一百零二頁\編于二十點P0口讀-修改-寫當執(zhí)行“讀-修改-寫”指令(即讀端口信息,在片內(nèi)加以運算修改后,再輸出到該端口的某些指令如:ANLP0,A指令),即是讀鎖存器Q的數(shù)據(jù)。究竟是讀引腳還是讀鎖存器,CPU內(nèi)部會自行判斷是發(fā)讀引腳脈沖還是讀鎖存器脈沖,讀者不必在意。2.5.4P0口P0口的讀-修改-寫操作目前七十頁\總數(shù)一百零二頁\編于二十點

當作輸入端口使用時,應(yīng)先對該口寫入“1”以使場效應(yīng)管VT1截止,再進行讀入操作,以防場效應(yīng)管處于導通狀態(tài)而使引腳箝位到零,引起誤讀。讀引腳時注意2.5.4P0口P0口用作輸入端時應(yīng)注意目前七十一頁\總數(shù)一百零二頁\編于二十點4個并行口使用注意事項(1)如果單片機內(nèi)部有程序存貯器,不需要擴展外部存貯器和I/O接口,單片機的4個口均可作為I/O口使用;(2)4個口在作為輸入口使用時,均應(yīng)先對其寫“1”,以避免誤讀;(3)P0口作為I/O口使用時應(yīng)外接10K的上拉電阻,其它口則可不必;(4)P2口某幾根口線作地址使用時,剩下的口線不能作為I/O口線使用;(5)P3口的某些口線作第二功能時,剩下的口線可以單獨作為I/O口線使用。2.5.4P0口P0、P1、P2、P3并行端口使用注意事項目前七十二頁\總數(shù)一百零二頁\編于二十點2.5.5并行口的應(yīng)用

并行接口是單片機用得最多的部分,可直接連接外部設(shè)備(需要注意電平的匹配)?,F(xiàn)以最簡單的外部設(shè)備——開關(guān)和發(fā)光二極管為例說明并行口的應(yīng)用設(shè)計。目前七十三頁\總數(shù)一百零二頁\編于二十點I/O端口應(yīng)用設(shè)計例2-1

設(shè)計一電路,監(jiān)視某開關(guān)(K),用發(fā)光二極管(LED)顯示開關(guān)狀態(tài)。如果K閉合,則LED亮;如果K斷開,則LED熄滅。分析:通過程序監(jiān)視P1.1端口的狀態(tài)。若:P1.1=1,P1.0=0

若:P1.1=0,P1.0=12.5.5并行口的應(yīng)用目前七十四頁\總數(shù)一百零二頁\編于二十點匯編語言程序代碼如下:CLRP1.0 ;使LED滅AGA:SETBP1.1 ;先對P1.1口寫入“1”,

;以便能正確讀入P1.1口數(shù)據(jù)JB P1.1,LIG ;判斷P1.1口狀態(tài)(0或1),

;“1”為K斷開,轉(zhuǎn)LIGSETBP1.0 ;K閉合時,置位P1.0,LED亮SJMPAGA ;循環(huán)執(zhí)行,方便反復調(diào)整開關(guān)

;狀態(tài),觀察執(zhí)行結(jié)果LIG:CLRP1.0 ;K斷開時,P1.0清0,LED滅SJMPAGA ;循環(huán)執(zhí)行,2.5.5并行口的應(yīng)用I/O端口應(yīng)用設(shè)計目前七十五頁\總數(shù)一百零二頁\編于二十點例2-2

在圖2-10所示電路中,P1.4~P1.7接4個LED管,P1.0~P1.3接4個開關(guān),編程序?qū)㈤_關(guān)的狀態(tài)反映到LED上。2.5.5并行口的應(yīng)用I/O端口應(yīng)用設(shè)計目前七十六頁\總數(shù)一百零二頁\編于二十點ORG 0000HMOV P1,#0FFH ;高四位的LED全滅,低四位輸入線送“1”ABC:MOV A,P1 ;讀P1口引腳開關(guān)狀態(tài),并送入ASWAP A ;低四位開關(guān)狀態(tài)換到高四位

ANL A,#0F0H ;保留高四位

MOV P1,A ;從P1口輸出,驅(qū)動四位LEDORL P1,#0FH ;保持高四位不變,低四位送“1”,

;準備再讀開關(guān)

SJMP ABC ;循環(huán)執(zhí)行,方便反復調(diào)整開關(guān)狀態(tài),

;觀察執(zhí)行結(jié)果上述程序中每次讀取開關(guān)狀態(tài)之前,輸入位都先置“1”,保證了開關(guān)狀態(tài)的正確讀入。2.5.5并行口的應(yīng)用I/O端口應(yīng)用設(shè)計匯編語言程序代碼如下:目前七十七頁\總數(shù)一百零二頁\編于二十點sfrP1=0x90;main(){ P1=0xff; /*P1低4位置“1”,高4位燈全滅*/ while(1)

{P1=P1<<4; /*讀入P1引腳狀態(tài),左移四位,將低四位的開關(guān)狀態(tài)移至高四位后從P1口輸出,以驅(qū)動LED*/ P1=P1|0x0f; /*P1高4位不變,低4位置“1”,準備下再讀開關(guān)狀態(tài)*/

}}2.5.5并行口的應(yīng)用C語言程序代碼如下:I/O端口應(yīng)用設(shè)計目前七十八頁\總數(shù)一百零二頁\編于二十點2.5.5并行口的應(yīng)用I/O端口應(yīng)用設(shè)計例2-3

用P1.0輸出1kHz和500Hz的音頻信號驅(qū)動揚聲器,作為報警信號,要求1kHz信號響100ms,500Hz信號響200ms,交替進行。P1.7接一開關(guān)進行控制,當開關(guān)合上(高電平)時發(fā)出報警信號,當開關(guān)斷開(低電平)時報警信號停止。設(shè)單片機晶振頻率為12MHz。編程實現(xiàn)上述功能。目前七十九頁\總數(shù)一百零二頁\編于二十點500Hz信號周期為2ms,信號電平為每1ms改變1次。1kHz的信號周期為1ms,信號電平每500μs改變1次。編寫一個延時500μs的子程序,延時1ms只需調(diào)用2次。用R2控制音響時間長短,A作為音響頻率交換控制的標志。A=0FFH時產(chǎn)生500Hz信號,A=00H時產(chǎn)生1kHz信號。2.5.5并行口的應(yīng)用I/O端口應(yīng)用設(shè)計分析:目前八十頁\總數(shù)一百零二頁\編于二十點匯編語言程序代碼如下:

ORG 0000H CLR A ;A作為1kHz,500Hz轉(zhuǎn)換控制標志BEG: JNBP1.7,$;檢測P1.7的開關(guān)狀態(tài),等待開關(guān)閉合

MOV R2,#200;R2置音響控制時間初值DV: CPLP1.0 ;改變P1.0狀態(tài)

CJNE A,#0FFH,N1;A≠0FFH,延時500μs ACALLD500 ;A=0FFH,延時1msN1: ACALLD500 DJNZ R2,DV CPL A SJMP BEGD500: MOV R7,#250;延時500μs子程序

DJNZ R7,$;l執(zhí)行該指令用2μs RET END2.5.5并行口的應(yīng)用匯編程序?qū)崿F(xiàn)目前八十一頁\總數(shù)一百零二頁\編于二十點2.6時鐘電路及時序單片機工作是在統(tǒng)一的時鐘脈沖控制下一拍一拍地進行的,這個脈沖是單片機控制器中的時序電路發(fā)出的。MCS-51系列單片機內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器,但要形成時鐘脈沖,外部還需附加電路。MCS-51的時鐘產(chǎn)生方法有以下兩種。2.6.1時鐘電路目前八十二頁\總數(shù)一百零二頁\編于二十點內(nèi)部時鐘方式利用芯片內(nèi)部的振蕩器,然后在引腳XTALl和XTAL2兩端跨接晶體振蕩器(簡稱晶振),就構(gòu)成了穩(wěn)定的自激振蕩器,發(fā)出的脈沖直接送入內(nèi)部時鐘電路。外接晶振時,Cl和C2的值通常選擇為30pF左右;Cl、C2對頻率有微調(diào)作用,晶振或陶瓷諧振器的頻率范圍可在1.2~12MHz之間選擇。2.6.1時鐘電路1.內(nèi)部時鐘方式目前八十三頁\總數(shù)一百零二頁\編于二十點外部時鐘方式此方式是利用外部振蕩脈沖接入XTALl或XTAL2。HMOS和CHMOS單片機外時鐘信號接入方式不同,如表所示。單片機(HMOS型)外部時鐘電路如圖所示。2.6.1時鐘電路2.外部時鐘方式目前八十四頁\總數(shù)一百零二頁\編于二十點2.6.2時序CPU執(zhí)行指令的一系列動作都是在時序電路控制下進行的,由于指令的字節(jié)數(shù)不同,取這些指令所需要的時間就不同,既使是字節(jié)數(shù)相同的指令,由于執(zhí)行操作有較大差別,不同的指令執(zhí)行時間也不一定相同,即所需要的節(jié)拍數(shù)不同。為了便于對CPU時序進行分析,人們按指令的執(zhí)行過程規(guī)定了幾種周期,即時鐘周期、狀態(tài)周期、機器周期和指令周期,也稱為時序定時單位。目前八十五頁\總數(shù)一百零二頁\編于二十點時鐘周期時鐘周期也稱為振蕩周期,定義為時鐘脈沖頻率(fosc)的倒數(shù),它是計算機中最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。為方便描述,振蕩周期用P表示。2.6.2時序1.時鐘周期目前八十六頁\總數(shù)一百零二頁\編于二十點狀態(tài)周期時鐘周期經(jīng)2分頻后成為內(nèi)部的時鐘信號,用作單片機內(nèi)部各功能部件按序協(xié)調(diào)工作的控制信號,稱為狀態(tài)周期,用S表示。這樣,一個狀態(tài)周期就有兩個時鐘周期,前半狀態(tài)周期相應(yīng)的時鐘周期定義為P1,后半狀態(tài)周期相應(yīng)的時鐘周期定義為P2。2.6.2時序2.狀態(tài)周期目前八十七頁\總數(shù)一百零二頁\編于二十點機器周期完成一個基本操作所需要的時間稱為機器周期。MCS-51有固定的機器周期,規(guī)定一個機器周期有6個狀態(tài),分別表示為S1~S6,而一個狀態(tài)包含兩個時鐘周期,那么一個機器周期就有12個時鐘周期,可以表示為S1P1,S1P2,…,S6P1,S6P2。一個機器周期共包含12個振蕩脈沖,即機器周期就是振蕩脈沖的12分頻。顯然,如果使用6MHz的時鐘頻率,一個機器周期就是2μs,而如果使用12MHz的時鐘頻率,一個機器周期就是1μs。2.6.2時序3.機器周期目前八十八頁\總數(shù)一百零二頁\編于二十點指令周期指令周期是執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成,指令不同,所需要的機器周期數(shù)也不同。2.6.2時序4.指令周期單周期指令雙周期指令4周期指令目前八十九頁\總數(shù)一百零二頁\編于二十點5.MCS-51指令的取指/執(zhí)行時序ALE信號是用于鎖存地址的選通信號,由時鐘頻率6分頻得到的,多數(shù)指令在整個指令執(zhí)行過程中ALE信號是周期信號。通常,在每個機器周期內(nèi)ALE信號出現(xiàn)兩次,時刻為S1P2和S4P2,信號的有效寬度為一個S狀態(tài)。每出現(xiàn)一次ALE信號,CPU進行一次讀指令操作,但并不是每條指令在ALE信號生效時都能有效地讀取指令。如果是單周期指令,則在S4P2期間仍有操作,但讀出的字節(jié)被丟棄,且讀后的PC值不加1。如果是雙周期指令,則在S4P2期間讀二字節(jié),在S6P2時結(jié)束指令。2.6.2時序目前九十頁\總數(shù)一百零二頁\編于二十點2.6.2時序51單片機時序圖目前九十一頁\總數(shù)一百零二頁\編于二十點2.7單片機的工作方式復位是單片機的初始化操作。單片機系統(tǒng)在上電啟動運行時,都需要先復位。其作用是使CPU和系統(tǒng)中其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。2.7.1復位方式復位的作用目前九十二頁\總數(shù)一百零二頁\編于二十點復位電路2.7.1復位方式(1)上電復位上電復位利用電容器的充電實現(xiàn)。在時鐘電路工作后,在RST端連續(xù)給出2個機器周期的高電平就可完成復位操作。1.復位電路單片機的外部復位電路有上電自動復位和按鍵手動復位兩種。目前九十三頁\總數(shù)一

溫馨提示

  • 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

提交評論