




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章80C51的結(jié)構(gòu)和原理2.180C51單片機(jī)的內(nèi)部結(jié)構(gòu)與引腳功能
2.280C51單片機(jī)的CPU2.380C51單片機(jī)的存儲器2.480C51單片機(jī)的并行口2.580C51單片機(jī)的最小系統(tǒng)第2章80C51的結(jié)構(gòu)和原理任務(wù)2-1用Keil軟件將51單片機(jī)控制蜂鳴器程序編譯成hex文件任務(wù)2-2用Proteus軟件繪制51單片機(jī)控制蜂鳴器電路圖任務(wù)2-3用單片機(jī)控制一只發(fā)光二極管閃爍本章小結(jié)習(xí)題
2.180C51單片機(jī)的內(nèi)部結(jié)構(gòu)與引腳功能
2.1.1內(nèi)部結(jié)構(gòu)80C51單片機(jī)基本型內(nèi)部結(jié)構(gòu)示意圖如圖2-1所示。它主要由CPU、程序存儲器、數(shù)據(jù)存儲器、中斷系統(tǒng)、定時器/計數(shù)器、并行口、串行口、時鐘、總線等組成,整體上包含三大模塊:CPU模塊、存儲器模塊和I/O模塊。圖2-180C51單片機(jī)基本型內(nèi)部結(jié)構(gòu)示意圖
1)CPU模塊
?8位CPU,含布爾處理器;
?時鐘電路;
?總線控制。
2)存儲器模塊
?數(shù)據(jù)存儲器RAM;
?程序存儲器ROM。
3)I/O模塊
?并行I/O端口(均為8位);
?全雙工異步串行口(UART);
?定時器/計數(shù)器;
?中斷系統(tǒng)。
2.1.2典型產(chǎn)品的資源配置
80C51系列單片機(jī)內(nèi)部組成基本相同,但不同型號的產(chǎn)品在某些方面仍會有一些差異。典型的單片機(jī)產(chǎn)品資源配置如表2-1所示。
1)增強(qiáng)型與基本型的差別
?片內(nèi)ROM從4K字節(jié)增加到8K字節(jié);
?片內(nèi)RAM從128字節(jié)增加到256字節(jié);
?定時器/計數(shù)器從2個增加到3個;
?中斷源從5個增加到6個。
2)片內(nèi)ROM的配置形式的差別
?無ROM型,應(yīng)用時要在片外擴(kuò)展程序存儲器;
?掩膜ROM型,用戶程序由單片機(jī)芯片生產(chǎn)廠寫入;
?EPROM型,用戶程序—編程器寫入,利用紫外線擦除;
?FlashROM型,用戶程序可以電寫入和擦除(當(dāng)前常用的方式)。
2.1.3典型產(chǎn)品的封裝和引腳功能
80C51典型產(chǎn)品的封裝如圖2-2所示。圖2-280C51典型產(chǎn)品的封裝
AT89C51的引腳排列如圖2-3所示。圖2-3AT89C51的引腳排列
3)并行I/O引腳(32個,分成4個8位端口)
?P0.0~P0.7:一般I/O端口引腳或數(shù)據(jù)/低位地址總線復(fù)用引腳;
?P1.0~P1.7:一般I/O端口引腳;
?P2.0~P2.7:一般I/O端口引腳或高位地址總線引腳;
?P3.0~P3.7:一般I/O端口引腳或第二功能引腳(見表22)。
2.280C51單片機(jī)的CPU
2.2.1CPU的功能單元80C51的CPU是一個8位的高性能處理器,它的作用是讀入并分析每一條指令,根據(jù)各個指令的功能控制各個功能部件執(zhí)行指定操作,具體如圖2-4所示。圖2-480C51CPU的功能
1.運(yùn)算器
運(yùn)算器由算術(shù)/邏輯運(yùn)算單元(ALU)、累加器(ACC)、寄存器B、暫存(寄存)器、程序狀態(tài)字寄存器(PSW,ProgramStatusWord)組成,它的功能是實(shí)現(xiàn)算術(shù)和邏輯運(yùn)算、位變量處理和數(shù)據(jù)傳送等操作。
1)ALU
ALU主要功能是實(shí)現(xiàn)8位數(shù)據(jù)的加、減、乘、除算術(shù)運(yùn)算和與、或、異或、循環(huán)、求補(bǔ)等邏輯運(yùn)算。同時還具有位處理能力。
2)ACC
ACC用于向ALU提供操作數(shù)和存放運(yùn)算的結(jié)果。運(yùn)算時一個操作數(shù)經(jīng)暫存器送至ALU,與另一個來自ACC的操作數(shù)在ALU中進(jìn)行運(yùn)算,運(yùn)算結(jié)果又送回ACC。
3)寄存器B
寄存器B在乘、除運(yùn)算時用來存放一個操作數(shù),也用來存放運(yùn)算后的部分結(jié)果;在不進(jìn)行乘、除運(yùn)算時,可以作為普通寄存器。
4)PSW
PSW是狀態(tài)標(biāo)志寄存器,用來保存ALU運(yùn)算結(jié)果的特征和處理器狀態(tài)。這些特征和狀態(tài)可以作為控制程序轉(zhuǎn)移的條件。PSW位定義如表2-3所示。
(1)CY(PSW.7):進(jìn)位標(biāo)志位。存放算術(shù)運(yùn)算的進(jìn)位標(biāo)志,在進(jìn)行加或減運(yùn)算時,如果操作結(jié)果最高位有進(jìn)位或借位,則CY由硬件置“1”,否則被置“0”。
(2)AC(PSW.6):輔助進(jìn)位標(biāo)志位。在進(jìn)行加或減運(yùn)算中,若低4位向高4位進(jìn)位或借位,則AC由硬件置“1”,否則被置“0”。
(3)F0(PSW.5):用戶標(biāo)志位。供用戶定義的標(biāo)志位,需要利用軟件方法置位或復(fù)位。
(4)RS1和RS0(PSW.4,PSW.3):工作寄存器組選擇位。用于CPU選擇當(dāng)前使用的工作寄存器組。00、01、10、11分別對應(yīng)0組、1組、2組、3組寄存器,共計4組。
(5)OV(PSW.2):溢出標(biāo)志位。在帶符號數(shù)加減運(yùn)算中,OV=1表示加減運(yùn)算超出了累加器A所能表示的帶符號數(shù)的有效范圍(-128~+127),即產(chǎn)生了溢出,因此運(yùn)算結(jié)果是錯誤的;OV=0表示運(yùn)算正確,即無溢出產(chǎn)生。
(6)F1(PSW.1):保留未使用。
(7)P(PSW.0):奇偶標(biāo)志位。P標(biāo)志位表明累加器ACC中內(nèi)容的奇偶性,如果ACC中有奇數(shù)個“1”,則P置“1”,否則置“0”。
5)暫存器
暫存器用來暫時存放數(shù)據(jù)總線或其他寄存器送來的操作數(shù)。它作為ALU的數(shù)據(jù)輸入源,向ALU提供操作數(shù),是不可以用指令進(jìn)行尋址的。
2.控制器
控制器由程序計數(shù)器(PC)、指令寄存器(IR)、指令譯碼及控制邏輯電路組成。
1)PC
PC是一個16位的計數(shù)器,它總是存放著下一個要取指令的存儲單元地址。CPU把PC的內(nèi)容作為地址,從對應(yīng)于該地址的程序存儲器單元中取出指令碼。每取完一個指令
后,PC內(nèi)容自動加1,為取下一條指令做準(zhǔn)備。在執(zhí)行轉(zhuǎn)移指令、子程序調(diào)用指令及中斷響應(yīng)時,轉(zhuǎn)移指令、調(diào)用指令或中斷響應(yīng)指令過程會自動給PC置入新的地址。
注意:單片機(jī)上電或復(fù)位時,PC裝入地址0000H,保證單片機(jī)上電或復(fù)位后,程序從0000H地址開始執(zhí)行。
2)IR
IR保存當(dāng)前正在執(zhí)行的一條指令。執(zhí)行一條指令,先要把它從程序存儲器取到指令寄存器中。指令內(nèi)容含操作碼和地址碼,操作碼送往指令譯碼器并形成相應(yīng)指令的微操作信
號。地址碼送往操作數(shù)地址形成電路,用以構(gòu)成實(shí)際操作數(shù)地址。
3)指令譯碼及控制邏輯電路
指令譯碼及控制邏輯電路是微處理器的核心部件,它的任務(wù)是完成讀指令、執(zhí)行指令、存取操作數(shù)或運(yùn)算結(jié)果等操作,向其他部件發(fā)出各種微操作控制信號,協(xié)調(diào)各部件的工作。(整體工作的協(xié)調(diào)靠時鐘。)
3.其他寄存器
1)數(shù)據(jù)指針(DPTR)
DPTR是一個16位的寄存器,它由兩個8位的寄存器DPH和DPL組成,用來存放16位的地址。利用間接尋址可對片外RAM、ROM或I/O接口的數(shù)據(jù)進(jìn)行訪問。
2)堆棧指針(SP)
SP是一個8位的寄存器,用于子程序調(diào)用及中斷調(diào)用時保護(hù)斷點(diǎn)及現(xiàn)場,它總是指向堆棧頂部。堆棧通常設(shè)在30H~7FH這一段片內(nèi)RAM中。堆棧操作遵循“后進(jìn)先出”原則,數(shù)據(jù)入棧時,SP先加1,然后數(shù)據(jù)再壓入SP指向的單元;數(shù)據(jù)出棧時,先將SP指向單元的數(shù)據(jù)彈出,然后SP再減1,這時SP指向的單元是新的棧頂。
3)工作寄存器
工作寄存器R0~R7共占用32個片內(nèi)RAM單元,分成4組,每組8個單元,當(dāng)前工作寄存器組由PSW的RS1和RS2位指定。
80C51寄存器及其在存儲器中的映射如圖2-5所示。圖2-580C51寄存器及其在存儲器中的映射
2.2.2總線控制
1.簡介
總線控制是用來傳送控制信息的信號線,連接在一起并完成和實(shí)現(xiàn)CPU、內(nèi)存和輸入輸出設(shè)備之間的通信與數(shù)據(jù)傳送。
2.分類
總線控制就是各種信號線的集合,是各部件之間傳送數(shù)據(jù)、地址和控制信息的公共通道。
1)按相對于CPU與其芯片的位置來分
(1)片內(nèi)總線:指在CPU內(nèi)部各寄存器、算術(shù)邏輯部件(ALU)、控制部件以及內(nèi)部高速緩沖存儲器之間傳輸數(shù)據(jù)所用的總線,即芯片內(nèi)部總線。
(2)片外總線:通常所說的總線(BUS)指的是外總線,是CPU與內(nèi)存RAM、ROM和輸入輸出設(shè)備接口之間進(jìn)行通信的數(shù)據(jù)通道,CPU通過總線實(shí)現(xiàn)程序存取命令、內(nèi)存/外設(shè)的數(shù)據(jù)交換。在CPU與外設(shè)一定的情況下,總線速度是限制計算機(jī)整體性能的最大因數(shù)。
2)按總線功能分
(1)地址總線(AB):用來傳遞地址信息。
(2)數(shù)據(jù)總線(DB):用來傳遞數(shù)據(jù)信息。
(3)控制總線(CB):用來傳送各種控制信號。
3)按總線的層次結(jié)構(gòu)分
(1)CPU總線:包括CPU地址線(CAB)、CPU數(shù)據(jù)線(CDB)和CPU控制線(CCB),用來連接CPU和控制芯片。
(2)存儲器總線:包括存儲器地址線(MAB)、存儲器數(shù)據(jù)線(MDB)和存儲器控制線(MCD),用來連接內(nèi)存控制器和內(nèi)存。
(3)系統(tǒng)總線:也稱為I/O通道總線或I/O擴(kuò)展總線,包括系統(tǒng)地址線(SAB)、系統(tǒng)數(shù)據(jù)線(SDB)和系統(tǒng)控制線(SCD),用來與I/O擴(kuò)展槽上的各種擴(kuò)展卡相連接。
(4)外部總線(外圍芯片總線):用來連接各種外設(shè)控制芯片,如主板上的I/O控制器(如硬盤接口控制器、軟盤驅(qū)動控制器、串行/并行接口控制器等)和鍵盤控制器,包括外部地址線(XAB)、外部數(shù)據(jù)線(XMB)和外部控制線(XCB)。
3.總線技術(shù)指標(biāo)
1)總線的帶寬(總線數(shù)據(jù)傳輸速率)
總線的帶寬指的是單位時間內(nèi)總線上傳送的數(shù)據(jù)量,即每秒鐘傳送多少兆字節(jié)的最大穩(wěn)態(tài)數(shù)據(jù)傳輸率。與總線密切相關(guān)的兩個因素是總線的位寬和總線的工作頻率,它們之間
的關(guān)系如下:
總線的帶寬=總線的工作頻率*總線的位寬/
2)總線的位寬
總線的位寬指的是總線能同時傳送的二進(jìn)制數(shù)據(jù)的位數(shù),或數(shù)據(jù)總線的位數(shù),即32位、64位等總線寬度的概念??偩€的位寬越寬,每秒鐘數(shù)據(jù)傳輸率越大,總線的帶寬越寬。
3)總線的工作頻率
總線的工作頻率以MHz為單位,工作頻率越高,總線工作速度越快,總線帶寬越寬。
2.380C51單片機(jī)的存儲器
存儲器是組成計算機(jī)的主要部件,其功能是存儲信息。存儲器可以分成兩個大類,一類是數(shù)據(jù)存儲器(RAM),另一類是程序存儲器(ROM)。對于RAM,CPU在運(yùn)行時能隨時進(jìn)行數(shù)據(jù)的寫入和讀出,但在關(guān)閉電源時,其所存儲的信息將丟失。所以,RAM用來存放暫時性的輸入輸出數(shù)據(jù)、運(yùn)算的中間結(jié)果或用作堆棧。ROM是一種寫入和讀出信息存儲器。斷電后ROM中的信息不變,所以常用來存放程序或常數(shù),如系統(tǒng)監(jiān)控程序、常數(shù)表等。
如圖2-6所示,存儲器主要有4個物理存儲空間:片內(nèi)數(shù)據(jù)存儲器(IDATA區(qū))、片外數(shù)據(jù)存儲區(qū)(XDATA)、片內(nèi)程序存儲器和片外程序存儲器(程序存儲器合稱為CODE)。圖2-6單片機(jī)的存儲器結(jié)構(gòu)示意圖
2.3.1數(shù)據(jù)存儲器配置
80C51單片機(jī)的數(shù)據(jù)存儲器分為片外RAM和片內(nèi)RAM兩大部分。
MCS-51系列單片機(jī)的內(nèi)部RAM共有256個單元,通常把這256個單元按其功能劃分為兩部分:低128單元(單元地址00H~7FH)和高128單元(80H~FFH)。片內(nèi)、片外
數(shù)據(jù)存儲器概況如圖2-7所示。圖2-7片內(nèi)、片外數(shù)據(jù)存儲器概況
1)片內(nèi)數(shù)據(jù)存儲器低128單元(DATA區(qū))
片內(nèi)RAM的低128個單元用于存放程序執(zhí)行過程中的各種變量和臨時數(shù)據(jù),稱為DATA區(qū)。這片內(nèi)RAM低128個單元是單片機(jī)的真正RAM存儲器,按其用途劃分為工作寄存器區(qū)、位尋址區(qū)和用戶數(shù)據(jù)緩沖區(qū)3個區(qū)域。片內(nèi)RAM低128單元的配置如表2-4所示。
(1)工作寄存器區(qū):每組包括8個(R0~R7)共計32個寄存器,用來存放操作數(shù)據(jù)及中間數(shù)據(jù)結(jié)果等。4組通用寄存器占據(jù)內(nèi)部RAM的00H~1FH單元地址。
在任何時刻,CPU只能使用其中一組寄存器,并且把正在使用的那組寄存器稱為當(dāng)前寄存器。當(dāng)前工作寄存器到底是哪一組,由程序狀態(tài)寄存器(PSW)中的RS1和RS2位的狀態(tài)組合來決定。
注意:在單片機(jī)的C語言程序設(shè)計中,一般不會直接使用工作寄存器組R0~R7。但是,在C語言與匯編語言的混合編程中,工作寄存器組是匯編子程序和C語言函數(shù)之間重要的參數(shù)傳遞工具。
(2)位尋址區(qū)(BDATA):內(nèi)部RAM的20H~2FH單元,既可以為一般RAM單元使用,進(jìn)行字節(jié)操作,也可以對單元中每一位進(jìn)行操作,因此把該區(qū)稱為位尋址區(qū)(BDATA區(qū))。
位尋址區(qū)共有16個RAM單元,共
(3)用戶數(shù)據(jù)緩沖區(qū)(通用RAM區(qū)):在內(nèi)部RAM低128單元中,除了工作寄存器區(qū)(占32個單元)和位尋址區(qū)(占16個單元)外,還剩下80個單元,單元地址為30H~7FH,是供用戶使用的一般RAM區(qū)。對用戶數(shù)據(jù)緩沖區(qū)的使用沒有任何規(guī)定或限制,但是一般應(yīng)用中常把堆棧開辟在此區(qū)域中。
在實(shí)際應(yīng)用中,堆棧一般設(shè)在30H~70H的范圍內(nèi),棧頂?shù)奈恢糜啥褩V羔楽P指示。復(fù)位時SP的初值為07H,在系統(tǒng)初始化時,通常要進(jìn)行重新設(shè)置,目的是留出低端的工作寄存器和位尋址空間以完成更重要的任務(wù)。
用戶數(shù)據(jù)緩沖區(qū)示意圖如圖2-8所示。圖2-8用戶數(shù)據(jù)緩沖區(qū)示意圖
2)片內(nèi)數(shù)據(jù)存儲器高128單元(DATA區(qū))
內(nèi)部RAM的高128單元是基本型單片機(jī)21個SFR(也稱為特殊功能寄存器),它離散地分布在80H~FFH空間。雖然,它們不連續(xù)地分布在片內(nèi)RAM的高128單元中,其中還有許多空閑地址,但是用戶不能使用。另外還有一個不可尋址的特殊功能寄存器,即程序計數(shù)器(PC),它不占用RAM單元,在物理上是獨(dú)立的。表2-6所示為21個SFR的位地址及字節(jié)地址表。
2.3.2程序存儲器配置
80C51單片機(jī)的程序計數(shù)器(PC)是16位的計數(shù)器,所以能尋址64KB的程序寄存器地址范圍,允許用戶程序調(diào)試或轉(zhuǎn)向64KB的任何存儲單元。
1.片內(nèi)與片外程序存儲器的選擇
EA引腳有效時(低電平)選擇運(yùn)行片外ROM中的程序。
1)EA引腳接高電平時從片內(nèi)程序存儲器開始取指令
當(dāng)EA引腳接高電平時,對于基本型單片機(jī),首先在片內(nèi)程序存儲器中取指令,當(dāng)PC的內(nèi)容超過0FFFH時系統(tǒng)會自動轉(zhuǎn)到片外程序存儲器中取指令,外部程序存儲器的地址從1000H開始編址,如圖29所示。圖2-9EA接高電平時
2)EA引腳接低電平時從片外程序存儲器開始取指令
當(dāng)EA引腳接低電平時,單片機(jī)自動轉(zhuǎn)到片外程序存儲器中取指令(無輪片內(nèi)外是否有程序存儲器),外部程序存儲器的地址從0000H開始編址,如圖2-10所示。圖2-10EA接低電平時
2.程序存儲器低端的幾個特殊單元
程序寄存器低端的一些地址被固定地用做特定的入口地址,如表2-7所示。
地址0000H是復(fù)位入口,復(fù)位后單片機(jī)執(zhí)行該處的指令進(jìn)入主程序。圖2-11所示為基本程序儲存結(jié)構(gòu)。
主程序執(zhí)行時,如果開放了CPU,且某一中斷被允許(如圖為外部中斷0),當(dāng)該中斷事件發(fā)生時,就會暫時停止主程序的執(zhí)行,轉(zhuǎn)而去執(zhí)行中斷服務(wù)程序。編程時,通常在該中斷入口地址中放一條轉(zhuǎn)移指令(如LJMP2000H),從而使該中斷服務(wù)發(fā)生時,系統(tǒng)能夠跳轉(zhuǎn)到該中斷在程序存儲器區(qū)高端的中斷服務(wù)程序。只有在中斷服務(wù)程序長度少于8個字節(jié)時,才可以將中斷服務(wù)程序直接放在相應(yīng)的入口地址開始的幾個單元中。
注意:在單片機(jī)C語言程序設(shè)計中,用戶無需考慮程序的存放地址,編譯程序會在編譯過程中按照上述規(guī)定,自動安排程序的存放地址。例如:C語言是從main()函數(shù)開始執(zhí)行的,編譯程序會在程序存儲器的0000H處自動存放一條轉(zhuǎn)移指令,跳轉(zhuǎn)到main()函數(shù)存放的地址;中斷函數(shù)也會按照中斷類型號,自動由編譯程序安排存放在程序存儲器相應(yīng)的地址中。因此,讀者只需要了解程序存儲器的結(jié)構(gòu)就可以了。圖2-11基本程序儲存結(jié)構(gòu)
2.480C51單片機(jī)的并行口
2.4.1P0口的結(jié)構(gòu)、功能及使用1.結(jié)構(gòu)P0口由一個輸出鎖存器、一個轉(zhuǎn)換開關(guān)MUX、兩個三態(tài)輸入緩沖器、輸出驅(qū)動電路和一個與門及一個反相器組成。P0口的內(nèi)部邏輯電路如圖2-12所示。圖中的控制信號C的狀態(tài)決定MUX轉(zhuǎn)換開關(guān)的位置。當(dāng)C=0時,MUX處于圖中所示位置(I/O);當(dāng)C=1時,MUX撥向反相器輸出端位置(地址/數(shù)據(jù)總線)。圖2-12P0口的內(nèi)部邏輯電路
2.功能
P0端口作一般I/O口時,先定義后使用;作低8位地址總線/數(shù)據(jù)總線復(fù)用口時,通常后邊接地址鎖存器。
1)P0口用做通用I/O口(C=0)
當(dāng)單片機(jī)應(yīng)用系統(tǒng)不進(jìn)行片外總線擴(kuò)展時,P0口用作通用I/O口。在這種情況下,單片機(jī)硬件自動使C=0,MUX開關(guān)接向鎖存器的反相輸出端。另外,與門輸出的“0”使輸出驅(qū)動器上的上拉場效應(yīng)管T1處于截止?fàn)顟B(tài)。因此,輸出驅(qū)動器工作在需外接上拉電阻的漏極開路方式。
?作輸出口時,CPU執(zhí)行口的輸出指令,內(nèi)部數(shù)據(jù)總線上的數(shù)據(jù)在“寫鎖存器”信號的作用下由D端進(jìn)入鎖存器,經(jīng)鎖存器的反相端送至場效應(yīng)管T2,再經(jīng)T2反相,在P0.X引
腳出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。P0口用做輸出口時的內(nèi)部邏輯電路圖2-13所示。圖2-13P0用做輸出口時的內(nèi)部邏輯電路
?作輸入口時,數(shù)據(jù)可以讀自接口的鎖存器,也可以讀自接口的引腳。這要根據(jù)輸入操作采用的是“讀鎖存器”指令還是“讀引腳”指令來決定。P0口用做輸入口時的內(nèi)部邏輯電路圖2-14所示。圖2-14P0口用做輸入口時的內(nèi)部邏輯電路
2)P0口用做地址/數(shù)據(jù)總線(C=1)
當(dāng)應(yīng)用系統(tǒng)進(jìn)行片外總線擴(kuò)展時(即擴(kuò)展存儲器或接口芯片),P0口用做地址/數(shù)據(jù)總線。在這種情況下,單片機(jī)內(nèi)硬件自動使C=1。P0口用做地址/數(shù)據(jù)總線時的內(nèi)部邏輯電
路圖2-15所示。
3.使用
P0口字節(jié)單元地址為80H,引腳為32~39腳,可以位尋址;能驅(qū)動8個LSTTL電路。圖2-15P0口用做地址/數(shù)據(jù)總線時的內(nèi)部邏輯電路
2.4.2P1口的結(jié)構(gòu)、功能及使用
1.結(jié)構(gòu)
P1口通常作為通用I/O使用,由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成,如圖2-16所示。P1口在電路上與P0口有一些不同之處,首先它不再需要多路轉(zhuǎn)換開關(guān)MUX,其次是電路的內(nèi)部有上拉電阻(30kΩ),與場效應(yīng)管共同組成輸出驅(qū)動電路。圖2-16P1口的內(nèi)部邏輯電路
2.功能
P1口是51單片機(jī)中唯一的一個單功能I/O端口。作一般I/O口用時,遵循先定義后使用的原則。
3.使用
P1口字節(jié)單元地址為90H,引腳為1~8腳,可以位尋址;能驅(qū)動4個LSTTL電路。
2.4.3P2口的結(jié)構(gòu)、功能及使用
1.結(jié)構(gòu)
P2口由一個輸出鎖存器、一個轉(zhuǎn)換開關(guān)MUX、兩個三態(tài)輸緩沖器、輸出驅(qū)動電路和一個反相器組成。P2口的內(nèi)部邏輯電路如圖2-17所示。
圖中的控制信號C的狀態(tài)決定了MUX轉(zhuǎn)換開關(guān)的位置。當(dāng)C=0時,MUX處于圖中所示位置(I/O);當(dāng)C=1時,MUX撥向反相器輸出端位置(地址/數(shù)據(jù)總線)。圖2-17P2口的內(nèi)部邏輯電路
2.功能
P2口作高8位地址總線或者是一般I/O端口。作為8位地址總線,從P2.0開始,確定方法遵循Q=2n原則,即n=8+?(?表示需要P2口提供高8位地址總線的根數(shù),根據(jù)實(shí)際需要自己確定);作為一般I/O端口,遵循先定義后使用原則。
P2口用做通用I/O口(C=0)時:
?作輸出口:執(zhí)行輸出指令,內(nèi)部數(shù)據(jù)總線的數(shù)據(jù)在“寫鎖存器”信號的作用下由D端進(jìn)入鎖存器,經(jīng)反相器反相后送至場效應(yīng)管T,再經(jīng)T反相,在P2.X引腳出現(xiàn)的數(shù)據(jù)正
好是內(nèi)部數(shù)據(jù)總線的數(shù)據(jù)。應(yīng)注意:P2口的輸出驅(qū)動電路內(nèi)部有上拉電阻。
?作輸入口:數(shù)據(jù)可以讀自口的鎖存器,也可以讀自口的引腳。這要根據(jù)輸入操作采用的是“讀鎖存器”指令還是“讀引腳”指令來決定。
3.使用
P2口的字節(jié)單元地址為A0H,引腳為21~28腳,可以位尋址;能驅(qū)動4個LSTTL電路。
2.4.4P3口的結(jié)構(gòu)、功能及使用
1.結(jié)構(gòu)
P3口由一個輸出鎖存器、三個輸入緩沖器(其中兩個為三態(tài))、輸出驅(qū)動電路和一個與非門組成,如圖2-18所示。P3口與P1口的結(jié)構(gòu)相似,區(qū)別僅在于P3口的各端口線有兩
種功能可選擇。當(dāng)處于第一功能時,第二功能輸出線為“1”,與非門開通,以維持從鎖存器到輸出端的數(shù)據(jù)輸出通路的暢通。此時,內(nèi)部總線信號經(jīng)鎖存器與場效應(yīng)管輸入\輸出,其
作用與P1口的作用相同,也是靜態(tài)準(zhǔn)雙向I/O端口。
當(dāng)處于第二功能時,鎖存器輸出為“1”,通過第二輸出功能線輸出特定的信號,在輸入方面,即可以通過緩沖器讀入引腳信號,還可以代替輸入功能讀入片內(nèi)特定的第二功能信號。由于輸出信號鎖存并且有雙重功能,故P3口為靜態(tài)雙功能端口。
圖2-18P3口的內(nèi)部邏輯電路
2.功能
P3口作為一般I/O端口,遵循先定義后使用的原則。P3口的第二功能如表2-8所示。
3.使用
P3口字節(jié)單元地址為B0H,引腳為10~17腳,可以位尋址;能驅(qū)動4個LSTTL電路。通常情況只要P3口使用,首先考慮是否是第二功能。
2.580C51單片機(jī)的最小系統(tǒng)
單片機(jī)的工作就是執(zhí)行用戶程序、指揮各部分硬件完成既定任務(wù)。如果一個單片機(jī)芯片沒有燒錄用戶程序,顯然它就不能工作。可是,一個燒錄用戶程序的單片機(jī)芯片,給它上電后就能工作嗎?也不能。原因是除了單片機(jī)外,單片機(jī)能夠工作的最小電路還包括時鐘和復(fù)位電路,通常稱為單片機(jī)最小系統(tǒng)。
時鐘電路為單片機(jī)工作提供基本時鐘,復(fù)位電路用于將單片機(jī)內(nèi)部各電路的狀態(tài)復(fù)位到初始化值。圖2-19所示為典型的單片機(jī)最小系統(tǒng)。圖2-19典型的單片機(jī)最小系統(tǒng)
2.5.1MCS51單片機(jī)的時鐘
單片機(jī)的工作過程是:取一條指令、譯碼、進(jìn)行微操作;再取一條指令、譯碼、進(jìn)行微操作,這樣自動地、一步一步地由微操作依序完成相應(yīng)指令規(guī)定的操作功能。這些一步一
步的工作全靠單片機(jī)時鐘來控制和協(xié)調(diào)完成。
1.時鐘產(chǎn)生的方式
MCS51單片機(jī)的時鐘信號通常由兩種方式產(chǎn)生:一是內(nèi)部時鐘方式;二是外部時鐘方式,如圖2-20所示。
內(nèi)部時鐘方式只要在單片機(jī)的XTAL1和XTAL2引腳外接晶振即可。圖2-20(a)中電容器C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF之間,典型值為30pF。
晶振CYS的振蕩頻率要小于12MHz,典型值為6MHz、12MHz或11.0592MHz。圖2-20時鐘方式
2.MCS-51單片機(jī)時鐘信號
MCS-51單片機(jī)時鐘信號如圖2-21所示。
振蕩周期(有時也稱為時鐘周期)為最小的時序單位。振蕩信號經(jīng)分頻器后形成兩相錯開的信號P1和P2。P1和P2的周期也稱為S狀態(tài)周期,它是晶振周期的2倍,即一個S狀態(tài)周期包含兩個振蕩周期。圖2-21時鐘信號示意圖
3.時序概念
單片機(jī)內(nèi)的各種操作都是在一系列脈沖控制下進(jìn)行的,而各脈沖在時間上是有先后順序的,這種順序就稱為時序。
單片機(jī)的時序定時單位從小到大依次為:節(jié)拍、狀態(tài)周期、機(jī)器周期和指令周期。
節(jié)拍是指晶體振蕩器直接產(chǎn)生的振蕩信號的振蕩周期,用P表示:
如6MHz時T=1/6μs,12MHz時T=1/12μs。
狀態(tài)周期又稱為時鐘周期,用S表示。每一個狀態(tài)周期是振蕩周期的兩倍,即每個狀態(tài)周期分為P1和P2兩個節(jié)拍,P1節(jié)拍完成算術(shù)邏輯操作,P2節(jié)拍完成內(nèi)部寄存器間數(shù)
據(jù)的傳遞。
機(jī)器周期是機(jī)器的基本操作周期,一個機(jī)器周期含6個狀態(tài)周期,分別用S1~S6表示,或用S1P1、S1P2……S1P6表示。
指令周期是執(zhí)行一條指令所占有的全部時間。一條指令通常由1~4個機(jī)器周期組成。單片機(jī)系統(tǒng)中,有單周期指令、雙周期指令和四周期指令。
2.5.2MCS-51單片機(jī)的復(fù)位
單片機(jī)的工作就是從復(fù)位開始的。復(fù)位可以使單片機(jī)中各部件處于確定的初始狀態(tài)。
1.復(fù)位電路
當(dāng)MCS-51單片機(jī)的RST引腳加高電平復(fù)位信號(保持2個以上機(jī)器周期)時,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。復(fù)位信號變低電平時,單片機(jī)開始執(zhí)行程序。實(shí)際應(yīng)用中,復(fù)位操作有兩種基本形式:一種是上電復(fù)位;另一種是上電與按鍵均有效的復(fù)位。
圖2-22(a)所示為上電復(fù)位,它利用電容充電來實(shí)現(xiàn)復(fù)位。在接電瞬間,RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐步下降。只要保證RST為高電平的
時間大于兩個機(jī)器周期,便能正常復(fù)位。
圖2-22(b)所示為按鍵復(fù)位電路。該電路除具有上電復(fù)位電路功能外,還可以按圖中的RESET鍵實(shí)現(xiàn)復(fù)位,此時電源VCC經(jīng)過兩個電阻分壓,在RST端產(chǎn)生一個復(fù)位高電
平(兩個機(jī)器周期)。圖2-22復(fù)位電路
2.單片機(jī)復(fù)位后狀態(tài)
單片機(jī)復(fù)位初始化后,程序計數(shù)器PC=0000H,所以程序從0000H地址單元開始執(zhí)行。單片機(jī)啟動后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)RAM的內(nèi)容。
復(fù)位后,特殊功能寄存器狀態(tài)是確定的。P0~P3為FFH,SP為07H,SBUF不定,IP、IE和PCON的有效位為0,其余的特殊功能寄存器的狀態(tài)均為00H。相應(yīng)的意義為:
?P0~P3=FFH,相當(dāng)于各口鎖存器已寫入1,此時不但可用于輸出,也可以用于輸入;
?SP=07H,堆棧指針指向片內(nèi)RAM的07H單元(第一個入棧內(nèi)容將寫入08H單元);
?IP、IE和PCON的有效位為0,各中斷源處于低優(yōu)先級且均被關(guān)斷,串行通信的波特率不加倍;
?PSW=00H,當(dāng)前工作寄存器為0組。
任務(wù)2-1用Keil軟件將51單片機(jī)控制
蜂鳴器程序編譯成hex文件
任務(wù)目的通過使用KeilμVision4軟件,對51單片機(jī)控制蜂鳴器程序進(jìn)行輸入和編譯,達(dá)到掌握將C51單片機(jī)控制程序編譯成hex文件的方法。任務(wù)準(zhǔn)備設(shè)備及軟件:計算機(jī)、KeilμVision4軟件。
任務(wù)實(shí)施
(1)在【Project】菜單下選擇【NewμVisionProject】命令,見圖2-23。
(2)輸入新建工程文件名“蜂鳴器”,如圖2-24所示。
(3)選擇廠商和單片機(jī)型號,見圖2-25。
(4)新建c文件,見圖2-26。
(5)輸入C語言程序并保存,見圖2-27。
(6)保存的文件后綴名為在英文狀態(tài)下的“.c”,見圖2-28
(7)將新建的文件添加到工程中,見圖2-29和圖2-30。
(8)單擊圖標(biāo),在【Output】下拉菜單中生成的hex文件上打?qū)︺^,見圖2-31和圖2-32。
(9)編譯,底端顯示0錯誤0警告,表示程序語法正確,見圖2-33。
圖2-23新建工程圖2-24保存工程圖2-25選擇單片機(jī)圖2-26新建c文件圖2-27編程圖2-28保存c文件圖2-29添加c文件操作一圖2-30添加c文件操作二圖2-31勾選hex文件操作一圖2-32勾選hex文件操作二圖2-33編譯
任務(wù)2-2用Proteus軟件繪制51單片機(jī)
控制蜂鳴器電路圖
任務(wù)目的使用Proteus軟件繪制51單片機(jī)控制蜂鳴器電路圖,掌握Proteus軟件繪制電路圖的方法及注意事項(xiàng)。任務(wù)準(zhǔn)備設(shè)備及軟件:萬用表、計算機(jī)、KeilμVision4軟件、Proteus軟件。電路圖:51單片機(jī)控制蜂鳴器電路圖一張(電路圖參見后面的繪制結(jié)果)。
任務(wù)實(shí)施
(1)單擊搜索元件的符號,見圖2-34;也可以按快捷鍵P進(jìn)行搜索。
(2)在搜索欄輸入要用的元器件,見圖2-35。
(3)雙擊需要的元器件之后,元器件就會進(jìn)入器件工具列表窗口,見圖2-36。
(4)用鼠標(biāo)左鍵單擊連接元件端口,畫好電路圖之后,雙擊單片機(jī)就會進(jìn)入元器件編輯界面,接著選擇對應(yīng)的hex文件,見圖2-37。
(5)單擊左下角允許符號,沒有錯誤,表示運(yùn)行成功,見圖2-38。
圖2-34搜索元件圖2-35選取元件圖2-36添加元器件到器件工具列表圖2-37連線畫圖圖2-38運(yùn)行結(jié)果
任務(wù)2-3用單片機(jī)控制一只發(fā)光二極管閃爍
任務(wù)目的使用單片機(jī)控制一只發(fā)光二極管閃爍,綜合練習(xí)KeilμVision4軟件和Proteus軟件在進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計時的步驟和方法。任務(wù)準(zhǔn)備設(shè)備及軟件:萬用表、計算機(jī)、KeilμVision4軟件、Proteus軟件。
任務(wù)實(shí)施
1.任務(wù)分析
任務(wù)電路Proteus原理圖如圖2-39所示,當(dāng)P1.0輸出為0時,對應(yīng)發(fā)光二極管D1點(diǎn)亮。當(dāng)P1.0輸出為1時,對應(yīng)發(fā)光二極管D1熄滅。圖2-39單片機(jī)控制一只發(fā)光二極管的Proteus電路圖
2.軟件仿真
(1)打開Keil軟件,在軟件中輸入任務(wù)程序,并對程序進(jìn)行編譯,直至沒有錯誤,并生成相應(yīng)的hex文件。
(2)打開Proteus軟件,繪制如圖2-39所示的電路原理圖,導(dǎo)入編譯后生成的hex文件,運(yùn)行程序,觀察仿真效果。
任務(wù)結(jié)論
通過KeilμVision4軟件和Proteus軟件的具體使用和操作,實(shí)現(xiàn)了LED的閃爍。
本章小結(jié)
MCS-51是Intel的一個單片機(jī)系列名稱。其他廠家以8051為基核開發(fā)的CMOS工藝單片機(jī)產(chǎn)品統(tǒng)稱為80C51系列。80C51單片機(jī)在功能上分為基本型和增強(qiáng)型,在制造上采用CMOS工藝。在片內(nèi)程序存儲器的配置上有掩模ROM、EPROM和Flash、無片內(nèi)程序存儲器等形式。
80C51單片機(jī)由CPU、存儲器、I/O模塊構(gòu)成。
80C51單片機(jī)的存儲器主要有4個物理存儲空間:片內(nèi)數(shù)據(jù)存儲器(IDATA區(qū))、片外數(shù)據(jù)存儲區(qū)(XDATA)、片內(nèi)程序存儲器、片外程序存儲器(程序存儲器合稱為CODE)。片內(nèi)程序存儲器容量為4KB,片內(nèi)數(shù)據(jù)存儲器容量為256KB。
片內(nèi)RAM的低128個單元用于存放程序執(zhí)行過程中的各種變量和臨時數(shù)據(jù),按其用途劃分為工作寄存器區(qū)(占32個單元)、位尋址區(qū)(占16個單元)、用戶數(shù)據(jù)緩沖區(qū)(地址為
30H~7FH)3個區(qū)域。
RAM的高128單元是基本型單片機(jī)21個SFR(也稱為特殊功能寄存器)。它離散地分布在80H~FFH空間。雖然,它們不連續(xù)地分布在片內(nèi)RAM的高128單元中,其中還有許多空閑地址,但是用戶不能使用。
MCS51共有4個8位的并行I/O口,分別記作P0、P1、P2、P3。每個口都包含一個鎖存器、一個輸出驅(qū)動器和輸入緩沖器。這些端口在結(jié)構(gòu)和特性上基本相同,但又各具特點(diǎn)。P1端口是唯一的單功能口,僅能用作通用數(shù)據(jù)輸入/輸出口。P3端口是雙功能口,除具有數(shù)據(jù)輸入/輸出功能外,每一條端口線還具有不同的第二功能。在需要外部程序存儲器和數(shù)據(jù)存儲器擴(kuò)展時,P0端口為分時復(fù)用的低8位地址線/數(shù)據(jù)總線,P2端口為高8位地址總線。
80C51單片機(jī)的時鐘信號有內(nèi)部時鐘方式和外部時鐘方式兩種。內(nèi)部的各種微操作都以振蕩(晶振)周期為時序基準(zhǔn),晶振信號二分頻后形成兩相錯開的時鐘信號P1和P2。一
個機(jī)器周期包含12個晶振周期(或6個S狀態(tài)周期)。指令的執(zhí)行時間稱作指令周期。
單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài)。復(fù)位后,P0~P3=FFH,相當(dāng)于各口鎖存器已寫入1,此時不但可用于輸出,也可以用于輸入;SP=07H,堆棧指針指向片內(nèi)RAM的07H單元(第一個堆棧內(nèi)容將寫入08H單元);IP、IE和PCON的有效位為0,各中斷源處于低優(yōu)先級且均被關(guān)斷,串行通信的波特率不加倍;PSW=00H,當(dāng)前工作寄存器為0組。
習(xí)題
一、填空題1.單片機(jī)80C51內(nèi)部整體結(jié)構(gòu)有3個模塊,即()、()、()。2.單片機(jī)的存儲器主要有4個物理存儲空間,即()、()、()、()。3.單片機(jī)的應(yīng)用程序一般存放在()中。4.片內(nèi)RAM低128單元按其用途劃分為()、()和()3個區(qū)域。
5.當(dāng)振蕩脈沖頻率為12MHz時,一個機(jī)器周期為()
;當(dāng)振蕩脈沖頻率為()6MHz時,一個機(jī)器周期為。
6.單片機(jī)總線按照功能分為()、()、()3種。
7.單片機(jī)的復(fù)位電路有兩種,即()和()
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年社會創(chuàng)新與實(shí)踐案例分析考試試題及答案
- 軟件設(shè)計師職業(yè)定位試題及答案
- 公共政策應(yīng)對疫情的成功經(jīng)驗(yàn)試題及答案
- 軟件設(shè)計師考試代碼重構(gòu)價值探討試題及答案
- 網(wǎng)絡(luò)數(shù)據(jù)傳輸與處理試題及答案
- 西方國家與地區(qū)治理模式分析試題及答案
- 搶先了解信息系統(tǒng)項(xiàng)目管理師考試真題試題及答案
- 軟件設(shè)計師考試知識共享平臺試題及答案
- 機(jī)電工程考試常規(guī)題型及答案
- 社會信任與政治穩(wěn)定的關(guān)系試題及答案
- 2025年物聯(lián)網(wǎng)工程師考試試題及答案
- 宣城郎溪開創(chuàng)控股集團(tuán)有限公司下屬子公司招聘筆試題庫2025
- 2025年高爾夫教練職業(yè)資格考試試卷及答案
- 汽車掛靠合同終止協(xié)議書
- 抖音合作合同協(xié)議書
- 肥胖癥診療指南(2024年版)解讀
- 2024北京西城區(qū)六年級(下)期末數(shù)學(xué)試題及答案
- 公安保密知識培訓(xùn)
- 2024北京西城區(qū)五年級(下)期末英語試題及答案
- 初中語文:非連續(xù)性文本閱讀練習(xí)(含答案)
- 中國歷史地理智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
評論
0/150
提交評論