《單片機(jī)原理及應(yīng)用》課件1第2章_第1頁
《單片機(jī)原理及應(yīng)用》課件1第2章_第2頁
《單片機(jī)原理及應(yīng)用》課件1第2章_第3頁
《單片機(jī)原理及應(yīng)用》課件1第2章_第4頁
《單片機(jī)原理及應(yīng)用》課件1第2章_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章8051存儲器2.18051存儲器的基本結(jié)構(gòu)2.2尋址方式2.3數(shù)據(jù)傳送類指令2.4存儲器的擴(kuò)展2.5設(shè)計課目與演練——

秘密存放數(shù)據(jù):數(shù)據(jù)的搬移與變換小結(jié)

習(xí)題

本章通過大量的圖表來講解8051存儲器的結(jié)構(gòu)和類型,以及匯編語言如何訪問這些單元(尋址方式),利用數(shù)據(jù)傳送類的完整例子去查看指令如何操作、控制存儲單元,并結(jié)合上一章的程序框架結(jié)構(gòu),進(jìn)一步認(rèn)識程序的編寫方法。2.18051存儲器的基本結(jié)構(gòu)2.1.1位、字節(jié)、字、存儲單元及地址(編號)位、字節(jié)、字、存儲單元及地址是在以后的學(xué)習(xí)和使用過程中出現(xiàn)頻度比較高的幾個量。位(bit)是單片機(jī)系統(tǒng)中最小的儲存單位。8位構(gòu)成一個字節(jié)(Byte),兩個字節(jié)構(gòu)成一個字(Word)。對于51、52系列,這個規(guī)則是適用的;對于16位機(jī),該定義則有所變化。上面的描述如圖2-1所示。我們對位的標(biāo)識和描述常常采用bit*(如bit0、bit1…)的形式,但描述數(shù)據(jù)的時候則常常采用d*(如d0、d1…)的形式,實際上是同一種事物的不同表達(dá)形式。圖2-1位、字節(jié)、字、存儲單元及地址的描述在8位機(jī)中,總線是8位的,存儲單元的接口常常也是8位的,所以Byte成為了51(52)單片機(jī)的基本訪問單元。為了能夠識別不同的字節(jié),單片機(jī)給每個字節(jié)都有一個編號,如圖2-1所示,最開始的單元的編號為0000H,下一個單元的編號為0001H,依次類推。每一個字節(jié)的編號都是唯一的,這個唯一的編號稱為該字節(jié)的地址。單片機(jī)對某一個字節(jié)的訪問是靠地址實現(xiàn)的,一個地址對應(yīng)一個字節(jié),或者說,一個地址指向一個字節(jié)。在C程序中,根據(jù)這個意思定義了指向存儲單元的指針(實際上就是這里講的地址)和存放指針的指針變量。當(dāng)然,要深入理解這些定義,需先學(xué)好匯編語言,以后學(xué)習(xí)C程序的時候就可以得心應(yīng)手了。地址的編號范圍或者編碼范圍稱為地址空間,也就是單片機(jī)的尋址空間。16bit地址的尋址空間為64KB,即0000H~0FFFFH。本書中的表達(dá)習(xí)慣是:在字節(jié)中,最高位在左,最低位在右;在存儲單元中,低地址字節(jié)在下,高地址字節(jié)在上。2.1.28051存儲器的分配

51單片機(jī)的存儲器組織結(jié)構(gòu)采用的是哈佛(Harvard)結(jié)構(gòu),即將程序存儲器與數(shù)據(jù)存儲器分開,各自有獨立的尋址方式和控制系統(tǒng)。在物理結(jié)構(gòu)上,51單片機(jī)有4個獨立的存儲空間,它們分別是片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器,并且地址空間有部分重疊,如圖2-2所示。在讀寫邏輯上,51單片機(jī)具有3個邏輯空間,分別是:

(1)片內(nèi)、外統(tǒng)一編址的64KBROM/FLASH程序存儲器空間(0000H~FFFFH)。

(2)片內(nèi)256BRAM內(nèi)部數(shù)據(jù)存儲器空間(00H~FFH)。

(3)片外64KBRAM外部數(shù)據(jù)存儲器空間(0000H~FFFFH)。圖2-28051存儲器的分配2.1.3程序存儲器空間設(shè)計人員編寫的程序就存放在單片機(jī)的程序存儲器中,又稱為“只讀存儲器”(ReadonlyMemory,ROM)。現(xiàn)在實際使用的大部分程序存儲器為FLASH存儲器,但在描述時習(xí)慣使用ROM。很多開發(fā)平臺具有仿真功能,如果不把程序?qū)懭氲匠绦虼鎯ζ?,那么在單片機(jī)離開仿真環(huán)境后,程序便會失效。只有寫入程序存儲器的程序,才可以自動被單片機(jī)實際運行。

51系列單片機(jī)具有64KB程序存儲器的尋址空間,?這64KB的地址空間是統(tǒng)一編址的,沒有采用片內(nèi)、片外區(qū)分方式。區(qū)分片內(nèi)、片外是由引腳上的電平來指示的。

=1,即接高電平時,CPU從片內(nèi)的程序存儲器中讀取程序,當(dāng)程序計數(shù)器PC值超過片內(nèi)ROM的容量時,才會轉(zhuǎn)向外部的程序存儲器讀取程序。

=0,即接低電平時,CPU從片外的程序存儲器中讀取程序,并輸出選通信號。此時,無論CPU內(nèi)部是否有ROM,都不會被訪問。對于8031或8032等沒有內(nèi)部ROM的單片機(jī),一定要使用外部程序存儲器,所以其引腳必須接地。程序存儲器由16位的程序計數(shù)器指示當(dāng)前地址。片內(nèi)ROM的地址范圍為0000H~0FFFH。單片機(jī)啟動復(fù)位后,程序計數(shù)器的內(nèi)容為0000H,系統(tǒng)將從0000H單元開始執(zhí)行程序。訪問時使用MOVC指令。程序存儲器的0003H~0032H,共48B存儲單元,被保留專門用于中斷處理程序,稱為中斷矢量區(qū),系統(tǒng)應(yīng)盡量避免使用這一區(qū)域。程序存儲器的結(jié)構(gòu)如圖2-3所示。

0000H~0002H:系統(tǒng)復(fù)位后,PC為0000H,單片機(jī)從0000H單元開始執(zhí)行程序。如果程序不從0000H單元開始執(zhí)行,則應(yīng)在這3個單元中存放一條無條件轉(zhuǎn)移指令,讓系統(tǒng)跳過這一區(qū)域,直接去執(zhí)行用戶指定的程序,如:LJMPMAIN。

0003H~0032H:這48個單元各有用途,被均勻地分為6段,每一段占用8個字節(jié)。其定義如表2-1所示。圖2-3程序存儲器的結(jié)構(gòu)表2-1程序存儲器中特殊定義的存儲空間以上地址單元是專門用于存放中斷處理程序的。這些地址單元不能用于存放程序的其他內(nèi)容,只能存放中斷向量。中斷響應(yīng)后,按中斷的類型自動轉(zhuǎn)到各自的中斷服務(wù)區(qū)去執(zhí)行中斷服務(wù)程序。一般在中斷響應(yīng)的地址區(qū)存放一條無條件轉(zhuǎn)移指令,指向程序存儲器真正存放中斷服務(wù)程序的空間。這樣中斷響應(yīng)后,CPU讀到這條轉(zhuǎn)移指令,便轉(zhuǎn)向真正存放中斷服務(wù)程序的空間,繼續(xù)執(zhí)行中斷服務(wù)程序。2.1.4外部數(shù)據(jù)存儲器數(shù)據(jù)存儲器也稱為“隨機(jī)讀寫存儲器”(RandomAccessMemory,RAM)。51系列單片機(jī)的數(shù)據(jù)存儲器在物理邏輯上分為兩個地址空間,即片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。

8051的外部數(shù)據(jù)存儲器的存取只能通過MOVX指令來執(zhí)行,當(dāng)系統(tǒng)擴(kuò)充的外部存儲器不大時,可以使用下列指令:

MOVX A,@Ri

MOVX @Ri,A此時Ri寄存器中存放的是8位的外部存儲器的地址值,其訪問空間是256B。因此要擴(kuò)充空間的話,這個指令意義不大。當(dāng)系統(tǒng)擴(kuò)充的外部存儲器較大時,可使用下列指令:

MOVX @DPTR,A

MOVX A,@DPTR這兩條指令都是通過16位的DPTR指針對外部數(shù)據(jù)存儲器進(jìn)行存取操作,DPTR中必須事先設(shè)置外部數(shù)據(jù)存儲器的地址值。因此,對外部數(shù)據(jù)存儲器讀寫的格式就成為:

MOV DPTR,#DATA16 ;設(shè)置外部數(shù)據(jù)存儲器的地址

MOVX A,@DPTR ;從外部數(shù)據(jù)存儲器DPTR對應(yīng)的 ;地址中讀取一個字節(jié)到A或者

MOV DPTR,#DATA16;設(shè)置外部數(shù)據(jù)存儲器的地址

MOVX @DPTR,A ;將A值寫入到外部數(shù)據(jù)存儲器DPTR對應(yīng)的存儲單元中去2.1.5內(nèi)部數(shù)據(jù)存儲器

8051的內(nèi)部RAM共有256B,通常這些單元按照其功能被劃分為兩部分:

低128B單元(單元地址:00H~7FH);

高128B單元(單元地址:80H~FFH)。

1.低128B單元這部分結(jié)構(gòu)如圖2-4(a)所示。它由工作寄存器區(qū)、位尋址區(qū)、用戶RAM區(qū)三部分組成,不同的地址區(qū)域內(nèi),功能和操作不完全相同。單片機(jī)內(nèi)部數(shù)據(jù)存儲器的特點之一是工作寄存器和數(shù)據(jù)存儲器是統(tǒng)一編址的。內(nèi)部RAM的00~1FH為工作寄存器區(qū),共分4個組,每組有8個工作寄存器R0~R7,共32個內(nèi)部RAM單元。在任一時刻,CPU只能使用其中一組寄存器,并且把正在使用的那組寄存器稱之為當(dāng)前寄存器組。當(dāng)前程序使用的工作寄存器組是由程序狀態(tài)字PSW中的RS1(PSW.4)和RS0(PSW.3)兩位來決定的,用戶可以通過指令改變PSW中的RS1和RS0來切換當(dāng)前工作寄存器組。這種功能給用戶程序保護(hù)寄存器內(nèi)容提供了極大的方便,在進(jìn)行程序設(shè)計時非常有用。PSW狀態(tài)寄存器的狀態(tài)和工作寄存器組的對應(yīng)關(guān)系如圖2-4(b)所示。CPU通過修改PSW中RS1和RS0兩位的狀態(tài),就能選擇一個工作寄存器組作為當(dāng)前工作寄存器組。這個特點使MCS-51具有快速保護(hù)現(xiàn)場的功能,對提高程序的效率和響應(yīng)中斷的速度是很有利的。若程序中并不需要4個工作寄存器組,那么剩下的工作寄存器組所對應(yīng)的單元也可作為一般的數(shù)據(jù)緩沖區(qū)使用。內(nèi)部RAM的20H~2FH單元為位尋址區(qū)。這16個單元的每一位都有一個8位的地址,位地址范圍為00H~7FH。位尋址區(qū)的每一位都可以當(dāng)作軟件觸發(fā)器,由程序直接進(jìn)行位處理。在進(jìn)行程序設(shè)計時,通常把各種程序狀態(tài)標(biāo)志、位控制變量設(shè)在位尋址區(qū)內(nèi)。同樣,位尋址區(qū)的RAM單元也可以做一般的數(shù)據(jù)緩沖器使用。圖2-4內(nèi)部數(shù)據(jù)存儲器的分配及功能定義在用戶進(jìn)行實際的程序設(shè)計時,往往需要一個后進(jìn)先出(LastInFirstOut,LIFO)的RAM區(qū),以保存CPU的現(xiàn)場。這種后進(jìn)先出的緩沖區(qū)稱為堆棧。SP是堆棧寄存器。MCS-51單片機(jī)的堆棧原則上可以設(shè)在內(nèi)部RAM的任意區(qū)域內(nèi),但一般設(shè)在30H~7FH的范圍內(nèi),棧頂?shù)奈恢糜蓷V羔楽P指出。低128B數(shù)據(jù)存儲器的操作是指令系統(tǒng)中最頻繁的操作。其特點是:片內(nèi)存儲器中任一單元都可以作為直接地址(Direct)或間接地址(@Ri,i=0,1)的形式參與尋址。低128B的間接尋址是通過工作寄存器R0、R1進(jìn)行的,標(biāo)記為:@Ri。

2.高128B單元我們常常把這一部分稱為特殊功能寄存器區(qū)(SpecialFunctionRegister,SFR)。這個時候,內(nèi)部數(shù)據(jù)存儲器專指低128B單元。特殊功能寄存器是用來對片內(nèi)各功能模塊進(jìn)行管理、控制、監(jiān)視的控制寄存器和狀態(tài)寄存器,是一個特殊功能的RAM區(qū)。MCS—51單片機(jī)片內(nèi)的I/O口鎖存器、定時器、串行口緩沖器以及各種控制寄存器和狀態(tài)寄存器都以特殊功能寄存器的形式出現(xiàn),它們位于片內(nèi)數(shù)據(jù)存儲器的高128B單元中,離散地分布在80H~FFH的地址空間范圍內(nèi)。特殊功能寄存器的總數(shù)為26個,其中12個可以位尋址。用戶通過位功能標(biāo)記可以對這12個寄存器的任一有效位進(jìn)行操作。此外,還有5個是8052/8032所特有的,8051/8751/8031無定義。對于無定義的字節(jié)地址單元,用戶不能做寄存器使用。若訪問沒有定義的單元,則將得到一個不確定的隨機(jī)數(shù)。特殊功能寄存器的名稱、地址、符號標(biāo)記、可以位尋址的位地址及位功能標(biāo)記等如圖2-4(c)所示。

3.部分寄存器簡介

1)程序計數(shù)器(ProgramCounter,PC)

PC是一個16位的計數(shù)器。其內(nèi)容為將要執(zhí)行的指令地址,尋址范圍達(dá)64KB。PC有自動加1的功能,以實現(xiàn)程序的順序執(zhí)行。PC在物理上是獨立的,不屬于SFR,沒有地址,因而是不可尋址的,用戶無法對它進(jìn)行讀寫。但可以通過轉(zhuǎn)移、調(diào)用、返回等指令來改變PC的內(nèi)容,以實現(xiàn)程序的轉(zhuǎn)移。

2)累加器(Accumulator,A或者Acc)累加器為8位寄存器,是最常用的專用寄存器,其功能較多,地位重要。它既可用于存放操作數(shù),也可用來存放運算的中間結(jié)果。MCS—51單片機(jī)的大部分單操作數(shù)指令的操作數(shù)就取自累加器,許多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。

3)?B寄存器

B寄存器是一個8位寄存器,主要用于乘、除運算。乘法運算時,B是乘數(shù),乘法操作后,乘積的高8位存放于B中。除法運算中,B是除數(shù),除法操作后,余數(shù)存放于B中。此外,B寄存器也可作為一般數(shù)據(jù)存儲器使用。

4)程序狀態(tài)字(ProgramStatusWord,PSW)程序狀態(tài)字是一個8位寄存器,用于寄存程序運行的狀態(tài)信息。其中有些位的狀態(tài)是根據(jù)程序執(zhí)行結(jié)果,由硬件自動設(shè)置的,而有些位的狀態(tài)由軟件設(shè)定。PSW的位狀態(tài)可以用專門的指令進(jìn)行測試,也可以用指令讀出。一些條件轉(zhuǎn)移指令將根據(jù)PSW有關(guān)位的狀態(tài),進(jìn)行程序轉(zhuǎn)移。PSW各位的定義如圖2-5所示。圖2-5PSW各位的定義

CY:進(jìn)位標(biāo)志位。如果指令運算結(jié)果高位產(chǎn)生進(jìn)位或借位,則CY被置為“1”,否則為“0”。它在位處理指令中作位累加器用,所以又稱它為“布爾累加器”。

AC:輔助進(jìn)位標(biāo)志位。根據(jù)指令運算結(jié)果的低4位(判斷D3)有無向高4位(判斷D4)進(jìn)位或借位,來進(jìn)行置位。如果有進(jìn)位或借位,則置AC為“1”,否則為“0”。AC也常稱為半字節(jié)進(jìn)位標(biāo)志位,常用于BCD碼調(diào)整。

F0:用戶標(biāo)志位。該標(biāo)志位不是在指令執(zhí)行過程中自動形成的,而是由用戶根據(jù)需要通過傳送指令設(shè)置的。該標(biāo)志位可用于決定用戶程序的走向。

RS1和RS0:工作寄存器組選擇標(biāo)志位。該標(biāo)志位用于選擇當(dāng)前工作寄存器組。每個寄存器組由8個8位寄存器(R0~R7)組成,通過改變RS1和RS0,可以決定當(dāng)前寄存器的實際物理地址。該標(biāo)志位與寄存器組的選擇對應(yīng)關(guān)系如圖2-4(b)所示。

OV:溢出標(biāo)志位。當(dāng)運算結(jié)果的絕對值超過允許的最大值時,就會產(chǎn)生溢出。在程序執(zhí)行過程中,由硬件自動對該標(biāo)志位設(shè)置。當(dāng)運算結(jié)果的A7或者A6中有一位產(chǎn)生進(jìn)位或者借位時,OV位自動置“1”,否則置“0”。其邏輯表達(dá)式為:。

—:保留位,無定義,用戶不能使用。

P:奇偶校驗標(biāo)志位。邏輯運算后,若運算結(jié)果中1的個數(shù)為奇數(shù),則P位自動置“1”,否則置“0”。

5)堆棧指針(StackPointer,SP)堆棧是一種數(shù)據(jù)結(jié)構(gòu),是只允許在其一端進(jìn)行數(shù)據(jù)刪除操作的線性表。數(shù)據(jù)寫入堆棧稱為入棧。數(shù)據(jù)從堆棧中讀出稱為出棧。堆棧操作時采取“后進(jìn)先出”的操作規(guī)則,英文縮寫為LIFO(Lasst-In,F(xiàn)irstOut)。這里所說的進(jìn)與出就是數(shù)據(jù)的入棧與出棧,即先入棧的數(shù)據(jù)由于存放在棧的底部,因此后出棧;而后入棧的數(shù)據(jù)存放在棧的頂部,因此先出棧。

(1)堆棧的功能。堆棧是為子程序調(diào)用和中斷操作而設(shè)立的。其具體功能有兩個:保護(hù)斷點和保護(hù)現(xiàn)場。在計算機(jī)中無論是執(zhí)行子程序或中斷操作,最終都要返回主程序。因此在計算機(jī)轉(zhuǎn)去執(zhí)行子程序或中斷服務(wù)之前,必須考慮其返回問題。為此,應(yīng)預(yù)先把主程序的斷點保護(hù)起來,為程序的返回做準(zhǔn)備。計算機(jī)在轉(zhuǎn)去執(zhí)行子程序或中斷服務(wù)程序后,很可能要使用單片機(jī)中的某些寄存單元,這樣就會破壞這些寄存單元的原有內(nèi)容。為了既能在子程序或中斷服務(wù)程序中使用這些寄存單元,又能保證在返回主程序之后恢復(fù)這些寄存單元的原有內(nèi)容,在轉(zhuǎn)去執(zhí)行中斷服務(wù)程序之前要將單片機(jī)中各有關(guān)寄存單元的內(nèi)容保存起來,這就是現(xiàn)場保護(hù)。斷點和現(xiàn)場內(nèi)容保存在哪兒呢?堆棧中。可見,堆棧主要是為中斷服務(wù)操作和子程序調(diào)用而設(shè)立的。為了使計算機(jī)能進(jìn)行多級中斷嵌套及多重子程序嵌套,還要求堆棧具有足夠的容量(或者說堆棧深度)。該功能對于單片機(jī)和計算機(jī)都是一樣的。

(2)堆棧操作。堆棧共有兩種操作:入棧和出棧,如圖2-6所示。出棧是入棧的逆過程。數(shù)據(jù)入棧時,SP自動增1,將數(shù)據(jù)壓入SP所指向的堆棧單元;出棧時,將SP所指向的堆棧單元內(nèi)的數(shù)據(jù)推出棧,然后SP自動減1。棧底是指單片機(jī)初始化SP后,SP所指向的存儲單元;棧頂則是單片機(jī)進(jìn)行堆棧操作時,SP所指向的存儲單元。SP總是指向棧頂,SP的值就是堆棧棧頂?shù)拇鎯卧刂?。隨著出、入棧的操作,棧頂?shù)奈恢靡搽S之改變,所以SP是動態(tài)變化的。當(dāng)棧頂和棧底重合時,堆棧為空。單片機(jī)系統(tǒng)本身并不判斷棧頂?shù)奈恢?,所以要由程序設(shè)計者編程判斷堆棧是否為空。初學(xué)者在進(jìn)行堆棧操作時,可以采用入棧次數(shù)和出棧次數(shù)對等原則,這樣不用再編程判斷堆棧是否為空了。在系統(tǒng)復(fù)位后,棧指針SP的初始值為07H,即為棧底,這樣就與工作寄存器區(qū)域重疊,必須重新定義SP。由內(nèi)部存儲器結(jié)構(gòu)圖可知,最好把SP的值初始化為30H以后。SP的初始值一旦確定,堆棧的位置也就確定下來。由于SP可初始化為不同值,因此堆棧位置是浮動的。圖2-6入棧過程演示

6)數(shù)據(jù)指針(DPTR)數(shù)據(jù)指針(DPTR)是一個16位寄存器,由8位寄存器DPH和DPL組合而成。其中,DPH為DPTR的高8位,DPL為DPTR的低8位。它既可作為16位數(shù)據(jù)指針用,也可以分開作為兩個8位寄存器(DPH、DPL)單獨使用。DPTR可以用來存放片內(nèi)ROM的地址,也可用來存放片外RAM和片外ROM的地址。

AT89S52設(shè)有2個DPTR,分別為DP0(DP0H、DP0L)和DP1(DP1H、DP1L),通過特殊功能寄存器AUXR1的DPS位對其進(jìn)行設(shè)置選擇。當(dāng)DPS?=?0時,選擇DP0,否則選擇DP1。2.2尋址方式在指令系統(tǒng)中,操作數(shù)是一個重要的組成部分,它指出運算或操作中的數(shù)據(jù)或數(shù)據(jù)所在單元的地址。一般來說,單片機(jī)CPU在規(guī)定的尋址空間快速獲得操作數(shù)的方式稱為尋址方式。尋址方式越豐富,程序設(shè)計越方便,在某些時候可以提高程序的執(zhí)行速度;但是也將導(dǎo)致指令系統(tǒng)越復(fù)雜,給程序的學(xué)習(xí)帶來不便。

51系列單片機(jī)的指令系統(tǒng)中提供了7種尋址方式,這是單片機(jī)匯編語言程序設(shè)計的基礎(chǔ)。下面分別介紹這幾種尋址方式。2.2.1立即尋址當(dāng)指令中的源操作數(shù)為常數(shù)時,操作碼與操作數(shù)一起存放在程序存儲器中,即操作數(shù)存放的單元緊跟在操作碼存放的單元之后。在取指令時,直接從程序存儲器中取得該操作數(shù)。這種尋址方式稱為立即尋址。通常把出現(xiàn)在指令中的操作數(shù)稱為立即數(shù),并用“#”符號予以標(biāo)記,以說明是立即進(jìn)行操作的數(shù),而非地址。例如:MOVA,#48H,表示將常數(shù)48H送入累加器A,執(zhí)行過程如圖2-7所示。從該圖可以看出,MOVA,#48H是一條雙字節(jié)指令,74H是操作碼,48H是操作數(shù),緊跟操作碼之后。圖2-7立即尋址方式(8位立即數(shù))另外,立即數(shù)可以是8位的,也可以是16位的。例如:MOVDPTR,#1234H,其中,“1234H”為16位立即數(shù),該指令將立即數(shù)的高8位12H送入DPH,將低8位34H送入DPL。該指令的操作碼是90H,操作數(shù)是1234H。其執(zhí)行過程如圖2-8所示。從該圖可以看出,這條指令是3字節(jié)指令。由于立即數(shù)存放在程序存儲器中,不占用數(shù)據(jù)存儲空間,因此只能作為源操作數(shù)。下面給出查看指令的機(jī)器碼和字節(jié)數(shù)等匯編代碼的方法。前面已經(jīng)說明我們要使用的環(huán)境是μV3,并且已經(jīng)做了介紹。要查看某條指令的機(jī)器代碼和編碼形式,可先編寫一個簡單的程序,包含你要查看的指令;編譯成功后,啟動調(diào)試(,找到這個工具,點擊);然后在菜單“View”中找到“DisassemblyWindow”選項,如圖2-9所示;這個時候就可以根據(jù)設(shè)定的地址找到相關(guān)的指令,如圖2-10所示。建議讀者采用這種方法來觀察和研究指令,這對深入學(xué)習(xí)匯編指令很有幫助。圖2-8立即尋址方式(16位立即數(shù))圖2-9設(shè)置反匯編窗口顯示圖2-10觀察指令代碼2.2.2直接尋址直接尋址方式就是在指令中直接給出操作數(shù)的地址。此時,指令的操作數(shù)部分就是操作數(shù)所存放的地址。這里給出的操作數(shù)地址為8位二進(jìn)制地址。例如:MOVA,48H,操作過程如圖2-11所示。其中,“48H”表示直接地址。該指令的功能是把內(nèi)部RAM地址為48H中的內(nèi)容5DH傳送給累加器A。指令的操作碼是E5H。利用直接尋址方式可尋址的存儲空間為:

內(nèi)部RAM低128B,在指令中直接地址以單元地址的形式給出。

對于特殊功能寄存器,其直接地址還可以用特殊功能寄存器的符號名稱來表示。如對累加器A,在指令中可以使用其直接地址0E0H,也可使用其符號形式A。需特別強(qiáng)調(diào)的是,直接尋址方式是訪問特殊功能寄存器的唯一方法。圖2-11直接尋址方式示意2.2.3寄存器尋址寄存器尋址方式是由指令給出某一寄存器,將該寄存器的內(nèi)容作為操作數(shù)。寄存器尋址方式可用于訪問選定的當(dāng)前工作寄存器組R0~R7以及某些特殊功能寄存器,如A、B、DPTR等。值得注意的是,工作寄存器有四組共32個寄存器,在指令中只能使用當(dāng)前工作寄存器組中的寄存器。因此,使用前需通過對PSW寄存器RS1、RS0位的設(shè)置來選擇當(dāng)前工作寄存器組,默認(rèn)選擇為0組。例如:MOVA,R1,其執(zhí)行過程如圖2-12所示。該指令將寄存器R1中的內(nèi)容48H傳送到累加器A中。指令的操作碼和操作數(shù)放在同一個字節(jié)中,因而是單字節(jié)指令。寄存器在單片機(jī)內(nèi)部,因此采用寄存器尋址方式,程序執(zhí)行的速度比其它幾種尋址方式要快,使程序具有較高的處理速度。圖2-12寄存器尋址方式示意圖2.2.4寄存器間接尋址寄存器間接尋址方式是由指令給出某一個寄存器,該寄存器的內(nèi)容作為操作數(shù)的地址。在這種尋址方式中,存放在寄存器中的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲單元的地址。寄存器間接尋址需要在寄存器的前面加上“@”,以區(qū)分寄存器尋址和寄存器間接尋址。例如:MOVA,@R1,其執(zhí)行過程如圖2-13所示。這條指令的功能是把R1寄存器中的內(nèi)容作為地址所指向的存儲單元的內(nèi)容傳送給A。該指令為單字節(jié)指令,操作碼為E7H。寄存器間接尋址方式可以訪問的存儲空間有如下幾種情況:

內(nèi)部RAM低128B單元,可以采用R0、R1作為間接尋址的寄存器。圖2-13寄存器間接尋址方式示意圖

內(nèi)部RAM高128B單元(8052/32才有),只能使用R0、R1作為間接尋址寄存器進(jìn)行間接尋址。

外部RAM。這里有兩種形式:一是采用R0、R1作為間接尋址的寄存器,可尋址256個單元;二是采用16位的DPTR作為間接尋址的寄存器,可尋址外部RAM的完整64KB地址空間。2.2.5基址加變址尋址這種尋址方式以基址寄存器(DPTR或PC)和變址寄存器A兩者之和作為地址,來讀取程序存儲器中某個常數(shù)字節(jié)。該指令的格式有以下兩種:

MOVCA,@A+PC該指令以PC作為基址寄存器,A的內(nèi)容作為無符號整數(shù)和PC的內(nèi)容(下一條指令的起始地址)相加得到一個16位的地址,將該地址指向的程序存儲器單元的內(nèi)容送到累加器A中。指令執(zhí)行過程如圖2-14所示。圖2-14基址加變址尋址方式(PC作基址)該指令為單字節(jié)指令,不需改變特殊功能寄存器及PC的狀態(tài),根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。但該指令所查詢內(nèi)容只能存放在其后面的256個單元之內(nèi),查詢的范圍受到限制,因而被查詢的內(nèi)容常常只能被一段程序所利用。

MOVCA,@A+DPTR該指令以DPTR作為基址寄存器,A的內(nèi)容作為無符號數(shù)和DPTR的內(nèi)容相加得到一個16位地址,將該地址指出的程序存儲器單元的內(nèi)容送到累加器A。執(zhí)行過程如圖2-15所示。該指令也是單字節(jié)指令。基址加變址尋址方式為查表操作提供了極大的方便。該指令的執(zhí)行結(jié)果只和DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址及常數(shù)表格存放的地址無關(guān),因此表格的大小和位置可以在64KB程序存儲器中任意安排,表格的內(nèi)容可以為各程序塊公用。圖2-15基址加變址尋址方式(DPTR作基址)2.2.6相對尋址相對尋址方式是將計數(shù)器PC中的當(dāng)前值與指令第二字節(jié)給出的數(shù)相加,結(jié)果作為轉(zhuǎn)移指令的轉(zhuǎn)移地址。轉(zhuǎn)移地址也稱為轉(zhuǎn)移目的地址;PC中的當(dāng)前值稱為基地址;指令第二字節(jié)給出的數(shù)稱為偏移量。由于目的地址是相對于PC中的基地址而言的,因而這種尋址方式稱為相對尋址。偏移量為帶符號的數(shù),所能表示的范圍為?-128~+127。這種尋址方式主要用于轉(zhuǎn)移指令。例如:SJMPD7H,其執(zhí)行過程如圖2-16所示。當(dāng)前指令地址為0097H,80H為操作碼,D7H為補(bǔ)碼表示的操作數(shù)(rel),當(dāng)前PC值為0099H(該指令為雙字節(jié)指令),因此得到的新的跳轉(zhuǎn)地址為0099H?+?0FFD7H?=?0070H?(16bit地址)圖2-16相對尋址方式2.2.7位尋址

51系列單片機(jī)內(nèi)部RAM中有兩個區(qū)域可以位尋址:

單片機(jī)RAM的20H~2FH單元,是可位尋址區(qū)域,共16×8=128位。

字節(jié)地址能被8整除的特殊功能寄存器的相應(yīng)位。51系列單片機(jī)有位處理功能,可對尋址的位進(jìn)行操作,由此產(chǎn)生了位尋址方式。這種尋址方式在指令的操作數(shù)位置上直接給出位地址,例如:

MOVC,2AH.3該指令的功能是把地址2AH中的第4位D3,即2AH.3的值傳送到位累加器CY中。其執(zhí)行過程如圖2-17所示。圖2-17位尋址方式示意圖在51系列單片機(jī)的指令系統(tǒng)中,位地址的表示可以采用以下幾種方式:

直接使用位地址。單片機(jī)內(nèi)部RAM的可位尋址區(qū)為20H~2FH,共16個單元,16×8=128位,其位地址為00H~7FH。例如,24H單元的0~7位的位地址為20H~27H。

用RAM地址加位序號表示,如2AH.3,表示2AH單元的D3位。

對于特殊功能寄存器,其中的可尋址位均有位名稱,可以用位名稱來表示該位,如可用RS0來表示PSW中的D3位(也可以用D0H.3表示)。

對特殊功能寄存器也可以直接采用符號加位序號表示。如PSW中的D3位,可以表示為PSW.3。以上介紹了MCS-51單片機(jī)指令系統(tǒng)的7種尋址方式,可用表2-2予以概括。表2-251系列單片機(jī)尋址方式概括2.3數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是單片機(jī)工作時一種最主要的操作,數(shù)據(jù)傳送指令是編制程序中使用最頻繁的一類指令。除了可以通過累加器進(jìn)行數(shù)據(jù)傳送之外,還可以在數(shù)據(jù)存儲器之間或工作寄存器與數(shù)據(jù)存儲器之間直接進(jìn)行數(shù)據(jù)傳送。數(shù)據(jù)傳送類指令是最常用的一類指令,這類指令一般是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)修改為源操作數(shù)。數(shù)據(jù)傳送類指令一般不影響標(biāo)志位(除非用POP或MOV指令將數(shù)據(jù)傳送到PSW)。數(shù)據(jù)傳送類指令主要有MOV、MOVC、MOVX、XCH、XCHD、SWAP、PUSH、POP,共8種。源操作數(shù)可以采用直接尋址、寄存器尋址、寄存器間接尋址、立即尋址、基址加變址尋址等5種尋址方式;目的操作數(shù)可以采用前3種尋址方式。表2-3列出了51系列單片機(jī)指令系統(tǒng)中全部31條數(shù)據(jù)傳送類指令。該指令的數(shù)據(jù)傳送路徑如圖2-18所示。仔細(xì)對比傳送路徑,然后對比表2-3中的指令,這對于理解、記憶指令尋址方式非常有益。需要注意以下事項:

如果既不包括立即數(shù),也不包括直接尋址的地址,則該指令為單字節(jié)指令;

若指令中包含直接地址或8位立即數(shù),則該指令為雙字節(jié)指令;

如果包括兩個直接地址或8位立即數(shù),則該指令為3字節(jié)指令;

以DPTR為目的操作數(shù)的數(shù)據(jù)傳送指令,為3字節(jié)指令。圖2-18數(shù)據(jù)傳送類指令的數(shù)據(jù)傳送路徑表2-351單片機(jī)數(shù)據(jù)傳送類指令下面給出部分指令的例程。

分析下面這個程序段:

MOV48H,#59H ;把立即數(shù)59H送到48H存儲單元

MOVR0,#48H ;把立即數(shù)48H送到寄存器R0中

MOVA,@R0 ;把R0中的數(shù)48H作為地址,將該地址所 ;指向的存儲單元中的數(shù)59H送給A該程序段的執(zhí)行過程如圖2-19所示。當(dāng)然,這里是舉例子。如果只是為了達(dá)到上述目的,則可以根據(jù)需要完成的具體任務(wù)進(jìn)行指令的簡化,即:

要把48H地址單元中的數(shù)據(jù)送給A,采用:

MOVA,48H

要把59H這個數(shù)據(jù)送給A,采用:

MOVA,#59H

圖2-19內(nèi)部RAM傳送類指令示例1

分析下面這個程序段:

PUSH52H ;把52H單元中的數(shù)據(jù)壓入堆棧

PUSH53H ;把53H單元中的數(shù)據(jù)壓入堆棧

POP52H ;把堆棧中的數(shù)據(jù)彈出到52H單元中

POP53H ;把堆棧中的數(shù)據(jù)彈出到53H單元中該程序段的執(zhí)行過程如圖2-20所示。上述4條指令的執(zhí)行結(jié)果是把52H、53H兩個存儲單元的數(shù)據(jù)07H、18H互換。如果僅是為了這個功能,我們還可以對其進(jìn)行如下簡化:

借助于一個中間緩沖單元:

MOVR0,52H

MOV52H,53H

MOV53H,R0圖2-20內(nèi)部RAM傳送類指令示例2

借助于A,直接使用互換指令:

MOVA,52H ;把52H單元中的數(shù)據(jù)07H送到A

XCHA,53H ;把53H單元中的數(shù)據(jù)18H與A中的數(shù)據(jù)07H交換再次強(qiáng)調(diào),完成同樣的任務(wù)可以有不同的方法,而不同的方法會占用不同的字節(jié)數(shù)和不同的執(zhí)行時間。所以在程序編制過程中,需要注意指令的選擇:在高效和精確定時的程序中,要注意不同指令執(zhí)行需要的機(jī)器周期數(shù);在強(qiáng)調(diào)存儲空間的節(jié)約和查表程序設(shè)計時,要從手冊中查找指令的字節(jié)數(shù)。2.4存儲器的擴(kuò)展存儲器的擴(kuò)展分為程序存儲器的擴(kuò)展和數(shù)據(jù)存儲器的擴(kuò)展。51系列單片機(jī)的程序?qū)ぶ房臻g為64KB,但市場上51系列單片機(jī)內(nèi)部自帶的程序存儲器空間大部分是8KBFlash,能夠滿足一般用戶的需要(有些自帶的程序存儲器空間為16KB、32KB和64KBFlash)?,F(xiàn)在程序存儲器的擴(kuò)展不是關(guān)鍵的問題,大部分用戶不用擴(kuò)展就已夠用。但是,對于數(shù)據(jù)存儲器卻依然是個關(guān)鍵問題,這一方面是因為單片機(jī)內(nèi)部的數(shù)據(jù)存儲器空間太小,另一方面是因為外部設(shè)備和外部I/O空間的擴(kuò)展都是按照外部RAM的空間范圍來訪問的。這里為了保持存儲器擴(kuò)展的完整性,分成三個部分予以介紹:程序存儲器的擴(kuò)展、數(shù)據(jù)存儲器的擴(kuò)展和存儲器空間地址的分配。2.4.1外部程序存儲器的擴(kuò)展由圖2-2已經(jīng)知道,程序存儲器的空間可以擴(kuò)展到64KB,這時需要將單片機(jī)的引腳接高電平。在程序存儲器擴(kuò)展的情況下,程序可以首先從片內(nèi)的程序存儲器開始順序執(zhí)行,當(dāng)訪問超過內(nèi)部程序存儲器空間時,單片機(jī)會自動轉(zhuǎn)向外部程序存儲器執(zhí)行程序。訪問外部程序存儲器的時序如圖2-21所示。在CPU訪問外部程序存儲器時,P0口作為地址/數(shù)據(jù)總線分時復(fù)用端口,先送出外部ROM低8位地址A0~A7,在ALE的下降沿將其鎖存到鎖存器得到PCL,P2口輸出的A8~A15不用鎖存,這樣形成的16位的PC指針便指向外部程序存儲器的相應(yīng)存儲單元,在有效后,指令就出現(xiàn)在數(shù)據(jù)總線上。在每個機(jī)器周期中,ALE信號兩次有效,每次都在其下降沿鎖存P0口的低8位地址;也兩次有效,用于將程序存儲器的內(nèi)容讀到數(shù)據(jù)總線上。由上面的分析得出兩點重要的信息:一是鎖存器的鎖存信號應(yīng)當(dāng)是ALE的下降沿;二是外部程序存儲器的地址線是鎖存器的低8位地址和P2口輸出的高8位地址的合成。下面以擴(kuò)展一片2764A(8KB的EPROM)為例,來看一下鎖存器的使用和其他信號線的連接,電路如圖2-22所示。鎖存器使用74LS373。ALE的每個下降沿把P0口輸出的8位地址鎖存到74LS373,形成低8位地址A0~A7,和P2口輸出的高5位地址(A8~A12)一起形成13位的地址,尋址2764A內(nèi)部的存儲單元。當(dāng)有效時,數(shù)據(jù)出現(xiàn)在P0口上,從而進(jìn)入內(nèi)部數(shù)據(jù)總線。如果需要擴(kuò)展更大的程序存儲器,則連接相應(yīng)的P2口線即可,最大可擴(kuò)展到64KB空間。從后面介紹的數(shù)據(jù)存儲器擴(kuò)展中,讀者可以了解到更多的地址線連接方法和空間布局的關(guān)系。圖2-21外部程序存儲器訪問時序圖2-22擴(kuò)展一片2764A2.4.2外部數(shù)據(jù)存儲器的擴(kuò)展外部數(shù)據(jù)存儲器的訪問指令為單字節(jié)雙周期MOVX類指令。其操作時序如圖2-23所示。分析時序圖可知:在第一個機(jī)器周期,用來從程序存儲器讀指令,在S4P2后,將從指令中獲得的外部RAM的地址送出。在這個周期中,ALE信號有效兩次:第一次鎖存外部程序存儲器的低8位地址,該地址來源于PCL(如果訪問的是內(nèi)部程序存儲器,則這個信號仍然出現(xiàn)),與P2口送出的PCH一起構(gòu)成16位地址;第二次鎖存外部數(shù)據(jù)存儲器的低8位地址,該地址來源于Ri(操作數(shù)為@Ri)或DPL(操作數(shù)為@DPTR),與P2輸出的高8位一起形成16位地址。在第二個機(jī)器周期,ALE的第一個有效信號不再出現(xiàn),而讀信號有效,從而把外部RAM中的數(shù)據(jù)送到P0口,進(jìn)入到單片機(jī)內(nèi)部數(shù)據(jù)總線。如果是寫信號有效,則把P0口送出的數(shù)據(jù)寫入外部RAM。該周期的第二個ALE仍然有效,沒有操作進(jìn)行??梢钥闯觯盘栔粚υL問程序存儲器有用,而在訪問外部數(shù)據(jù)存儲器時不起作用。由此可以得到擴(kuò)展外部數(shù)據(jù)存儲器的幾個信息:一是數(shù)據(jù)存儲器擴(kuò)展中仍然要把地址的低8位進(jìn)行鎖存,其鎖存原理與上面程序存儲器擴(kuò)展的一樣;二是數(shù)據(jù)存儲器擴(kuò)展中控制信號只使用、,而沒有使用,所以數(shù)據(jù)存儲器與程序存儲器地址可以完全重疊,都是64KB的訪問空間,而不會產(chǎn)生沖突(但是數(shù)據(jù)存儲器與I/O口及外圍設(shè)備是統(tǒng)一編址的,即任何擴(kuò)展的I/O口以及外圍設(shè)備均占用數(shù)據(jù)存儲器地址)。圖2-24所示為擴(kuò)展一片6116靜態(tài)RAM的電路圖。圖2-23外部數(shù)據(jù)存儲器訪問時序圖2-24擴(kuò)展一片6116靜態(tài)RAM的電路圖

6116是2KB?×?8位的靜態(tài)RAM。A0~A10為地址線,I/O0~I(xiàn)/O7為雙向數(shù)據(jù)線;是寫允許;是讀允許;是片選信號。它們之間的邏輯關(guān)系如表2-4所示。

P2.7連接6116的片選端,如要選中該芯片進(jìn)行操作,則P2.7要置0;不訪問該芯片時,P2.7要置1。因此,該芯片的地址空間為0****00000000000B~0****11111111111B。2.4.3節(jié)會作進(jìn)一步解釋。分析下面的程序段:

MOVDPTR,#7132H ;給DPTR賦值7132H

MOVXA,#DPTR ;讀外部數(shù)據(jù)存儲器0132H單元的內(nèi)容到A

SWAPA ;把累加器A半字節(jié)交換

MOVX@DPTR,A ;再把A中的數(shù)據(jù)送到外部數(shù)據(jù)存儲器;0132H單元中整體完成的功能就是把 ;外部數(shù)據(jù)存儲器0132H單元的內(nèi)容進(jìn)行;了半字節(jié)交換表2-46116控制信號間的邏輯關(guān)系2.4.3存儲器空間地址的分配在單片機(jī)的實際應(yīng)用中,往往既要擴(kuò)展程序存儲器,又要擴(kuò)展數(shù)據(jù)存儲器,還要擴(kuò)展I/O設(shè)備,或者是它們的某種組合。所有的外圍芯片或設(shè)備都可以通過總線與單片機(jī)相連,但是它們不能同時有效。在MCU的控制下,在同一個時刻,只能有一個設(shè)備的數(shù)據(jù)出現(xiàn)在總線上,這樣才可以避免沖突。所以,單片機(jī)要在多個芯片或設(shè)備之間進(jìn)行切換。這樣就需要進(jìn)行兩種選擇:選擇哪個芯片或者設(shè)備進(jìn)行工作,稱之為片選;選擇該芯片或者設(shè)備的哪個單元進(jìn)行訪問,稱之為字選。片選和字選都會對該設(shè)備的訪問入口地址和空間造成影響。存儲器的擴(kuò)展方式如圖2-25所示。下面詳細(xì)分析這些影響。

(1)擴(kuò)展4片6116,?前兩片對應(yīng)的片選控制線為P2.3、P2.4。?當(dāng)P2.3為0時,選中6116(1)進(jìn)行訪問(讀或?qū)?;當(dāng)P2.4為0時,選中6116(2)進(jìn)行訪問??梢钥闯觯恳桓刂肪€單獨控制一個芯片的選擇。這種選擇芯片(片選)的方法稱為線選法。地址線A10~A0用于字選,尋址對應(yīng)6116內(nèi)部的2KB的存儲空間。6116(3)、6116(4)的片選線來源于74LS138譯碼后的、。另外,單片機(jī)外部擴(kuò)展設(shè)備8279、8255A的片選信號也來源于74LS138。這4個設(shè)備的片選信號是P2.5、P2.6兩位經(jīng)過74LS138譯碼后產(chǎn)生的,這種片選方式稱為譯碼法。片選、字選和設(shè)備的對應(yīng)關(guān)系如表2-5所示。圖2-25存儲器的擴(kuò)展方式表2-5片選、字選和設(shè)備的對應(yīng)關(guān)系

可以看出,單片機(jī)發(fā)出的16位地址里面既包含了片選信號,也包含了字選信號。在任一時刻,只有一個設(shè)備的片選信號有效,否則會導(dǎo)致沖突,發(fā)生錯誤。比如,當(dāng)A12為0時,選中6116(2),占用數(shù)據(jù)總線進(jìn)行訪問。但是如果A15、A14、A13同時為011,也就是同時選中了芯片8255A,這個時候總線(D7~D0)既與8255A連通,也與6116(2)連通,發(fā)生了沖突。這種情況必須避免發(fā)生。

“*”可以為0,也可以為1,一般推薦使用1。

(2)線選法的優(yōu)點是硬件電路結(jié)構(gòu)簡單,但一線只能控制一個設(shè)備,會造成資源浪費;而且,由于片選使用的地址線都是高位地址線(為什么?自己研究一下),權(quán)重較大,地址空間會有跳躍。系統(tǒng)中擴(kuò)展的存儲器或者外圍設(shè)備較少使用這種方法。譯碼法的優(yōu)點是地址線的利用率較高,對應(yīng)的各個設(shè)備的地址空間是連續(xù)的,因此把這種方法稱為全地址譯碼法(但這種方法會增加硬件開銷)。系統(tǒng)中需要擴(kuò)展的設(shè)備較多時,常選用這種方法。地址空間的連續(xù)與跳躍的分析如圖2-26所示。P2.3片選6116(1),2KB的空間,P2.4片選6116(2),也是2KB的空間,上面的這兩個2KB是連續(xù)分布的。但是,如果使用的片選線繼續(xù)向上端靠近,則開始出現(xiàn)跳躍。如使用P2.4片選6116(1),P2.5片選6116(2),這個時候兩個芯片的控制地址之間出現(xiàn)2KB的地址空間的跳躍。另外,如表2-5所示,里面的“*”可以為0,也可以為1,所以在這個段上,地址就出現(xiàn)了重疊,也就是說,同一個存儲單元或設(shè)備可以有不同的地址對應(yīng)。單片機(jī)編程者一定要注意空間的這個特點。圖2-26地址空間的連續(xù)與跳躍

(3)并不是每一種擴(kuò)展設(shè)備都會完全利用它所擁有的空間資源。?如8255A的空間地址范圍為7800H~7FFFH,但是事實上8255A只有4個寄存器需要尋址,其他不用的地址線置1。這樣尋址空間中只有7FFCH、7FFDH、7FFEH、7FFFH4個地址有用,分別對應(yīng)四個寄存器中的一個(同樣存在地址重疊的問題,請讀者進(jìn)一步分析)。2.5設(shè)計課目與演練——秘密存放數(shù)據(jù):數(shù)據(jù)的搬移與變換

ORG 0000H ;起始地址偽指令

LJMPSTART ;跳轉(zhuǎn)到程序代碼區(qū)

TABLE:

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論