




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章
MCS-51硬件體系結(jié)構(gòu)第二章
MCS-51硬件體系結(jié)構(gòu)2本章目錄8051的芯片封裝與內(nèi)部功能模塊8051內(nèi)部結(jié)構(gòu)MCS-51的基本時(shí)序MCS-51的工作方式2本章目錄8051的芯片封裝與內(nèi)部功能模塊8051內(nèi)部結(jié)構(gòu)M32.1MCS-51的特點(diǎn)
MCS-51單片機(jī)是在一塊硅片上集成了中央處理器(CPU)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、輸入輸出端口(I/O)等主要計(jì)算機(jī)功能部件的微型計(jì)算機(jī),8051的內(nèi)部功能模塊如圖所示。32.1MCS-51的特點(diǎn)MCS-51單片機(jī)是4單片機(jī)8051的內(nèi)部功能模塊8位的CPU,其作用是實(shí)現(xiàn)各種算術(shù)運(yùn)算、邏輯運(yùn)算以及判斷控制等功能。片內(nèi)振蕩器及時(shí)鐘電路。片內(nèi)RAM,共有128B,用來存放數(shù)據(jù),又稱為片內(nèi)數(shù)據(jù)存儲(chǔ)器。片內(nèi)ROM,共有4KB,用來存放程序,又稱為片內(nèi)程序存儲(chǔ)器。在MCS-51系列單片機(jī)中,8051有ROM,而8031沒有ROM。4單片機(jī)8051的內(nèi)部功能模塊8位的CPU,其作用是實(shí)現(xiàn)各種5單片機(jī)8051的內(nèi)部功能模塊特殊功能寄存器(SFR),共有21個(gè),是一組特殊用途的寄存器。32根I/O線,分為4組8位的雙向輸入輸出端口。2個(gè)16位的定時(shí)器/計(jì)數(shù)器,具有四種工作方式。一個(gè)全雙工串行通信接口,具有四種工作方式。5個(gè)中斷源,2級中斷優(yōu)先權(quán)。布爾處理器。5單片機(jī)8051的內(nèi)部功能模塊特殊功能寄存器(SFR),共有6MCS-51的芯片封裝MCS-51單片機(jī)大多采用40只引腳的雙列直插DIP封裝,引腳如圖所示;也有采用44只引腳的方形封裝。6MCS-51的芯片封裝MCS-51單片機(jī)大多采用40只引腳7MCS-51的芯片引腳定義Pin39~Pin32:P0.0~P0.7,雙向8位三態(tài)I/O口,為低8位地址總線及數(shù)據(jù)總線分時(shí)復(fù)用口。Pin1~Pin8:P1.0~P1.7,準(zhǔn)雙向8位I/O口。Pin21~Pin28:P2.0~P2.7,準(zhǔn)雙向8位I/O口,可作為高8位地址總線復(fù)用。Pin10~Pin17:P3.0~P3.7,雙功能復(fù)用,第一功能是準(zhǔn)雙向8位I/O口。Pin9:RST/VPD,復(fù)用。第一功能RST是復(fù)位腳;第二功能是VPD,即備用電源輸入腳。Pin18:時(shí)鐘XTAL2,片內(nèi)振蕩電路的輸出腳,接外部晶體的一個(gè)引腳。如果采用外部振蕩器時(shí),此引腳則接收振蕩器的信號。Pin19:時(shí)鐘XTAL1,片內(nèi)振蕩電路的輸入腳,接外部晶體的另一個(gè)引腳。如果采用外部振蕩器時(shí),此引腳應(yīng)接地。Pin20:VSS,接地。7MCS-51的芯片引腳定義Pin39~Pin32:P0.8MCS-51的芯片引腳定義Pin29:PSEN,片外程序存儲(chǔ)器的選通信號,低電平有效。Pin30:ALE/PROG,復(fù)用。第一功能ALE是地址鎖存信號輸出端。在訪問片外存儲(chǔ)器時(shí),若ALE為有效高電平,則P0口輸出16位地址的低8位,可以用ALE信號做外部地址鎖存器的鎖存信號。當(dāng)ALE端輸出一個(gè)1/6時(shí)鐘頻率的正脈沖信號時(shí),可做系統(tǒng)中其他芯片的時(shí)鐘源。第二功能PROG是針對EPROM型單片機(jī)(8751等),在EPROM編程期間,此引腳用來輸入編程脈沖。Pin31:EA/VPP,復(fù)用。第一功能EA是內(nèi)外部程序存儲(chǔ)器的選通信號腳。第二功能VPP是針對EPROM型單片機(jī),在EPROM編程期間,此引腳用于施加編程電壓。Pin40:VCC,接+5V電源。8MCS-51的芯片引腳定義Pin29:PSEN,片外程序92.2MCS-51內(nèi)部結(jié)構(gòu)MCS-51系列單片機(jī)片內(nèi)結(jié)構(gòu)如圖所示,可劃分為CPU、存儲(chǔ)器、并行口、串行口、定時(shí)器/計(jì)數(shù)器和中斷邏輯幾個(gè)部分。若將4KB的ROM存儲(chǔ)器部分用EPROM替換,則單片機(jī)就由8051變?yōu)?751,而去掉ROM存儲(chǔ)器則成為8031.92.2MCS-51內(nèi)部結(jié)構(gòu)MCS-51系列單片機(jī)片內(nèi)結(jié)102.2.1中央處理器
中央處理器是單片機(jī)內(nèi)部的核心部件,它決定了單片機(jī)的主要功能特性。中央處理器由運(yùn)算器和控制器等部件組成,其中包括若干特殊功能寄存器(SFR)。1.運(yùn)算器運(yùn)算器包括算術(shù)邏輯部件ALU、布爾處理器、累加器ACC、寄存器B、暫存器TMP1和TMP2、程序狀態(tài)字寄存器PSW以及十進(jìn)制調(diào)整電路等。運(yùn)算器的功能是實(shí)現(xiàn)數(shù)據(jù)的算術(shù)邏輯運(yùn)算、位變址處理和數(shù)據(jù)傳送操作。102.2.1中央處理器中央處理器是單片11運(yùn)算器算術(shù)邏輯部件ALUMCS-51單片機(jī)的ALU功能十分強(qiáng),它不僅可對8位變量進(jìn)行邏輯“與”、“或”、“異或”、循環(huán)、求補(bǔ)、清零等基本操作,還可以進(jìn)行加、減、乘、除等基本運(yùn)算。為了乘除運(yùn)算的需要,設(shè)置了寄存器B,在執(zhí)行乘法運(yùn)算指令時(shí),用來存放其中一個(gè)乘數(shù)和乘積的高8位數(shù);在執(zhí)行除法運(yùn)算指令時(shí),存入除數(shù)及余數(shù)。
MCS-51單片機(jī)的ALU還具有布爾處理功能。單片機(jī)指令系統(tǒng)中的布爾指令集、存儲(chǔ)器中的位地址空間與CPU中的位操作構(gòu)成了片內(nèi)的布爾功能系統(tǒng),它可對位(bit)變量進(jìn)行布爾處理,如置位、清零、求補(bǔ)、測試轉(zhuǎn)移及邏輯“與”、“或”等操作。在實(shí)現(xiàn)位操作時(shí),借用程序狀態(tài)字(PSW)中的進(jìn)位標(biāo)志CY作為位操作的“累加器”。11運(yùn)算器算術(shù)邏輯部件ALU12運(yùn)算器累加器
運(yùn)算部件中的累加器ACC是一個(gè)8位的累加器。從功能上看,它與一般微處理器的累加器相比沒有什么特別之處,但需要說明的是ACC的進(jìn)位標(biāo)志CY就是布爾處理器進(jìn)行位操作的累加器。12運(yùn)算器累加器13運(yùn)算器程序狀態(tài)字PSW
MCS-51單片機(jī)的程序狀態(tài)字PSW是一個(gè)8位寄存器,其中的7位用來寄存本次運(yùn)算的狀態(tài)信息。各位的含義如下:CY:進(jìn)位標(biāo)志。有進(jìn)位/借位時(shí),CY=1;否則CY=0。AC:半進(jìn)位標(biāo)志。當(dāng)D3位向D4位有進(jìn)位/借位時(shí),AC=1;否則AC=0。常用于十進(jìn)制調(diào)整運(yùn)算中。F0:用戶可設(shè)置的標(biāo)志,可用軟件來置位或復(fù)位,編程時(shí)供測試用。RS1、RS2:四個(gè)通用寄存器組的選擇位。這兩位的四種組合狀態(tài)用來選擇0~3寄存器組。OV:溢出標(biāo)志。當(dāng)帶符號數(shù)運(yùn)算結(jié)果超出-128~+127范圍時(shí),OV=1;否則OV=0。當(dāng)無符號數(shù)乘法結(jié)果超過255時(shí),或無符號數(shù)除法的除數(shù)為0時(shí),OV=1;否則OV=0。P:奇偶校驗(yàn)標(biāo)志。每條指令執(zhí)行完,若累加器A中1的個(gè)數(shù)為奇數(shù)時(shí),P=1;否則P=0,即偶校驗(yàn)方式。13運(yùn)算器程序狀態(tài)字PSW14控制器
控制器主要包括定時(shí)與控制邏輯、程序計(jì)數(shù)器PC、指令寄存器IR、譯碼器ID以及地址指針DPTR等。
(1)定時(shí)與控制邏輯
①時(shí)鐘電路
8051片內(nèi)設(shè)有一個(gè)由反向放大器構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,時(shí)鐘可以由內(nèi)部或外部產(chǎn)生。片內(nèi)產(chǎn)生方式的時(shí)鐘電路如圖所示。14控制器控制器主要包括定時(shí)與控制邏輯、程序計(jì)數(shù)15控制器②時(shí)序
MCS-51典型的指令周期為一個(gè)機(jī)器周期,一個(gè)機(jī)器周期由6個(gè)狀態(tài)(12個(gè)振蕩周期)組成,每個(gè)狀態(tài)又被分成P1和P2兩拍。通常算術(shù)邏輯操作在P1拍進(jìn)行,而內(nèi)部寄存器傳送在P2拍進(jìn)行。圖2.6給出了8051單片機(jī)的取指和執(zhí)行指令的定時(shí)關(guān)系。15控制器②時(shí)序16控制器(2)程序計(jì)數(shù)器PC
用來存放即將要執(zhí)行的存放在程序存儲(chǔ)器中的指令地址,共16位,可對64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。(3)指令寄存器IRCPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。(4)指令譯碼器IDID對IR中指令操作碼進(jìn)行分析解釋,產(chǎn)生相應(yīng)的控制信號。(5)數(shù)據(jù)指針DPTRDPTR是16位地址寄存器,可以尋址64KB地址空間,既可用于尋址外部數(shù)據(jù)寄存器,也可尋址外部程序存儲(chǔ)器中的表格數(shù)據(jù)。16控制器(2)程序計(jì)數(shù)器PC172.2.2存儲(chǔ)器組織單片機(jī)的存儲(chǔ)器結(jié)構(gòu)有兩種類型:哈佛(Harvard)結(jié)構(gòu):程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器普林斯頓(Princeton)結(jié)構(gòu):程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一
MCS-51系列單片機(jī)采用哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。
MCS-51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)在物理上可劃分為片內(nèi)ROM、片外ROM、片內(nèi)RAM、片外RAM。其中,ROM存儲(chǔ)器地址空間的地址范圍為0000H~FFFFH,片內(nèi)RAM地址空間的地址范圍為00H~FFH,片外RAM地址空間的地址范圍為0000H~FFFFH。172.2.2存儲(chǔ)器組織單片機(jī)的存儲(chǔ)器結(jié)構(gòu)有兩種類型:18程序存儲(chǔ)器ROM
在單片機(jī)處理問題之前必須事先將編好的程序、表格、常數(shù)匯編成機(jī)器代碼后存入單片機(jī)的存儲(chǔ)器中,該存儲(chǔ)器稱為程序存儲(chǔ)器。程序存儲(chǔ)器可以放在片內(nèi)或片外,亦可片內(nèi)片外同時(shí)設(shè)置。由于PC程序計(jì)數(shù)器為16位,使得程序存儲(chǔ)器可用16位二進(jìn)制地址,因此,內(nèi)外存儲(chǔ)器的地址可從0000H到FFFFH。
8051片內(nèi)有4KB的程序存儲(chǔ)單元,其地址為0000H~0FFFH。單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,如果程序不是從0000H單元開始,則應(yīng)在這三個(gè)單元中存放一條無條件轉(zhuǎn)移指令,讓CPU直接去執(zhí)行用戶指定的程序。在程序存儲(chǔ)器中有些特殊的單元,其中一組特殊單元是0000H~0002H單元,另一組特殊單元是0003H~002AH。這40個(gè)單元被分為5段,定義如下:
0003H~000AH,外部中斷0中斷地址區(qū)。
000BH~0012H,定時(shí)器/計(jì)數(shù)器0中斷地址區(qū)。
0013H~001AH,外部中斷1中斷地址區(qū)。
001BH~0022H,定時(shí)器/計(jì)數(shù)器1中斷地址區(qū)。
0023H~002AH,串行中斷地址區(qū)。18程序存儲(chǔ)器ROM在單片機(jī)處理問題之前必須事19數(shù)據(jù)存儲(chǔ)器RAM
數(shù)據(jù)存儲(chǔ)器通常用隨機(jī)存取存儲(chǔ)器。MCS-51單片機(jī)的數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間,一個(gè)內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)外部數(shù)據(jù)存儲(chǔ)區(qū)。MCS-51內(nèi)部RAM是128或256個(gè)字節(jié)的數(shù)據(jù)存儲(chǔ)器,用于存放執(zhí)行的中間結(jié)果和過程數(shù)據(jù)。MCS-51的數(shù)據(jù)存儲(chǔ)器均可讀寫,部分單元還可以位尋址。8051內(nèi)部RAM共有256個(gè)單元,分為兩部分:地址為00H~7FH的存儲(chǔ)單元(共128個(gè)字節(jié))是用戶數(shù)據(jù)RAM;地址從80H~FFH的存儲(chǔ)單元(也是128個(gè)字節(jié))為特殊寄存器(SFR)單元。19數(shù)據(jù)存儲(chǔ)器RAM數(shù)據(jù)存儲(chǔ)器通常用隨機(jī)存取存20數(shù)據(jù)存儲(chǔ)器RAM00H~1FH共32個(gè)單元被均勻分為4個(gè)區(qū),每個(gè)區(qū)包含8個(gè)8位寄存器,都稱為R0~R7。通過定義程序狀態(tài)字寄存器PSW的RS0和RS1,即可從4個(gè)區(qū)選擇進(jìn)入某一工作寄存器區(qū)。
內(nèi)部RAM的20H~2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對它們的位進(jìn)行尋址。位尋址區(qū)有16個(gè)字節(jié)共128個(gè)位,位地址為00H~7FH。位地址分配如表2.2所示,CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移、傳送和邏輯等操作。MCS-51具有布爾處理功能,布爾處理的存儲(chǔ)空間就是這些位尋址區(qū)。RS1RS0選擇工作寄存器區(qū)RS1RS0選擇工作寄存器區(qū)000區(qū)(00H~07H)102區(qū)(10H~17H)011區(qū)(08H~0FH)113區(qū)(18H~1FH)20數(shù)據(jù)存儲(chǔ)器RAM00H~1FH共32個(gè)單元21特殊功能寄存器
也稱為專用寄存器,特殊功能寄存器反映了MCS-51單片機(jī)的運(yùn)行狀態(tài),很多功能也通過特殊功能寄存器來定義和控制程序的執(zhí)行,因而特殊功能寄存器實(shí)際上是8051的狀態(tài)字及控制字寄存器。特殊功能寄存器的地址范圍為80H~FFH。在MCS-51中,除程序計(jì)數(shù)器PC和四個(gè)工作寄存器區(qū)外,還有21個(gè)特殊功能寄存器,其中5個(gè)是雙字節(jié)寄存器,共占用了26個(gè)字節(jié)。主要的SFR寄存器有:與ALU相關(guān)的SFR
累加器A(Accumulator):大部分單操作數(shù)指令的操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。寄存器B:常用于乘除法指令。程序狀態(tài)字(ProgramStatusWord):是一個(gè)8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息。21特殊功能寄存器也稱為專用寄存器,特殊功能寄22特殊功能寄存器與指針相關(guān)的SFR堆棧指針SP:是一個(gè)8位寄存器,指示堆棧頂部在內(nèi)部RAM中的位置。數(shù)據(jù)指針DPTR:由兩個(gè)8位寄存器DPH和DPL組成,其中DPH為高8位,DPL為低8位。與中斷相關(guān)的SFRI/O口專用寄存器(P0、P1、P2、P3):分別是MCS51單片機(jī)的四組I/O口鎖存器。電源控制及波特率選擇寄存器PCON:用于設(shè)置電源工作方式,以及串行通信中的波特率。串行口控制寄存器SCON:用于設(shè)置串口工作模式、數(shù)據(jù)格式、發(fā)送和接收中斷標(biāo)志等。串行數(shù)據(jù)緩沖器SBUF:用于存放需發(fā)送和接收的數(shù)據(jù),它由兩個(gè)獨(dú)立的寄存器組成,一個(gè)是發(fā)送緩沖器,另一個(gè)是接收緩沖器。發(fā)送和接收操作其實(shí)都是針對串行數(shù)據(jù)緩沖器進(jìn)行。22特殊功能寄存器與指針相關(guān)的SFR23特殊功能寄存器與定時(shí)器/計(jì)數(shù)器相關(guān)的SFR定時(shí)器/計(jì)數(shù)器控制寄存器TCON:用于設(shè)置中斷請求方式、定時(shí)模式、啟動(dòng)停止等。定時(shí)器/計(jì)數(shù)器工作方式寄存器TMOD:定時(shí)器/計(jì)數(shù)器有四種工作模式,通過設(shè)置TMOD來決定工作方式。定時(shí)器/計(jì)數(shù)器TH0、TL0、TH1和TL1:MCS-51單片機(jī)中有兩個(gè)16位的定時(shí)器/計(jì)數(shù)器T0和T1,它們各自由兩個(gè)8位寄存器組成。兩個(gè)16位定時(shí)器/計(jì)數(shù)器完全獨(dú)立,可以單獨(dú)對這四個(gè)寄存器尋址,但不能把T0和T1當(dāng)作一個(gè)16位寄存器來使用。23特殊功能寄存器與定時(shí)器/計(jì)數(shù)器相關(guān)的SFR242.2.3
I/O接口MCS-51單片機(jī)設(shè)有4個(gè)8位雙向I/O端口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地用作輸入或輸出。P0口為三態(tài)雙向口,能驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載電路。P1、P2、P3口為準(zhǔn)雙向口(在用作輸入線時(shí),各口對應(yīng)的鎖存器必須先寫入“1”,故稱為準(zhǔn)雙向口),負(fù)載能力為4個(gè)LS型TTL電路。。P0端口功能(P0.0~P0.7,32~39引腳)P0口的位結(jié)構(gòu)包括1個(gè)輸出鎖存器,2個(gè)三態(tài)緩沖器,1個(gè)輸出驅(qū)動(dòng)電路和1個(gè)輸出控制端。輸出驅(qū)動(dòng)電路由一對場效應(yīng)管組成,其工作狀態(tài)受輸出端的控制,輸出控制端由1個(gè)與門、1個(gè)反相器和1個(gè)轉(zhuǎn)換開關(guān)MUX組成。242.2.3I/O接口MCS-51單片機(jī)設(shè)有4個(gè)8位雙向25P0端口功能P0口作地址/數(shù)據(jù)復(fù)用總線使用若從P0口輸出地址或數(shù)據(jù)信息,此時(shí)控制端應(yīng)為高電平,轉(zhuǎn)換開關(guān)MUX將反相器輸出端與輸出級場效應(yīng)管V2接通,同時(shí)與門開鎖,內(nèi)部總線上的地址或數(shù)據(jù)信號通過與門去驅(qū)動(dòng)V1管,又通過反相器去驅(qū)動(dòng)V2管,此時(shí)內(nèi)部總線上的地址或數(shù)據(jù)信號傳送到P0口的引腳。工作時(shí)低8位地址與數(shù)據(jù)線分時(shí)使用P0口,低8位地址由ALE信號的負(fù)跳變使它鎖存到外部地址鎖存器中,而高8位地址由P2口輸出。P0口作通用I/O端口使用對于有內(nèi)部ROM的單片機(jī),P0口也可以作通用I/O,此時(shí)控制端為低電平,轉(zhuǎn)換開關(guān)把輸出級與鎖存器的Q端接通,同時(shí)因與門輸出為低電平,輸出級V1管處于截止?fàn)顟B(tài),輸出級為漏極開路電路,在驅(qū)動(dòng)NMOS電路時(shí)應(yīng)外接上拉電阻;作輸入口用時(shí),應(yīng)先將鎖存器寫“1”,此時(shí)輸出級兩個(gè)場效應(yīng)管均截止,可作高阻抗輸入,通過三態(tài)輸入緩沖器讀取引腳信號,從而完成輸入操作。25P0端口功能P0口作地址/數(shù)據(jù)復(fù)用總線使用26P0端口功能P0口線上的“讀—修改—寫”功能圖中設(shè)置一個(gè)三態(tài)緩沖器是為了讀取鎖存器Q端的數(shù)據(jù),Q端與引腳的數(shù)據(jù)一致,以滿足“讀—修改—寫”指令的需要。這類指令的特點(diǎn)是先讀口對應(yīng)的鎖存器,隨之可能對讀入的數(shù)據(jù)進(jìn)行修改,再寫入到端口上。這類指令同樣適合于P1~P3口,其操作是先將口字節(jié)的全部8位數(shù)讀入,再通過指令修改某些位,然后將新的數(shù)據(jù)寫回到口鎖存器中。26P0端口功能P0口線上的“讀—修改—寫”功能27I/O接口P1口(P1.0~P1.7,1~8腳)準(zhǔn)雙向口P1口作通用I/O端口使用
P1口是一個(gè)有內(nèi)部上拉電阻的準(zhǔn)雙向口,位結(jié)構(gòu)如圖所示。P1口的每一條口線能獨(dú)立用作輸入線或輸出線。用作輸出時(shí),如將“0”寫入鎖存器,場效應(yīng)管導(dǎo)通,輸出線為低電平,即輸出為“0”。用作輸入時(shí),必須先將“1”寫入口鎖存器,使場效應(yīng)管截止。該口線由內(nèi)部上拉電阻提拉成高電平,同時(shí)也能被外部輸入源拉成低電平。P1口用作輸入時(shí),可被任何TTL電路和MOS電路驅(qū)動(dòng),P1口可驅(qū)動(dòng)4個(gè)LS型TTL門電路。27I/O接口P1口(P1.0~P1.7,1~8腳)準(zhǔn)雙向口28I/O接口P1口其他功能
P1口在EPROM編程和驗(yàn)證程序時(shí),輸入低8位地址;在8032/8052系列中P1.0和P1.1是多功能的,P1.0可作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)觸發(fā)輸入端T2,P1.1可作定時(shí)器/計(jì)數(shù)器2的外部控制輸入端T2EX。28I/O接口P1口其他功能29I/O接口P2口(P2.0~P2.7,21~28腳)準(zhǔn)雙向口
P2口的位結(jié)構(gòu)如圖2.11所示,口線上的內(nèi)部上拉電阻同P1口。在結(jié)構(gòu)上,P2口比P1口多一個(gè)輸出控制部分P2口作通用I/O端口使用
P2口作通用I/O端口使用時(shí)是一個(gè)準(zhǔn)雙向口,此時(shí)轉(zhuǎn)換開關(guān)MUX倒向左邊,輸出級與鎖存器接通,引腳可接I/O設(shè)備,其輸入輸出操作與P1口相同29I/O接口P2口(P2.0~P2.7,21~28腳)準(zhǔn)雙30I/O接口P2口作地址總線口使用當(dāng)系統(tǒng)中接有外部存儲(chǔ)器時(shí),P2口用于輸出高8位地址A15~A8。此時(shí)在CPU的控制下,轉(zhuǎn)換開關(guān)MUX倒向右邊,接通內(nèi)部地址總線。P2口的口線狀態(tài)取決于片內(nèi)輸出的地址信息,這些地址信息來源于PCH、DPH等。在外接程序存儲(chǔ)器時(shí),由于訪問外部存儲(chǔ)器的操作連續(xù)不斷,P2口不斷送出地址高8位。因此,在8031構(gòu)成的系統(tǒng)中,P2口一般只作地址總線口使用,不再作I/O端口直接連外部設(shè)備。30I/O接口P2口作地址總線口使用31I/O接口P3口(P3.0~P3.7,10~17腳)雙功能口
P3口是一個(gè)多用途的端口,也是一個(gè)準(zhǔn)雙向口。作為第一功能使用時(shí),其功能同P1口,P3口的位結(jié)構(gòu)如圖所示。31I/O接口P3口(P3.0~P3.7,10~17腳)雙功32I/O接口P3口的第二功能實(shí)際上就是系統(tǒng)具有控制功能的控制線。此時(shí)相應(yīng)的口線鎖存器必須為“1”狀態(tài),與非門的輸出由第二功能輸出線的狀態(tài)確定,從而P3口線的狀態(tài)取決于第二功能輸出線的電平。在P3口的引腳信號輸入通道中有兩個(gè)三態(tài)緩沖器,第二功能的輸入信號取自第一個(gè)緩沖器的輸出端,第二個(gè)緩沖器仍是第一功能的讀引腳信號緩沖器。P3口可驅(qū)動(dòng)4個(gè)LS型TTL門電路。端口功能
第二功能
引腳名
引腳功能P3.0RXD串行輸入(數(shù)據(jù)接收)口P3.1TXD串行輸出(數(shù)據(jù)發(fā)送)口P3.2INT0外部中斷0,輸入P3.3INT1外部中斷1,輸入P3.4T0定時(shí)器0,外部輸入P3.5T1定時(shí)器1,外部輸入P3.6WR外部數(shù)據(jù)存儲(chǔ)器寫選通信號,輸出P3.7RD外部數(shù)據(jù)存儲(chǔ)器讀選通信號,輸出32I/O接口P3口的第二功能實(shí)際上就是系統(tǒng)具有控制功能的控332.2.4
內(nèi)部資源串行端口
8051有一個(gè)全雙工的可編程串行I/O端口。這個(gè)串行I/O端口既可以在程序控制下將CPU的8位并行數(shù)據(jù)變成串行數(shù)據(jù)一位一位地從發(fā)送數(shù)據(jù)線TXD發(fā)送出去,也可以把從接收數(shù)據(jù)線RXD串行接收到的數(shù)據(jù)變成8位并行數(shù)據(jù)送給CPU。串行端口的這種串行發(fā)送和串行接收操作可以單獨(dú)進(jìn)行,也可以同時(shí)進(jìn)行。
8051串行發(fā)送和串行接收利用了P3口的第二功能,即利用P3.1引腳作為串行數(shù)據(jù)的發(fā)送線TXD,利用P3.0引腳作為串行數(shù)據(jù)的接收線RXD。串行I/O口的電路結(jié)構(gòu)還包括串行口控制器SCON、電源及波特率選擇寄存器PCON和串行數(shù)據(jù)緩沖器SBUF等,都屬于特殊功能寄存器SFR。其中,PCON和SCON用于設(shè)置串行口工作方式,確定數(shù)據(jù)的發(fā)送和接收波特率;SBUF實(shí)際上由兩個(gè)8位寄存器組成,一個(gè)用于存放將要發(fā)送的數(shù)據(jù),另一個(gè)用于存放剛接收到的數(shù)據(jù),起著數(shù)據(jù)緩沖作用。332.2.4內(nèi)部資源串行端口342.2.4
內(nèi)部資源中斷系統(tǒng)中斷的概念中斷是通過硬件來改變CPU的運(yùn)行方向。計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)CPU以外的某種情況,由服務(wù)對象向CPU發(fā)出中斷請求信號,要求CPU暫時(shí)中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來被中斷的程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。
“中斷”之后所執(zhí)行的相應(yīng)的處理程序通常稱為中斷服務(wù)或中斷處理子程序,原來正常運(yùn)行的程序稱為主程序。主程序被斷開的位置(或地址)稱為“斷點(diǎn)”。引起中斷的原因,或能發(fā)出中斷申請的來源,稱為“中斷源”。中斷源要求服務(wù)的請求稱為“中斷請求”(或中斷申請)。調(diào)用中斷服務(wù)程序的過程類似于調(diào)用子程序,其區(qū)別在于調(diào)用子程序是在程序中事先安排好的;而何時(shí)調(diào)用中斷服務(wù)程序事先無法確定,因?yàn)椤爸袛唷钡陌l(fā)生是由外部因素決定的,在程序中無法事先安排調(diào)用指令,因此,調(diào)用中斷服務(wù)程序的過程是由硬件自動(dòng)完成的。342.2.4內(nèi)部資源中斷系統(tǒng)352.2.4
內(nèi)部資源MCS-51中斷系統(tǒng)的結(jié)構(gòu)框圖中斷過程是在硬件基礎(chǔ)上再配以相應(yīng)的軟件而實(shí)現(xiàn)的,不同的計(jì)算機(jī)其硬件結(jié)構(gòu)和軟件指令不完全相同,因此,中斷系統(tǒng)也不相同。
MCS-51中斷系統(tǒng)的結(jié)構(gòu)框圖如圖所示。352.2.4內(nèi)部資源362.2.4
內(nèi)部資源中斷處理過程362.2.4內(nèi)部資源37中斷處理過程①中斷請求中斷源以某種方式(電平、脈沖或狀態(tài))產(chǎn)生向CPU的請求。②中斷確認(rèn)中斷請求的確認(rèn)必須滿足一些條件,其中最主要的條件是當(dāng)前指令執(zhí)行結(jié)束,且CPU允許中斷。③斷點(diǎn)保護(hù)在中斷響應(yīng)過程及中斷服務(wù)程序中對斷點(diǎn)進(jìn)行保護(hù),以便在中斷處理結(jié)束時(shí)能返回被中斷的程序并接著中斷前的狀態(tài)繼續(xù)執(zhí)行。CPU會(huì)由硬件自動(dòng)保護(hù)某些寄存器,不同的CPU保護(hù)的寄存器不一樣在中斷服務(wù)程序中還需要程序保護(hù)其他寄存器。④中斷源識別如果多個(gè)中斷源同時(shí)向CPU申請中斷,必須判斷是哪個(gè)中斷源提出的請求,以便有針對地提供服務(wù)。目前中斷源識別多采用矢量法,即為每個(gè)中斷源規(guī)定其中斷服務(wù)程序的入口(起始)地址,即中斷源的中斷矢量。⑤中斷服務(wù)中斷服務(wù)是通過CPU執(zhí)行中斷服務(wù)程序?qū)崿F(xiàn)的,不同的中斷源的服務(wù)程序不同。中斷服務(wù)程序應(yīng)包括斷點(diǎn)保護(hù)以及針對中斷源的控制管理等程序。⑥斷點(diǎn)恢復(fù)執(zhí)行RETI指令恢復(fù)PC值,使CPU返回?cái)帱c(diǎn)。⑦中斷返回中斷服務(wù)程序的最后一條指令必須是中斷返回指令RETI,其功能是將中斷響應(yīng)時(shí)由CPU硬件自動(dòng)保護(hù)的寄存器從堆?;謴?fù)到原寄存器中。37中斷處理過程①中斷請求382.2.4
內(nèi)部資源中斷優(yōu)先級控制通常系統(tǒng)中有多個(gè)中斷源,當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷請求時(shí),CPU應(yīng)能確定哪個(gè)中斷更緊迫并首先響應(yīng)。為此給每個(gè)中斷源規(guī)定了優(yōu)先級別,稱為優(yōu)先權(quán)。當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷請求時(shí),優(yōu)先權(quán)高的中斷能先被響應(yīng),只有優(yōu)先權(quán)高的中斷處理結(jié)束后才能響應(yīng)優(yōu)先權(quán)低的中斷。按中斷源優(yōu)先權(quán)高低逐次響應(yīng)的過程稱優(yōu)先權(quán)排隊(duì),這個(gè)過程可通過硬件電路實(shí)現(xiàn),也可通過軟件查詢實(shí)現(xiàn)。382.2.4內(nèi)部資源392.2.4
內(nèi)部資源中斷嵌套
當(dāng)CPU響應(yīng)某一中斷時(shí),若有優(yōu)先權(quán)更高的中斷源發(fā)出中斷請求,則CPU中斷正在進(jìn)行的中斷服務(wù)程序,并保留這個(gè)程序的斷點(diǎn)(類似于子程序嵌套),響應(yīng)高級中斷。高級中斷處理結(jié)束后,再繼續(xù)進(jìn)行被中斷的中斷服務(wù)程序,這個(gè)過程稱為中斷嵌套,如右圖所示。如果新發(fā)出中斷請求的中斷源的優(yōu)先權(quán)級別與正在處理的中斷源同級或更低時(shí),CPU不會(huì)響應(yīng)這個(gè)中斷請求,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才能響應(yīng)新的中斷請求。392.2.4內(nèi)部資源當(dāng)CPU響應(yīng)某一中斷時(shí)402.2.4
內(nèi)部資源中斷源
MCS-51的5個(gè)中斷源如下:INT0:外部中斷0,由P3.2腳輸入。通過TCON寄存器的IT0位來決定是低電平有效還是下跳邊有效。一旦輸入信號有效,則向CPU申請中斷,并建立IE0標(biāo)志。INT1:外部中斷1,由P3.3腳輸入。通過IT1位(TCON.2)來決定是低電平有效還是下跳邊有效。一旦輸入信號有效,則向CPU申請中斷,并建立IE1標(biāo)志。T0:定時(shí)器T0溢出中斷。當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),定時(shí)器T0中斷請求標(biāo)志位TF0(TCON.5)置位(由硬件自動(dòng)執(zhí)行),請求中斷。T1:定時(shí)器T1溢出中斷。當(dāng)定時(shí)器T1產(chǎn)生溢出時(shí),定時(shí)器T1中斷請求標(biāo)志位TF1(TCON.7)置位(由硬件自動(dòng)執(zhí)行),請求中斷。RI或TI:串行中斷。當(dāng)接收或發(fā)送完一串行幀時(shí),內(nèi)部串行口中斷請求標(biāo)志位RI(SCON.0)或TI(SCON.1)置位(由硬件自動(dòng)執(zhí)行),請求中斷。402.2.4內(nèi)部資源412.2.4
內(nèi)部資源中斷標(biāo)志
①TCON寄存器的中斷標(biāo)志
TCON是定時(shí)器T0和T1的控制寄存器,同時(shí)也鎖存T0和T1的溢出中斷請求標(biāo)志及外部中斷INT0和INT1的中斷標(biāo)志等,TCON的各位如圖所示。
D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0412.2.4內(nèi)部資源TF1TR1TF0TR0IE1IT142中斷標(biāo)志與中斷有關(guān)的位如下:
TCON.7:TF1,T1的溢出中斷標(biāo)志。T1啟動(dòng)計(jì)數(shù)后,從初值開始加1計(jì)數(shù),計(jì)滿溢出后由硬件置位TF1,同時(shí)向CPU發(fā)出中斷請求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清0。也可由軟件查詢該標(biāo)志,并由軟件清0。TCON.5:TF0,T0溢出中斷標(biāo)志。其操作功能與TF1相同。TCON.3:IE1,INT1中斷標(biāo)志。IE1=1,外部中斷1向CPU申請中斷。TCON.2:IT1,INT1中斷觸發(fā)方式控制位。IT1=0,外部中斷1控制為電平觸發(fā)方式。在這種方式下,CPU在每個(gè)機(jī)器周期的S5P2期間對INT1(P3.3)引腳采樣,若為低電平,則認(rèn)為有中斷申請,隨即使IE1標(biāo)志置位;若為高電平,則認(rèn)為無中斷申請,或中斷申請已撤除,隨即使IE1標(biāo)志復(fù)位。在電平觸發(fā)方式中,CPU響應(yīng)中斷后不能由硬件自動(dòng)清除IE1標(biāo)志,也不能由軟件清除IE1標(biāo)志,所以,在中斷返回之前必須撤銷INT1引腳上的低電平,否則將再次中斷導(dǎo)致出錯(cuò)。TCON.1:IE0,INT0中斷標(biāo)志。功能與IE1相同。TCON.0:IT0,INT0中斷觸發(fā)方式控制位。功能與IT1相同。42中斷標(biāo)志與中斷有關(guān)的位如下:43中斷標(biāo)志②SCON寄存器的中斷標(biāo)志
SCON是串行口控制寄存器,各位如下圖所示。其中,低2位TI和RI鎖存串行口的接收中斷標(biāo)志和發(fā)送中斷標(biāo)志。
D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISCON.1:TI,串行發(fā)送中斷標(biāo)志。CPU將數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送,每發(fā)送完一個(gè)串行幀,硬件將使TI置位。但CPU響應(yīng)中斷時(shí)并不清除TI,必須由軟件清除。SCON.0:RI,串行接收中斷標(biāo)志。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件將使RI置位。同樣,CPU在響應(yīng)中斷時(shí)不會(huì)清除RI,必須由軟件清除。
8051系統(tǒng)復(fù)位后,TCON和SCON均清0,應(yīng)用時(shí)要注意各位的初始狀態(tài)。43中斷標(biāo)志②SCON寄存器的中斷標(biāo)志SM0SM1SM2RE44中斷標(biāo)志③IE寄存器中斷的開放和禁止標(biāo)志中斷系統(tǒng)有兩種不同類型的中斷:
非屏蔽中斷
可屏蔽中斷
對非屏蔽中斷,用戶不能用軟件方法加以禁止,一旦有中斷申請,CPU必須予以響應(yīng)。對可屏蔽中斷,用戶則可以通過軟件方法來控制是否允許某中斷源的中斷,允許中斷稱為中斷開放,不允許中斷稱為中斷屏蔽。
MCS-51系列單片機(jī)的5個(gè)中斷源都是可屏蔽中斷,其中斷系統(tǒng)內(nèi)部設(shè)有一個(gè)中斷允許寄存器IE,用于控制CPU對各中斷源的開放或屏蔽,如下圖所示。
D7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX044中斷標(biāo)志③IE寄存器中斷的開放和禁止標(biāo)志EA--45中斷標(biāo)志IE寄存器各位定義如下:
IE.7:EA,中斷允許控制位。EA=1,開放所有中斷,各中斷源的允許和禁止可通過各自的中斷允許位單獨(dú)加以控制;EA=0,禁止所有中斷。IE.4:ES,串行口中斷允許位。ES=1,允許串行口中斷;ES=0禁止串行口中斷。IE.3:ET1,定時(shí)器T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。IE.2:EX1,外部中斷1(INT1)中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。IE.1:ET0,定時(shí)器T0中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。IE.0:
EX0,外部中斷0(INT0)中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。
8051單片機(jī)系統(tǒng)復(fù)位后,IE寄存器中各中斷允許位均清0,即禁止所有中斷。45中斷標(biāo)志IE寄存器各位定義如下:46中斷標(biāo)志④IP寄存器中斷優(yōu)先級標(biāo)志
8051單片機(jī)有兩個(gè)中斷優(yōu)先級,每個(gè)中斷源都可以通過編程確定為高優(yōu)先級中斷或低優(yōu)先級中斷,因此,可實(shí)現(xiàn)二級嵌套。同一優(yōu)先級別的中斷源可能不止一個(gè),也存在中斷優(yōu)先權(quán)排隊(duì)的問題。
MCS-51系列單片機(jī)設(shè)置中斷優(yōu)先級寄存器IP,控制各中斷源的優(yōu)先級,如下圖所示。IP寄存器的每一位由軟件置1或清0,1表示高優(yōu)先級,0表示低優(yōu)先級。
D7D6D5D4D3D2D1D0
---PSPT1PX1PT0PX046中斷標(biāo)志④IP寄存器中斷優(yōu)先級標(biāo)志---PS47中斷標(biāo)志IP寄存器各位定義如下:
IP.4:PS,串行口中斷優(yōu)先級控制位。PS=1,設(shè)定串行口為高優(yōu)先級中斷;PS=0,設(shè)定串行口為低優(yōu)先級中斷。IP.3:PT1,定時(shí)器T1中斷優(yōu)先級控制位。PT1=1,設(shè)定定時(shí)器T1為高優(yōu)先級中斷;PT1=0,設(shè)定定時(shí)器T1為低優(yōu)先級中斷。IP.2:PX1,外部中斷1中斷優(yōu)先級控制位。PX1=1,設(shè)定外部中斷1為高優(yōu)先級中斷;PX1=0,設(shè)定外部中斷1為低優(yōu)先級中斷。IP.1:PT0,定時(shí)器T0中斷優(yōu)先級控制位。PT0=1,設(shè)定定時(shí)器T0為高優(yōu)先級中斷;PT0=0,設(shè)定定時(shí)器T0為低優(yōu)先級中斷。IP.0:PX0,外部中斷0中斷優(yōu)先級控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級中斷;PX0=0,設(shè)定外部中斷0為低優(yōu)先級中斷。
當(dāng)系統(tǒng)復(fù)位后,IP寄存器低5位全部清0,所有中斷源均設(shè)定為低優(yōu)先級中斷。47中斷標(biāo)志IP寄存器各位定義如下:48中斷標(biāo)志
如果同一優(yōu)先級的幾個(gè)中斷源同時(shí)向CPU申請中斷,CPU通過內(nèi)部硬件查詢邏輯,按自然優(yōu)先級順序確定先響應(yīng)哪個(gè)中斷請求。自然優(yōu)先級由硬件形成,從高到低排列如下表所示。
中斷源
同級內(nèi)部優(yōu)先級順序
外部中斷0
最高級最低級
定時(shí)器T0中斷
外部中斷1
定時(shí)器T1中斷
串行口中斷48中斷標(biāo)志如果同一優(yōu)先級的幾個(gè)中斷源492.2.4
內(nèi)部資源中斷響應(yīng)時(shí)間
中斷響應(yīng)時(shí)間是指從中斷請求標(biāo)志置位到CPU開始執(zhí)行中斷服務(wù)程序的第一條指令所持續(xù)的時(shí)間。CPU并非每時(shí)每刻對中斷請求都予以響應(yīng),不同的中斷請求其響應(yīng)時(shí)間不同,不同情況下CPU響應(yīng)中斷的時(shí)間也是不同的,因此,中斷響應(yīng)時(shí)間形成的過程較為復(fù)雜。
以外部中斷為例,CPU在每個(gè)機(jī)器周期的S5P2期間采樣其輸入引腳INT0或INT1的電平,如果中斷請求有效,則置位中斷請求標(biāo)志IE0或IE1,然后在下一個(gè)機(jī)器周期再對這些值進(jìn)行查詢,這就意味著中斷請求信號的低電平至少應(yīng)維持一個(gè)機(jī)器周期。此時(shí)如果滿足中斷響應(yīng)條件,則CPU響應(yīng)中斷請求,在下一個(gè)機(jī)器周期執(zhí)行一條硬件長調(diào)用指令LCALL,使程序轉(zhuǎn)入中斷矢量入口。LCALL指令執(zhí)行時(shí)間是兩個(gè)機(jī)器周期,因此,外部中斷響應(yīng)時(shí)間至少需要3個(gè)機(jī)器周期,這是最短的中斷響應(yīng)時(shí)間。如果中斷請求不能滿足前面所述的三個(gè)條件而被阻斷,則中斷響應(yīng)時(shí)間將延長。492.2.4內(nèi)部資源502.2.4
內(nèi)部資源定時(shí)器/計(jì)數(shù)器
MCS-51單片機(jī)內(nèi)部有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,即定時(shí)器T0和定時(shí)器T1(8052提供第三個(gè)定時(shí)器T2)。它們既可用作定時(shí)器方式,又可用作計(jì)數(shù)器方式。
定時(shí)器/計(jì)數(shù)器的控制字定時(shí)器/計(jì)數(shù)器的基本部件是兩個(gè)8位的計(jì)數(shù)器(其中TH1、TL1是T1的計(jì)數(shù)器,TH0、TL0是T0的計(jì)數(shù)器)拼裝而成。作定時(shí)器使用時(shí),輸入的時(shí)鐘脈沖由晶體振蕩器的輸出經(jīng)12分頻后得到,所以定時(shí)器也可看作是對CPU機(jī)器周期的計(jì)數(shù)器,其頻率為晶振頻率的1/12。如果晶振頻率為12MHz,則定時(shí)器每接收一個(gè)輸入脈沖的時(shí)間為1μs。當(dāng)用作對外部事件計(jì)數(shù)時(shí),需外接CPU的外部輸入引腳T0(P3.4)或T1(P3.5)。在這種情況下,當(dāng)檢測到輸入引腳上的電平由高跳變到低時(shí),計(jì)數(shù)器就加1502.2.4內(nèi)部資源定時(shí)器/計(jì)數(shù)器51定時(shí)器/計(jì)數(shù)器
定時(shí)器/計(jì)數(shù)器有四種工作方式,其工作方式的選擇及控制都由兩個(gè)特殊功能寄存器(TMOD和TCON)的內(nèi)容來決定。用指令改變TMOD或TCON的內(nèi)容后,則在下一條指令的第一個(gè)機(jī)器周期的S1P1期間起作用。
①定時(shí)器的工作方式寄存器TMOD
TMOD為定時(shí)器的工作方式寄存器,每位的定義如圖所示。高4位用于定時(shí)器1,低4位用于定時(shí)器0,其中M1、M0用于確定所選的工作方式。51定時(shí)器/計(jì)數(shù)器定時(shí)器/計(jì)數(shù)器有四種工作方式52定時(shí)器/計(jì)數(shù)器
M1、M0:4種工作方式選擇,4種編碼對應(yīng)的工作方式如下表。
M1M0方式
說明00013位定時(shí)器/計(jì)數(shù)器,TH的高8位和TL的低5位01116位定時(shí)器/計(jì)數(shù)器102自動(dòng)裝入時(shí)間常數(shù)的8位定時(shí)器/計(jì)數(shù)器113T0分為兩個(gè)8位獨(dú)立計(jì)數(shù)器;對T1置方式3時(shí),停止工作(無中斷重裝8位計(jì)數(shù)器)C/T:定時(shí)器方式或計(jì)數(shù)器方式選擇位。C/T=1為計(jì)數(shù)器方式;C/T=0為定時(shí)器方式。GATE:門控位,用于確定外部中斷請求引腳(INT0,INT1)是否參與T0或T1的操作控制。當(dāng)GATE=0時(shí),只要工作方式寄存器TCON中的TR0(或TR1)置1,允許T0(或T1)開始計(jì)數(shù);當(dāng)GATE=1時(shí),不僅要TCON中的TR0或TR1置位,還需要P3口的INT0或INT1引腳為高電平,才允許T0(或T1)計(jì)數(shù)。
TMOD寄存器在復(fù)位時(shí)每一位均清0。52定時(shí)器/計(jì)數(shù)器M1、M0:4種工作方式選擇,4種53定時(shí)器/計(jì)數(shù)器②定時(shí)器控制寄存器TCON
TCON用于控制定時(shí)器的操作以及對定時(shí)器中斷進(jìn)行控制,如下圖所示。其中,TR0和TR1的定義如下:TR0:T0的運(yùn)行控制位,置1或清0用于實(shí)現(xiàn)啟動(dòng)計(jì)數(shù)或停止計(jì)數(shù)。TR1:T1的運(yùn)行控制位,置1或清0用于實(shí)現(xiàn)啟動(dòng)計(jì)數(shù)或停止計(jì)數(shù)。
D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT053定時(shí)器/計(jì)數(shù)器②定時(shí)器控制寄存器TCONTF1TR1T54定時(shí)器/計(jì)數(shù)器
定時(shí)器/計(jì)數(shù)器工作方式
MCS-51的定時(shí)器/計(jì)數(shù)器可以通過對TMOD的控制位C/T進(jìn)行設(shè)置來選擇定時(shí)器方式或計(jì)數(shù)器方式。對M1M0兩位進(jìn)行設(shè)置可以選擇4種工作方式。①方式0
M1M0設(shè)置為00時(shí),定時(shí)器設(shè)定為工作方式0,此時(shí)16位寄存器只用了13位,由TH0的8位和TL0的低5位組成一個(gè)13位計(jì)數(shù)器。當(dāng)GATE=0時(shí),只要TCON中的TR0為1,TL0及TH0組成的13位計(jì)數(shù)器就開始計(jì)數(shù);當(dāng)GATE=1時(shí),此時(shí)僅TR0=1仍不能使計(jì)數(shù)器計(jì)數(shù),還需要INT0引腳為1才能使計(jì)數(shù)器工作。由此可知,當(dāng)GATE=1和TR0=1時(shí),計(jì)數(shù)器是否計(jì)數(shù)取決于INT0引腳的信號,當(dāng)INT0由0變1時(shí),開始計(jì)數(shù);當(dāng)INT0由1變0時(shí),停止計(jì)數(shù),因此可用來測量在INT0端出現(xiàn)的脈沖寬度。當(dāng)13位計(jì)數(shù)器從設(shè)定的初值加1到全“1”后,再加1就產(chǎn)生溢出。此時(shí)置TCON的TF0位為1,同時(shí)計(jì)數(shù)器變?yōu)槿?”。54定時(shí)器/計(jì)數(shù)器55定時(shí)器/計(jì)數(shù)器②
方式1
方式1和方式0的工作相同,區(qū)別在于TH0和TL0組成一個(gè)16位計(jì)數(shù)器。③方式2
方式2把TL0配置成一個(gè)可以自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,TH0作為常數(shù)緩沖器,由軟件預(yù)置的初值保存在TH0中。當(dāng)TL0產(chǎn)生溢出時(shí)使溢出標(biāo)志TF0置1,同時(shí)將TH0的8位數(shù)據(jù)重新裝入TL0中。
方式2常用于定時(shí)控制。例如,如果要求每隔250μs產(chǎn)生一個(gè)定時(shí)控制脈沖,則可以采用12MHz的振蕩器,TH0預(yù)置為6,并使C/T=0即可實(shí)現(xiàn)。方式2不用作串行口波特率發(fā)生器。④方式3
方式3對定時(shí)器T0和定時(shí)器T1很不相同。若T1設(shè)置為方式3,則立即停止工作,保持原有的計(jì)數(shù)值。所以方式3只適用于T0。
當(dāng)T0設(shè)置為方式3時(shí),此時(shí)TL0和TH0是兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器,TL0利用了T0本身的一些控制(C/T、GATE、TR0、INT0和TF0)方式,其操作與方式0和方式1類似。而TH0用作定時(shí)器功能,對機(jī)器周期計(jì)數(shù),并借用了T1的控制位TR1和TF1。在這種情況下TH0控制了T1的中斷。此時(shí)T1還可以設(shè)置為方式0、1或2,用于不需要中斷控制的場合,或用作串行口的波特率發(fā)生器。
通常,只有在T1用作串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式3,以增加一個(gè)8位計(jì)數(shù)器。55定時(shí)器/計(jì)數(shù)器56定時(shí)器/計(jì)數(shù)器
定時(shí)器/計(jì)數(shù)器的初始化
①初始化步驟
MCS-51內(nèi)部定時(shí)器/計(jì)數(shù)器是可編程序的,其工作方式和工作過程均可由MCS-51通過程序進(jìn)行設(shè)定和控制。因此,MCS-51在定時(shí)器/計(jì)數(shù)器工作前必須先對它進(jìn)行初始化。初始化步驟為:
首先給定時(shí)器的工作方式寄存器TMOD送一個(gè)方式控制字,設(shè)定定時(shí)器/計(jì)數(shù)器的相應(yīng)工作方式。
給定時(shí)器/計(jì)數(shù)器送定時(shí)器初值或計(jì)數(shù)器初值,確定需要定時(shí)的時(shí)間和需要計(jì)數(shù)的初值。
給中斷允許寄存器IE送中斷控制字,給中斷優(yōu)先級寄存器IP送中斷優(yōu)先級字,開放相應(yīng)中斷和設(shè)定中斷優(yōu)先級。
給定時(shí)器控制寄存器TCON送命令字,啟動(dòng)或停止定時(shí)器/計(jì)數(shù)器的運(yùn)行。56定時(shí)器/計(jì)數(shù)器首先給定時(shí)器的工作方式寄存器TMOD送57定時(shí)器/計(jì)數(shù)器
②計(jì)數(shù)器初值的計(jì)算定時(shí)器/計(jì)數(shù)器可用軟件隨時(shí)啟動(dòng)和關(guān)閉,啟動(dòng)后自動(dòng)加“1”計(jì)數(shù)直到計(jì)滿,即全為“1”。若不停止計(jì)數(shù),計(jì)數(shù)值從全“1”變?yōu)槿?”,同時(shí)將計(jì)數(shù)溢出位置“1”并向CPU發(fā)出定時(shí)器溢出中斷申請。對于各種不同的工作方式最大的定時(shí)時(shí)間和計(jì)數(shù)數(shù)不同。把計(jì)數(shù)器從初值開始作加1操作,到計(jì)滿為全1所需要的計(jì)數(shù)加1次數(shù)設(shè)為C,計(jì)數(shù)初值設(shè)為D,由此可得到如下的計(jì)算式:
D=M-C
式中,M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213,在方式1時(shí)M為216,在方式2和方式3時(shí)M為28。57定時(shí)器/計(jì)數(shù)器②計(jì)數(shù)器初值的計(jì)算58定時(shí)器/計(jì)數(shù)器
③定時(shí)器初值的計(jì)算在定時(shí)器方式下,計(jì)數(shù)器由晶振脈沖經(jīng)12分頻后計(jì)數(shù)。因此,定時(shí)器定時(shí)時(shí)間T的計(jì)算公式為:
T=(TM-TC)×12/fOSC(μs)
式中,TM為計(jì)數(shù)器從初值開始作加1計(jì)數(shù)到計(jì)滿為全1所需要的時(shí)間,TM為模值,和定時(shí)器的工作方式有關(guān);fOSC為晶振的頻率,TC為定時(shí)器的初值。若設(shè)TC=0,則定時(shí)器定時(shí)時(shí)間為最大(初值為0,計(jì)數(shù)從全0到全1,溢出后又為全0)。由于M的值和定時(shí)器工作方式有關(guān),因此不同工作方式下定時(shí)器的最大定時(shí)時(shí)間也不一樣。例如,若設(shè)單片機(jī)晶振脈沖頻率fOSC為12MHz,則最大定時(shí)時(shí)間為:方式0時(shí),TMmax=213×1μs=8.192ms。方式1時(shí),TMmax=216×1μs=65.536ms。方式2和方式3時(shí),TMmax=28×1μs=0.256ms。58定時(shí)器/計(jì)數(shù)器③定時(shí)器初值的計(jì)算592.3.1MCS-51的基本時(shí)序
時(shí)序是系統(tǒng)總線上的地址信息、數(shù)據(jù)信息和控制信息三者在時(shí)間上的互相配合和相互制約的關(guān)系。它表明了指令執(zhí)行中各種微操作信號在時(shí)間上的順序關(guān)系。1.時(shí)序的基本單位
8051單片機(jī)以晶體振蕩器的振蕩周期(或外部引入的時(shí)鐘信號的周期)為最小的時(shí)序單位,片內(nèi)的各種微操作都是以晶振周期為時(shí)序基準(zhǔn)。下圖為8051單片機(jī)的時(shí)鐘信號。592.3.1MCS-51的基本時(shí)序時(shí)序是608051單片機(jī)的基本定時(shí)單位共有4個(gè),它們從小到大分別是:
晶振周期:由振蕩電路產(chǎn)生的振蕩脈沖的周期,又稱節(jié)拍(如P1、P2)。
時(shí)鐘周期:是晶振周期的兩倍,也即一個(gè)時(shí)鐘周期包含兩個(gè)相互錯(cuò)開的節(jié)拍,也稱S狀態(tài)周期。
機(jī)器周期:8051單片機(jī)有固定的機(jī)器周期,由晶振頻率12分頻后形成的,即1個(gè)機(jī)器周期是晶振周期的12倍寬。單片機(jī)的基本操作周期為機(jī)器周期,每個(gè)機(jī)器周期包含6個(gè)狀態(tài),每個(gè)狀態(tài)由兩個(gè)節(jié)拍脈沖(晶振周期)組成。若單片機(jī)采用12MHz的晶體振蕩器,則一個(gè)機(jī)器周期為1μs;若采用6MHz的晶體振蕩器,則一個(gè)機(jī)器周期為2μs。
指令周期:CPU執(zhí)行一條指令所需要的時(shí)間。不同指令的執(zhí)行時(shí)間各不相同,如果用占用機(jī)器周期多少來衡量的話,8051單片機(jī)的指令可分為單周期指令、雙周期指令及四周期指令三種。2.3.1MCS-51的基本時(shí)序608051單片機(jī)的基本定時(shí)單位共有4個(gè),它們從小到大分別是612.3.1MCS-51的基本時(shí)序2.基本時(shí)序
通常,8051系統(tǒng)的基本時(shí)序關(guān)系是:
1個(gè)時(shí)鐘周期=2個(gè)晶振周期
1個(gè)機(jī)器周期=6個(gè)時(shí)鐘周期=12個(gè)晶振周期
1個(gè)指令周期=1/2/4個(gè)機(jī)器周期其基本時(shí)序如下圖所示。612.3.1MCS-51的基本時(shí)序2.基本時(shí)序622.3.1MCS-51的基本時(shí)序8051單片機(jī)指令的時(shí)序如圖2.6所示。(1)單字節(jié)單周期指令在S1時(shí)鐘周期取指令,在S4時(shí)鐘周期空取操作,在S6時(shí)鐘周期結(jié)束操作。(2)雙字節(jié)單周期指令在S1時(shí)鐘周期取指令操作碼字節(jié),在S4時(shí)鐘周期取指令第二字節(jié),在S6時(shí)鐘周期結(jié)束操作。(3)單字節(jié)雙周期指令在S1時(shí)鐘周期取指令,在第一個(gè)機(jī)器周期的S4時(shí)鐘周期和第二個(gè)機(jī)器周期的S1時(shí)鐘周期和S4時(shí)鐘周期都是空取操作,在第二個(gè)機(jī)器周期的S6時(shí)鐘周期結(jié)束操作。622.3.1MCS-51的基本時(shí)序8051單片機(jī)指令的時(shí)632.3.2MCS-51的工作方式
MCS-51系列單片機(jī)的工作方式有復(fù)位方式、程序執(zhí)行方式、節(jié)電工作方式以及EPROM編程和校驗(yàn)方式,不同的工作方式代表單片機(jī)處于不同的狀態(tài)。單片機(jī)工作方式的多少,是衡量單片機(jī)性能的一項(xiàng)重要指標(biāo)。1.復(fù)位方式
復(fù)位是單片機(jī)啟動(dòng)運(yùn)行進(jìn)入工作狀態(tài)的初始化操作,使CPU及其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。另外,當(dāng)程序運(yùn)行錯(cuò)誤或由于錯(cuò)誤操作而使單片機(jī)出現(xiàn)死機(jī)時(shí),也可以通過復(fù)位進(jìn)行重新啟動(dòng)。632.3.2MCS-51的工作方式MCS-64復(fù)位方式復(fù)位后,單片機(jī)內(nèi)部寄存器的值見表2.7。寄存器名
內(nèi)容寄存器名
內(nèi)容PC0000HTH000HACC00HTL000HB00HTH100H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)業(yè)扶持政策對社會(huì)創(chuàng)業(yè)生態(tài)的影響研究試題及答案
- 中國門店商場管理系統(tǒng)行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告2025-2028版
- 中國金融行業(yè)發(fā)展分析及投資風(fēng)險(xiǎn)預(yù)警與發(fā)展策略研究報(bào)告2025-2028版
- 2025年樂理考試知識點(diǎn)深度分析試題及答案
- 農(nóng)業(yè)電商與消費(fèi)者行為研究試題及答案
- 2025年大學(xué)化學(xué)實(shí)踐探討試題及答案
- 化學(xué)試題及答案200題
- 2025年大學(xué)物理試題制定試題及答案
- 2025年家具設(shè)計(jì)的用戶參與考題試題及答案
- 2024年合江縣衛(wèi)生醫(yī)療機(jī)構(gòu)招聘真題
- 2025年導(dǎo)游從業(yè)資格通關(guān)秘籍
- 中國法院知識產(chǎn)權(quán)司法保護(hù)狀況2024
- 啤酒采購合同協(xié)議書模板
- 外賣配送員工作流程總結(jié)
- 新式茶飲產(chǎn)業(yè)的技術(shù)發(fā)展現(xiàn)狀與未來創(chuàng)新趨勢
- 【國浩律師事務(wù)所】2025中國企業(yè)出海戰(zhàn)略與法律支持需求調(diào)研報(bào)告
- 中醫(yī)把脈入門培訓(xùn)課件
- 高血糖癥的急救與護(hù)理
- 當(dāng)代中國外交(外交學(xué)院)知到智慧樹章節(jié)測試課后答案2024年秋外交學(xué)院
- 義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2024年版)
- 三年級下冊面積單位換算練習(xí)100道及答案
評論
0/150
提交評論