單片機課程教案_第1頁
單片機課程教案_第2頁
單片機課程教案_第3頁
單片機課程教案_第4頁
單片機課程教案_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章單片機基本知識第一節(jié)單片機的發(fā)展與應(yīng)用一、什么是單片機單片機即單片機微型計算機,是將計算機主機(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機。二、單片機的發(fā)展第一階段(19761978年):低性能單片機的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時/計數(shù)器、并行I/O口、RAM和ROM等。主要用于工業(yè)領(lǐng)域。第二階段(19781982年):高性能單片機階段,這一類單片機帶有串行I/O口,8位數(shù)據(jù)線、16位地址線可以尋址的范圍達到64K字節(jié)、控制總線、較豐富的指令系統(tǒng)等。這類單片機的應(yīng)用范圍較廣,并在不斷的改進和發(fā)展。第三階段(1

2、9821990年):16位單片機階段。16位單片機除CPU為16位外,片內(nèi)RAM和ROM容量進一步增大,實時處理能力更強,體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內(nèi)RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8級,片內(nèi)帶有10位A/D轉(zhuǎn)換器和高速輸入/輸出部件等。第四階段(1990年):微控制器的全面發(fā)展階段,各公司的產(chǎn)品在盡量兼容的同時,向高速、強運算能力、尋址范圍大以及小型廉價方面發(fā)展。三、單片機的應(yīng)用1、單片機在儀器儀表中的應(yīng)用2、單片機在機電一體化中的應(yīng)用3、單片機在智能接口和多機系統(tǒng)中的應(yīng)用4、單片機在生活中的應(yīng)用第二節(jié)單片機結(jié)構(gòu)MCS51單

3、片機的特點特點(1)一個8位微處理器CPU。(2)數(shù)據(jù)存儲器RAM和特殊功能寄存器SFR。(3)內(nèi)部程序存儲器ROM。(4)兩個定時/計數(shù)器,用以對外部事件進行計數(shù),也可用作定時器。(5)四個8位可編程的I/O(輸入/輸出)并行端口,每個端口既可做輸入,也可做輸出。(6)一個串行端口,用于數(shù)據(jù)的串行通信。(7)中斷控制系統(tǒng)。(8)內(nèi)部時鐘電路。一、單片機內(nèi)部結(jié)構(gòu)二、CPU結(jié)構(gòu)P0P1P2P3TXDRXDINT0INT11)中央處理器(CPU)中央處理器是單片機的核心,完成運算和控制功能。MCS-51的CPU能處理8位二進制數(shù)或代碼。2)內(nèi)部數(shù)據(jù)存儲器(內(nèi)部RAM)8051芯片中共有256個RA

4、M單元,但其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲器就是指前128單元,簡稱內(nèi)部RAM。3)內(nèi)部程序存儲器(內(nèi)部ROM)8051共有4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)或表格,因此,稱之為程序存儲器,簡稱內(nèi)部ROM。4)定時/計數(shù)器8051共有兩個16位的定時/計數(shù)器,以實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機進行控制。5)并行I/O口MCS-51共有4個8位的I/O口(P0、P1、P2、P3),以實現(xiàn)數(shù)據(jù)的并行輸入/輸出。在實訓(xùn)中我們已經(jīng)使用了P1口,通過P1口連接8個發(fā)光二極管。三、單片機存儲器

5、結(jié)構(gòu)1、MCS51單片機存儲器的特點MCS-51單片機的芯片內(nèi)部有RAM和ROM兩類存儲器,即所謂的內(nèi)部RAM和內(nèi)部ROMMCS-51內(nèi)部程序存儲器MCS-51的程序存儲器用于存放編好的程序和表格常數(shù)。8051片內(nèi)有4KB的ROM,8751片內(nèi)有4KB的EPROM,8031片內(nèi)無程序存儲器。MCS-51的片外最多能擴展64KB程序存儲器,片內(nèi)外的ROM是統(tǒng)一編址的。如端保持高電平,8051的程序計數(shù)器PC在0000H0FFFH地址范圍內(nèi)(即前4KB地址)是執(zhí)行片內(nèi)ROM中的程序,當(dāng)PC在1000HFFFFH地址范圍時,自動執(zhí)行片外程序存儲器中的程序;當(dāng)保持低電平時,只能尋址外部程序存儲器,片外

6、存儲器可以從0000H開始編址。MCS-51的程序存儲器中有些單元具有特殊功能,使用時應(yīng)予以注意。其中一組特殊單元是0000H0002H。系統(tǒng)復(fù)位后,(PC)=0000H,單片機從0000H單元開始取指令執(zhí)行程序。如果程序不從0000H單元開始,應(yīng)在這三個單元中存放一條無條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)去執(zhí)行指定的程序。還有一組特殊單元是0003H002AH,共40個單元。這40個單元被均勻地分為5段,作為5個中斷源的中斷地址區(qū)。其中:0003H000AH外部中斷0中斷地址區(qū)000BH0012H定時/計數(shù)器0中斷地址區(qū)0013H001AH外部中斷1中斷地址區(qū)001BH0022H定時/計數(shù)器1中斷地址區(qū)

7、0023H002AH串行中斷地址區(qū)中斷響應(yīng)后,按中斷種類,自動轉(zhuǎn)到各中斷區(qū)的首地址去執(zhí)行程序,因此在中斷地址區(qū)中理應(yīng)存放中斷服務(wù)程序。但通常情況下,8個單元難以存下一個完整的中斷服務(wù)程序,因此通常也是從中斷地址區(qū)首地址開始存放一條無條件轉(zhuǎn)移指令,以便中斷響應(yīng)后,通過中斷地址區(qū),再轉(zhuǎn)到中斷服務(wù)程序的實際入口地址。MCS-51內(nèi)部數(shù)據(jù)存儲器內(nèi)部數(shù)據(jù)存儲器低128單元8051的內(nèi)部RAM共有256個單元,通常把這256個單元按其功能劃分為兩部分:低128單元(單元地址00H7FH)和高128單元(單元地址80HFFH)。如圖所示為低128單元的配置圖。寄存器區(qū)8051共有4組寄存器,每組8個寄存單元

8、(各為8),各組都以R0R7作寄存單元編號。寄存器常用于存放操作數(shù)中間結(jié)果等。由于它們的功能及使用不作預(yù)先規(guī)定,因此稱之為通用寄存器,有時也叫工作寄存器。4組通用寄存器占據(jù)內(nèi)部RAM的00H1FH單元地址。在任一日刻,CPU只能使用其中的一組寄存器,并且把正在使用的那組寄存器稱之為當(dāng)前寄存器組。到底是哪一組,由程序狀態(tài)字寄存器PSW中RS1、RS0位的狀態(tài)組合來決定。通用寄存器為CPU提供了就近存儲數(shù)據(jù)的便利,有利于提高單片機的運算速度。此外,使用通用寄存器還能提高程序編制的靈活性,因此,在單片機的應(yīng)80H7FH30H2FH20H1FH00H特殊功能寄存器OH訓(xùn).頻頻頻項8H0HFEDBBAA

9、9988H80H通用RAM區(qū)位尋,址區(qū)工作寄存器區(qū)內(nèi)部數(shù)據(jù)存儲器(a)特殊功能寄存器中位尋址I-A,FFFFH0000HFFFFH外部RAM(I/O口地址)外部數(shù)據(jù)存儲器(b)外部ROM1000H程序存儲器(c)用編程中應(yīng)充分利用這些寄存器,以簡化程序設(shè)計,提高程序運行速度。位尋址區(qū)內(nèi)部RAM的20H2FH單元,既可作為一般RAM單元使用,進行字節(jié)操作,也可以對單元中每一位進行位操作,因此把該區(qū)稱之為位尋址區(qū)。位尋址區(qū)共有16個RAM單元,計128位,地址為00H7FH。MCS-51具有布爾處理機功能,這個位尋址區(qū)可以構(gòu)成布爾處理機的存儲空間。這種位尋址能力是MCS-51的一個重要特點。用戶R

10、AM區(qū)在內(nèi)部RAM低128單元中,通用寄存器占去32個單元,位尋址區(qū)占去16個單元,剩下80個單元,這就是供用戶使用的一般RAM區(qū),其單元地址為30H7FH。對用戶RAM區(qū)的使用沒有任何規(guī)定或限制,但在一般應(yīng)用中常把堆棧開辟在此區(qū)中。內(nèi)部數(shù)據(jù)存儲器高128單元內(nèi)部RAM的高128單元是供給專用寄存器使用的,其單元地址為80HFFH。因這些寄存器的功能已作專門規(guī)定,故稱之為專用寄存器(SpecialFunctionRegister),也可稱為特殊功能寄存器。2、特殊功能存儲器SFR8051共有21個專用寄存器,現(xiàn)把其中部分寄存器簡單介紹如下:程序計數(shù)器(PCProgramCounter)。在實訓(xùn)

11、中,我們已經(jīng)知道PC是一個16位的計數(shù)器,它的作用是控制程序的執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令的地址,尋址范圍達64KB。PC有自動加1功能,從而實現(xiàn)程序的順序執(zhí)行。PC沒有地址,是不可尋址的,因此用戶無法對它進行讀寫,但可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以實現(xiàn)程序的轉(zhuǎn)移。因地址不在SFR(專用寄存器)之內(nèi),一般不計作專用寄存器。累加器(ACC-Accumulator)o累加器為8位寄存器,是最常用的專用寄存器,功能較多,地位重要。它既可用于存放操作數(shù),也可用來存放運算的中間結(jié)果。MCS-51單片機中大部分單操作數(shù)指令的操作數(shù)就取自累加器,許多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。B寄

12、存器。B寄存器是一個8位寄存器,主要用于乘除運算。乘法運算時,B存乘數(shù)。乘法操作后,乘積的高8位存于B中,除法運算時,B存除數(shù)。除法操作后,余數(shù)存于B中。此外,B寄存器也可作為一般數(shù)據(jù)寄存器使用。程序狀態(tài)字(PSWProgramStatusWord)。程序狀態(tài)字是一個8位寄存器,用于存放程序運行中的各種狀態(tài)信息。其中有些位的狀態(tài)是根據(jù)程序執(zhí)行結(jié)果,由硬件自動設(shè)置的,而有些位的狀態(tài)則使用軟件方法設(shè)定。PSW的位狀態(tài)可以用專門指令進行測試,也可以用指令讀出。一些條件轉(zhuǎn)移指令將根據(jù)PSW有些位的狀態(tài),進行程序轉(zhuǎn)移。PSW的各位定義如下:PSW位地D7HD6HD5HD4HD3HD2HD1H)0H字節(jié)地

13、址CYACF0RS1RS0OVF1F除PSW.1位保留未用外,其余各位的定義及使用如下:CY(PSW.7)進位標志位。CY是PSW中最常用的標志位。其功能有二:一是存放算術(shù)運算的進位標志,在進行加或減運算時,如果操作結(jié)果的最高位有進位或借位時,CY由硬件置“1;否則清"0;二是在位操作中,作累加位使用。位傳送、位與位或等位操作,操作位之一固定是進位標志位。AC(PSW.6)輔助進位標志位。在進行加減運算中,當(dāng)?shù)?位向高4位進位或借位時,AC由硬件置“1;否則AC位被清“0:在BCD碼調(diào)整中也要用到AC位狀態(tài)。F0(PSW.5)用戶標志位。這是一個供用戶定義的標志位,需要利用軟件方法置

14、位或復(fù)位,用以控制程序的轉(zhuǎn)向。RS1和RS0(PSW.4,PSW.3)寄存器組選擇位。它們被用于選擇CPU當(dāng)前使用的通用寄存器組。通用寄存器共有4組,其對應(yīng)關(guān)系如下:00:0組01:1組10:2組11:3組這兩個選擇位的狀態(tài)是由軟件設(shè)置的,被選中的寄存器組即為當(dāng)前通用寄存器組。但當(dāng)單片機上電或復(fù)位后,RS1RS0=00oOV(PSW.2)溢出標志位。在帶符號數(shù)加減運算中,OV=1表示加減運算超出了累加器A所能表示的符號數(shù)有效范圍(-128+127),即產(chǎn)生了溢出,因此運算結(jié)果是錯誤的,否則,OV=0表示運算正確,即無溢出產(chǎn)生。P(PSW.0)奇偶標志位。表明累加器A中內(nèi)容的奇偶性。如果A中有奇

15、數(shù)個"1;則P置”1;否則置“0:凡是改變累加器A中內(nèi)容的指令均會影響P標志位。此標志位對串行通信中的數(shù)據(jù)傳輸有重要的意義。在串行通信中常采用奇偶校驗的辦法來校驗數(shù)據(jù)傳輸?shù)目煽啃?。?shù)據(jù)指針(DPTR)。數(shù)據(jù)指針為16位寄存器。編程時,DPTR既可以按16位寄存器使用,也可以按兩個8位寄存器分開使用,即:DPHDPTR高位字節(jié),DPLDPTR低位字節(jié)。DPTR通常在訪問外部數(shù)據(jù)存儲器時作地址指針使用。由于外部數(shù)據(jù)存儲器的尋址范圍為64KB,故把DPTR設(shè)計為16位。堆棧指針(SPStackPointer)。堆棧是一個特殊的存儲區(qū),用來暫存數(shù)據(jù)和地址,它是按先進后出”的原則存取數(shù)據(jù)的。堆

16、棧共有兩種操作:進棧和出棧。由于MCS-51單片機的堆棧設(shè)在內(nèi)部RAM中,因此SP是一個8位寄存器。系統(tǒng)復(fù)位后,SP的內(nèi)容為07H,從而復(fù)位后堆棧實際上是從08H單元開始的。但08H1FH單元分別屬于工作寄存器13區(qū),如程序要用到這些區(qū),最好把SP值改為1FH或更大的值。對專用寄存器的字節(jié)尋址問題作如下幾點說明:(1)21個可字節(jié)尋址的專用寄存器是不連續(xù)地分散在內(nèi)部RAM高128單元之中,盡管還余有許多空閑地址,但用戶并不能使用。(2)程序計數(shù)器PC不占據(jù)RAM單元,它在物理上是獨立的,因此是不可尋址的寄存器。(3)對專用寄存器只能使用直接尋址方式,書寫時既可使用寄存器符號,也可使用寄存器。四

17、、輸入輸出端口單片機芯片內(nèi)還有一項主要內(nèi)容就是并行I/O口。MCS-51共有4個8位的并行I/O口,分別記作P0、P1、P2、P3。每個口都包含一個鎖存器、一個輸出驅(qū)動器和輸入緩沖器。實際上,它們已被歸入專用寄存器之列,并且具有字節(jié)尋址和位尋址功能。在訪問片外擴展存儲器時,低8位地址和數(shù)據(jù)由P0分時傳送,高8位地址由P2口傳送。在無片外擴展存儲器的系統(tǒng)中,這4個口的每一位均可作為雙向的I/O端口使用。五、80C51單片機的引腳功能MCS-51是標準的40引腳雙列直插式集成電路芯片,引腳排列請參見圖P0.0,P0.7:P0口8位雙向口線。P1.0,P1.7:P1口8位雙向口線。P2.0八,P2.

18、7:P2口8位雙向口線。P3.0,,P3.7:P3口8位雙向口線。ALE:地址鎖存控制信號。在系統(tǒng)擴展時,ALE用于控制把P0口輸出的低8位地址鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時鐘或外部定時脈沖使用。PSEN:外部程序存儲器讀選通信號。在讀外部ROM時,PSEN有效(低電平),以實現(xiàn)外部ROM單元的讀操作。123P1.0P1.1P1.2VC空P0.P0.0-39oQ4P1.3P0.2-375P1.4P0.336335透6789P1.5P1.61P1.75P0.P0.P0.rst/vPdP0.浮10RXDP3.0EA/V

19、PP3111TXDP3.1AL麗C30vOG12INT0P3.2PSE嗯13INT1P3.3P2.14T0P3.4P2.皿1617T1P3.5WRP3.6RDP3.7P2.P2.P2.磕318XTAL2P2.1920XTAL1VSSP2.P2.逐EA:訪問程序存儲控制信號。當(dāng)信號為低電平時,對ROM的讀操作限定在外部程序存儲器;當(dāng)信號為高電平時,對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延至外部程序存儲器。RST:復(fù)位信號。當(dāng)輸入的復(fù)位信號延續(xù)兩個機器周期以上的高電平時即為有效,用以完成單片機的復(fù)位初始化操作。XTAL1和XTAL2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時鐘時,此二引線端用于外接石

20、英晶體和微調(diào)電容;當(dāng)使用外部時鐘時,用于接外部時鐘脈沖信號。VSS:地線。VCC:+5V電源。以上是MCS-51單片機芯片40條引腳的定義及簡單功能說明,讀者可以對照實訓(xùn)電路找到相應(yīng)引腳,在電路中查看每個引腳的連接使用。P3口線的第二功能。P3的8條口線都定義有第二功能六、時鐘電路在MCS-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片白外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器,這就是單片機的時鐘電路。XTAL1IX,2巨CYMCS-51XTAL2外部時鐘源MCS-51XTAL2XTAL1Vss

21、1 .振蕩周期:為單片機提供時鐘信號的振蕩源的周期。2 .時鐘周期:是振蕩源信號經(jīng)二分頻后形成的時鐘脈沖信號。3 .機器周期:通常將完成一個基本操作所需的時間稱為機器周期。4 .指令周期:是指CPU執(zhí)行一條指令所需要的時間。一個指令周期通常含有14個機器周期。機器周期指令周期機器周期SiXTAL2(OSC)S2S3S4S5|PiP2PiP2PiFP2P1|P2S6Pi|P2SiS2S3S4S5S6Pi|P2Pi|P2|Pi|P2|Pi|P2|Pi|P2|Pi|P2振蕩周期時鐘周期Pi2七、復(fù)位電路單片機復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復(fù)位

22、后PC=0000H使單片VCCVCCik(a)(b)22機從第一個單元取指令。實訓(xùn)中已經(jīng)看出,無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復(fù)位,所以我們必須弄清楚MCS-5i型單片機復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。第三節(jié)單片機開發(fā)系統(tǒng)、單片機開發(fā)系統(tǒng)的組成與功能i.單片機系統(tǒng)的組成2.單片機開發(fā)系統(tǒng)的功能在線仿真功能調(diào)試功能3)輔助設(shè)計功能4)程序固化功能二、單片機開發(fā)系統(tǒng)的調(diào)試1 .硬件調(diào)試1)常見的硬件故障2)硬件調(diào)試方法2 .軟件調(diào)試三、單片機開發(fā)系統(tǒng)舉例1 .單片機開發(fā)系統(tǒng)的連接2 .工具軟件的安裝3 .輸入、編輯匯編語言源程序4 .匯編源程序5 .用戶程序的裝載第二

23、章單片機指令系統(tǒng)第一節(jié)指令簡介和格式采用助記符表示的匯編語言指令格式如下:操作碼操作數(shù)或操作數(shù)地址;注釋標號是程序員根據(jù)編程需要給指令設(shè)定的符號地址,可有可無;標號由18個字符組成,第一個字符必須是英文字,不能是數(shù)字或其它符號;標號后必須用冒號。操作碼表示指令的操作種類,如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。操作數(shù)或操作數(shù)地址表示參加運算的數(shù)據(jù)或數(shù)據(jù)的有效地址。操作數(shù)一般有以下幾種形式:沒有操作數(shù)項,操作數(shù)隱含在操作碼中,如RET指令;只有一個操作數(shù),如CPLA指令;有兩個操作數(shù),如MOVA,#00H指令,操作數(shù)之間以逗號相隔;有三個操作數(shù),如CJNEA,#00H,NEXT指令,操作

24、數(shù)之間也以逗號相隔。注釋是對指令的解釋說明,用以提高程序的可讀性;注釋前必須加分號。第二節(jié)尋址方式尋找操作數(shù)地址的方式稱為尋址方式。1 .寄存器尋址寄存器尋址是指將操作數(shù)存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOVR1,A的操作是把累加器A中的數(shù)據(jù)傳送到寄存器R1中,其操作數(shù)存放在累加器A中,所以尋址方式為寄存器尋址。如果程序狀態(tài)寄存器PSW的RS1RS0=01(選中第二組工作寄存器,對應(yīng)地址為08H0FH),設(shè)累加器A的內(nèi)容為20H,則執(zhí)行MOVR1,A指令后,內(nèi)部RAM09H單元的值就變?yōu)?0H。2 .直接尋址MCS-51直接

25、尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在單片機中,可以直接尋址的存儲器主要有內(nèi)部RAM區(qū)和特殊功能寄存器SFR區(qū)。例如,指令MOVA,3AH執(zhí)行的操作是將內(nèi)部RAM中地址為3AH的單元內(nèi)容傳送到累加器A中,其操作數(shù)3AH就是存放數(shù)據(jù)的單元地址,因此該指令是直接尋址。3 .立即數(shù)尋址立即數(shù)尋址是指將操作數(shù)直接寫在指令中。例如,指令MOVA,#3AH執(zhí)行的操作是將立即數(shù)3AH送到累加器A中,該指令就是立即數(shù)尋址。4 .寄存器間接尋址寄存器間接尋址是指將存放操作數(shù)的內(nèi)存單元的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時,首先根據(jù)寄存器的內(nèi)容,找到所需要的操作數(shù)地址,再由該地址找到

26、操作數(shù)并完成相應(yīng)操作。在MCS-51指令系統(tǒng)中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,稱為寄存器間接尋址寄存器。設(shè)R0=3AH,內(nèi)部RAM3AH中的值是65H,則指令MOVA,R0的執(zhí)行結(jié)果是累加器A的值為65H。5 .變址尋址變址尋址是指將基址寄存器與變址寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。例如,指令MOVCA,A+DPTR執(zhí)行的操作是將累加器A和基址寄存器DPTR的內(nèi)容相加,相加結(jié)果作為操作數(shù)存放的地址,再將操作數(shù)取出來送到累加器A中。設(shè)累加器A=02H,DPTR=0300H,外部ROM中,03

27、02H單元的內(nèi)容是55H,則指令MOVCA,A+DPTR的執(zhí)行結(jié)果是累加器A的內(nèi)容為55H。6 .相對尋址相對尋址是指程序計數(shù)器PC的當(dāng)前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。例如,指令SJMP54H執(zhí)行的操作是將PC當(dāng)前的內(nèi)容與54H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。設(shè)指令SJMP54H的機器碼80H54H存放在2000H處,當(dāng)執(zhí)行到該指令時,先從2000H和2001H單元取出指令,PC自動變?yōu)?002H;再把PC的內(nèi)容與操作數(shù)54H相加,形成目標地址2056H,再送回PC,使得程序跳轉(zhuǎn)到2056H單元繼續(xù)執(zhí)

28、行。7 .位尋址位尋址是指按位進行的尋址操作,而上述介紹的指令都是按字節(jié)進行的尋址操作。MCS-51單片機中,操作數(shù)不僅可以按字節(jié)為單位進行操作,也可以按位進行操作。當(dāng)我們把某一位作為操作數(shù)時,這個操作數(shù)的地址稱為位地址。位尋址區(qū)包括專門安排在內(nèi)部RAM中的兩個區(qū)域:一是內(nèi)部RAM的位尋址區(qū),地址范圍是20H2FH,共16個RAM單元,位地址為00H7FH;二是特殊功能寄存器SFR中有11個寄存器可以位尋址,參見有關(guān)章節(jié)中位地址定義。第三節(jié)指令系統(tǒng)MCS-51單片機指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類數(shù)據(jù)傳送指令(29條)算術(shù)運算指令(24條)邏輯運算指令(24條)控制轉(zhuǎn)移指令(

29、17條)位操作指令(17條)二、數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令是MCS-51單片機匯編語言程序設(shè)計中使用最頻繁的指令,包括內(nèi)部RAM、寄存器、外部RAM以及程序存儲器之間的數(shù)據(jù)傳送。數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變。1.以累加器A為目的操作數(shù)的指令MOVA,#data;A#dataMOVA,Rn;n=07,A(Rn)MOVA,RiMOVA,directi=0,1,A-(Ri)A(Rn)direct為內(nèi)部RAM或SFR地址2.以Rn為目的操作數(shù)的指令MOVRn,A;Rn-(A),n=07MOVRn,direct;Rn-(direct)MOVRn,#data;Rn-#dat

30、a3.以直接地址為目的操作數(shù)的指令MOVdirect,A;direct令-(A)MOVdirect,Rn;direct一(Rn),n=07MOVdirect,Ri;direct(Ri),i=0,1MOVdirect,direct;direct<一(direct)MOVdirect,#data;direct#data4.以寄存器間接地址為目的操作數(shù)指令MOVRi,A;(Ri)-(A),i=0,1MOVRi,direct;(Ri)一(direct)MOVRi,#data;(Ri)#data字節(jié)交換指令XCHA,Rn(A)-(Ri)XCHA,direct(A)<一(direct)XCHA

31、,Ri(A)<一一(Ri)半字節(jié)交換指令XCHDA,Ri;(A)0-3(Ri)0-3累加器A與外部數(shù)據(jù)傳輸指令MOVXA,DPTR;A(DPTR)地址范圍64KMOVXA,Ri;A(Ri)地址范圍0255MOVXDPTR,A;(DPTR)(A)MOVXRi,A;(Ri)(A)查表指令1) MOVCA,A+DPTR;A-(A)+(DPTR)2) MOVCA,A+PC;A-(A)+(pc)三、算術(shù)運算指令加法指令(Addtion)ADDA,Rn;A-(A)+(Rn)ADDA,Ri;A-(A)+(Ri)ADDA,direct;A-(A)+(direct)ADDA,ddata;A-(A)+#da

32、ta帶進位加法指令A(yù)DDCA,Rn;A-(A)+(Rn)+(Cy)ADDCA,Ri;A-(A)+(Ri)+(Cy)ADDCA,direct;A-(A)+(direct)+(Cy)ADDCA,#data;A-(A)+#data+(Cy)加1指令I(lǐng)NCA;A-(A)+1INCRi;Ri(A)+1INCdirect;direct(direct)+1INCRi;(Ri)一(Ri)+1INCDPTR;DPTR(DPTR)+1十進制調(diào)整指令DAA帶借位減法指令(Subtraction)SUBBA,Rn;A-(A)-(Rn)-(Cy)SUBBA,Ri;A-(A)-(Ri)-(Cy)SUBBA,direct;

33、A-(A)-(direct)-(Cy)SUBBA,#data;A-(A)-#data-(Cy)減1指令(Decreases)DECA;A-(A)-1DECRi;Ri(A)1DECdirect;direct(direct)1DECRi;(Ri)一(Ri)-1乘法指令(Multiplication)MULAB除法指令(Division)DIVAB四、邏輯運算及移位類指令簡單邏輯操作指令CLRAA-0”CPLAA-ASWAPA;A03A47左循環(huán)指令(RotateAccumulatorLeft)RLAflag)帶進位左循環(huán)指令(RotateAccumulatorLeftthroughCarryRLC

34、A右循環(huán)指令(RotateAccumulatorRight)RRA帶進位右循環(huán)指令(RotateARightwithC)RRCA邏輯與指令A(yù)NLA,RnANLA,directANLA,#dataANLA,RiANLdirect,AANLdirect,ddata邏輯或指令ORLA,RnORLA,directORLA,ddataORLA,RiORLdirect,AORLdirect,ddata邏輯異或指令XRLA,RnXRLA,directXRLA,ddataXRLA,RiXRLdirect,AXRLdirect,#data五、控制轉(zhuǎn)移類指令跳轉(zhuǎn)指令短跳指令A(yù)JMPaddr11PCaddr11,跳

35、轉(zhuǎn)范圍長跳指令LJMPaddr16PCaddr16,跳轉(zhuǎn)范圍間接跳轉(zhuǎn)指令JMPA+DPTRPC(A)+(DPTR)相對轉(zhuǎn)移指令SJMPrel2k64k條件轉(zhuǎn)移指令JZrelJNZrelJCrelJNCrelJBbit,JNBbit,JBCbit,relrelrel(A)=0,轉(zhuǎn)移(A)w0,轉(zhuǎn)移;如C=1,轉(zhuǎn)移;如C=0,轉(zhuǎn)移;如bit=1,轉(zhuǎn)移;如bit=0,轉(zhuǎn)移;如bit=1,轉(zhuǎn)移并bit=0比較不相等轉(zhuǎn)移指令CJNEA,#data,rel;(A)=#data,繼續(xù)C0(A)>#data,車專C0(A)v#data,轉(zhuǎn)C1特點:只有時,C1CJNEA,direct,relCJNERn

36、,#data,relCJNERi,#data,rel減1不為0轉(zhuǎn)移指令DJNZRn,rel;DJNZdirect,rel例:延時子程序delay:MOVR7,#03Hdelay。:MOVR6,#19Hdelay1:DJNZR6,delaylDJNZR7,delay0RET調(diào)用子程序指令短調(diào)用指令A(yù)CALLaddrll長調(diào)用指令LCALLaddr16子程序返回指令RET中斷返回指令RETI空操作指令NOP六、位操作類指令數(shù)據(jù)位傳送指令MOVC,bit;bit可直接尋址位C(bit)MOVbit,C;C進位位(bit)-C位變量修改指令CLRC;將C=0CLRbitCPLC;將C求反再存入CCPL

37、bitSETBCSETBbit位變量邏輯指令A(yù)NLC,bit;將bit求反再存入bit;將C=1;(bit)-1ANLC,bitORLC,bitORLC,bit第三章匯編諦言程序設(shè)計第一節(jié)匯編語言偽指令1 .定位偽指令ORG2 .定義字節(jié)數(shù)據(jù)偽指令DB3 .定義字數(shù)據(jù)偽指令DW4 .符號定義偽指令EQU5 .數(shù)據(jù)賦值偽指令DATA6 .匯編結(jié)束偽指令END第二節(jié)匯編語言程序設(shè)計過程1 .分析任務(wù)2 .確定算法3 .畫程序流程圖4 .分配資源5 .編寫代碼6 .程序修改與調(diào)試一、順序結(jié)構(gòu)程序設(shè)計二、分支程序設(shè)計三、循環(huán)程序設(shè)計四、子程序設(shè)計(各種例題見書或課件)第二節(jié)應(yīng)用程序舉例從實用角度,分類

38、給出一些在單片機應(yīng)用系統(tǒng)軟件設(shè)計中經(jīng)常用到的匯編語言子程序?qū)嵗? .代碼轉(zhuǎn)換程序2 .算數(shù)運算子程序3 .查找、排序子程序第四章定時與中斷系統(tǒng)第一節(jié)中斷概述一、中斷的概念中斷是通過硬件來改變CPU的運行方向的。計算機在執(zhí)行程序的過程中,當(dāng)出現(xiàn)CPU以外的某種情況時,由服務(wù)對象向CPU發(fā)出中斷請求信號,要求CPU暫時中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來被中斷的程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為中斷”。與中斷有關(guān)的寄存器有4個,分別為中斷源寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP;中斷源有5

39、個,分別為外部中斷0請求、外部中斷1請求、定時器0溢出中斷請求TF0、定時器1溢出中斷請求TF1和串行中斷請求RI或TI。5個中斷源的排列順序由中斷優(yōu)先級控制寄存器IP和順序查詢邏輯電路共同決定,5個中斷源分別對應(yīng)5個固定的中斷入口地址。第二節(jié)單片機的中斷系統(tǒng)、單片機的中斷系統(tǒng)1.中斷源和中斷標志中斷源外部中斷0請求,由P3.2腳輸入。通過IT0腳(TCON.0)來決定是低電平有效還是下跳變有效。一旦輸入信號有效,就向CPU申請中斷,并建立IE0標志。(2)外部中斷1請求,由P3.3腳輸入。通過IT1腳TCON.2)來決定是低電平有效還是下跳變有效。一旦輸入信號有效,就向CPU申請中斷,并建立

40、IE1標志。TF0:定時器T0溢出中斷請求。當(dāng)定時器0產(chǎn)生溢出時,定時器0中斷請求標志位(TCON.5)置位(由硬件自動執(zhí)行),請求中斷處理。(4) TF1:定時器1溢出中斷請求。當(dāng)定時器1產(chǎn)生溢出時,定時器1中斷請求標志位(TCON.7)置位(由硬件自動執(zhí)行),請求中斷處理。(5) RI或TI:串行中斷請求。當(dāng)接收或發(fā)送完一串行幀時,內(nèi)部串行口中斷請求標志位RI(SCON.0)或TI(SCON.1)置位(由硬件自動執(zhí)行),請求中斷。中斷標志TCON寄存器中的中斷標志TCON為定時器0和定時器1的控制寄存器,同時也鎖存定時器0和定時器1的溢出中斷標志及外部中斷和的中斷標志等。與中斷有關(guān)位如下:

41、(1) TCON.7TF1:定時器1的溢出中斷標志。T1被啟動計數(shù)后,從初值做加1計數(shù),計滿溢出后由硬件置位TF1,同時向CPU發(fā)出中斷請求,此標志一直保持到CPU響應(yīng)中斷后才由硬件自動清0。也可由軟件查詢該標志,并由軟件清0。(2) TCON.5TF0:定時器0溢出中斷標志。其操作功能與TF1相同。(3) TCON.3IE1:中斷標志。IE1=1,外部中斷1向CPU申請中斷。(4) TCON.2IT1:中斷觸發(fā)方式控制位。當(dāng)IT1=0時,外部中斷1控制為電平觸發(fā)方式。(5) TCON.1IE0:中斷標志。其操作功能與IE1相同。(6) TCON.0IT0:中斷觸發(fā)方式控制位。其操作功能與IT

42、1相同。SCON寄存器中的中斷標志SCON是串行口控制寄存器,其低兩位TI和RI鎖存串行口的發(fā)送中斷標志和接收中斷標志。1 1)SCON.1TI:串行發(fā)送中斷標志。CPU將數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,就啟動發(fā)送,每發(fā)送完一個串行幀,硬件將使TI置位。但CPU響應(yīng)中斷時并不清除TI,必須由軟件清除。2 .中斷控制IE寄存器中斷的開放和禁止標志(1) IE.7EA:總中斷允許控制位。EA=1,開放所有中斷,各中斷源的允許和禁止可通過相應(yīng)的中斷允許位單獨加以控制;EA=0,禁止所有中斷。(2) IE.4ES:串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷。IE.3ET1:定時

43、器1中斷允許位。ET1=1,允許定時器1中斷;ET1=0,禁止定時器1中斷。(4) IE.2EX1:外部中斷1()中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。(5) IE.1ET0:定時器0中斷允許位。ET0=1,允許定時器0中斷;ET0=0,禁止定時器0中斷。(6) IE.0EX0:外部中斷0()中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。8051單片機系統(tǒng)復(fù)位后,IE中各中斷允許位均被清0,即禁止所有中斷。IP寄存器中斷優(yōu)先級標志8051單片機有兩個中斷優(yōu)先級,每個中斷源都可以通過編程確定為高優(yōu)先級中斷或低(1) IP.4PS

44、:串行口中斷優(yōu)先控制位。PS=1,設(shè)定串行口為高優(yōu)先級中斷;PS=0,設(shè)定串行口為低優(yōu)先級中斷。(2) IP.3PT1:定時器T1中斷優(yōu)先控制位。PT1=1,設(shè)定定時器T1中斷為高優(yōu)先級中斷;PT1=0,設(shè)定定時器T1中斷為低優(yōu)先級中斷。(3) IP.2PX1:外部中斷1中斷優(yōu)先控制位。PX1=1,設(shè)定外部中斷1為高優(yōu)先級中斷;PX1=0,設(shè)定外部中斷1為低優(yōu)先級中斷。(4) IP.1PT0:定時器T0中斷優(yōu)先控制位。PT0=1,設(shè)定定時器T0中斷為高優(yōu)先級中斷;PT0=0,設(shè)定定時器T0中斷為低優(yōu)先級中斷。(5) IP.0PX0:外部中斷0中斷優(yōu)先控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級

45、中斷;PX0=0,設(shè)定外部中斷0為低優(yōu)先級中斷。當(dāng)系統(tǒng)復(fù)位后,IP低5位全部清0,所有中斷源均設(shè)定為低優(yōu)先級中斷。如果幾個同一優(yōu)先級的中斷源同時向CPU申請中斷,CPU通過內(nèi)部硬件查詢邏輯,按自然優(yōu)先級順序確定先響應(yīng)哪個中斷請求。自然優(yōu)先級由硬件形成,排列如下:中斷源同級自然優(yōu)先級外部中斷0最高級定時器T0中斷外部中斷1定時器T1中斷串行口中斷最低級二、中斷處理過程中斷處理過程可分為中斷響應(yīng)、中斷處理和中斷返回三個階段。中斷響應(yīng)中斷響應(yīng)是CPU對中斷源中斷請求的響應(yīng),包括保護斷點和將程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱矢量地址)。中斷響應(yīng)過程中斷響應(yīng)過程包括保護斷點和將程序轉(zhuǎn)向中斷服務(wù)程序的

46、入口地址。首先,中斷系統(tǒng)通過硬件自動生成長調(diào)用指令(LACLL),該指令將自動把斷點地址壓入堆棧保護(不保護累加器A、狀態(tài)寄存器PSW和其它寄存器的內(nèi)容),然后,將對應(yīng)的中斷入口地址裝入程序計數(shù)器PC(由硬件自動執(zhí)行),使程序轉(zhuǎn)向該中斷入口地址,執(zhí)行中斷服務(wù)程序。MCS-51系列單片機各中斷源的入口地址由硬件事先設(shè)定,分配如下:中斷源入口地址外部中斷00003H定時器T0中斷000BH外部中斷10013H定時器T1中斷001BH串行口中斷0023H使用時,通常在這些中斷入口地址處存放一條絕對跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序的起始地址上去。中斷返回中斷返回是指中斷服務(wù)完后,計算機返回

47、原來斷開的位置(即斷點),繼續(xù)執(zhí)行原來的程序。中斷返回由中斷返回指令RETI來實現(xiàn)。該指令的功能是把斷點地址從堆棧中彈出,送回到程序計數(shù)器PC,此外,還通知中斷系統(tǒng)已完成中斷處理,并同時清除優(yōu)先級狀態(tài)觸發(fā)器。特別要注意不能用“RET指令代替“RETI指令。中斷請求的撤除CPU響應(yīng)中斷請求后即進入中斷服務(wù)程序,在中斷返回前,應(yīng)撤除該中斷請求,否則,會重復(fù)引起中斷而導(dǎo)致錯誤。MCS-51各中斷源中斷請求撤消的方法各不相同,分別為:1)定時器中斷請求的撤除對于定時器0或1溢出中斷,CPU在響應(yīng)中斷后即由硬件自動清除其中斷標志位TF0或TF1,無需采取其它措施。2)串行口中斷請求的撤除對于串行口中斷,

48、CPU在響應(yīng)中斷后,硬件不能自動清除中斷請求標志位TI、RI,必須在中斷服務(wù)程序中用軟件將其清除。3)外部中斷請求的撤除外部中斷可分為邊沿觸發(fā)型和電平觸發(fā)型。對于邊沿觸發(fā)白外部中斷0或1,CPU在響應(yīng)中斷后由硬件自動清除其中斷標志位IE0或IE1,無需采取其它措施。三、中斷應(yīng)用舉例第三節(jié)定時器/計數(shù)器一、定時器/計數(shù)器結(jié)構(gòu)實質(zhì)是計數(shù)器,脈沖每一次下降沿,計數(shù)寄存器數(shù)值將加1。計數(shù)的脈沖如果來源于單片機內(nèi)部的晶振,由于其周期極為準確,這時稱為定時器。計數(shù)的脈沖如果來源于單片機外部的引腳,由于其周期一般不準確,這時稱為計數(shù)器。定時/計數(shù)器方式寄存器TMOD(1) M1和M0:方式選擇位。(2) c

49、/T:功能選擇位。時,設(shè)置為定時器工作方式;時,設(shè)置為計數(shù)器工作方式。GATE:門控位。當(dāng)GATE=0時,軟件控制位TR0或TR1置1即可啟動定時器;當(dāng)GATE=1時,軟件控制位TR0或TR1須置1,同時還須(P3.2)或(P3.3)為高電平方可啟動定時器,即允許外中斷、啟動定時器。定時器/計數(shù)器控制寄存器TCON(1) TCON.7TF1:定時器1溢出標志位。當(dāng)定時器1計滿數(shù)產(chǎn)生溢出時,由硬件自動置TF1=1。在中斷允許時,向CPU發(fā)出定時器1的中斷請求,進入中斷服務(wù)程序后,由硬件自動清0。在中斷屏蔽時,TF1可作查詢測試用,此時只能由軟件清0。(2) TCON.6TR1:定時器1運行控制位

50、。由軟件置1或清0來啟動或關(guān)閉定時器1。當(dāng)GATE=1,且為高電平時,TR1置1啟動定時器1;當(dāng)GATE=0時,TR1置1即可啟動定時器1。(3)TCON.5TF0:定時器0溢出標志位。其功能及操作情況同TF1。(4)TCON.4TR0:定時器0運行控制位。其功能及操作情況同TR1。(5)TCON.3IE1:外部中斷1()請求標志位。(6)TCON.2IT1:外部中斷1觸發(fā)方式選擇位。(7)TCON.1IE0:外部中斷0()請求標志位。(8)TCON.0IT0:外部中斷0觸發(fā)方式選擇位。二、定時/計數(shù)器的工作方式1 .方式0方式0構(gòu)成一個13位定時/計數(shù)器。圖是定時器0在方式0時的邏輯電路結(jié)構(gòu)

51、,定時器1的結(jié)構(gòu)和操作與定時器0完全相同。2 .方式1定時器工作于方式1時。由圖可知,方式1構(gòu)成一個16位定時/計數(shù)器,其結(jié)構(gòu)與操作幾乎完全與方式0相同,惟一差別是二者計數(shù)位數(shù)不同。3 .方式2定時/計數(shù)器工作于方式2時,。由圖可知,方式2中,16位加法計數(shù)器的TH0和TL0具有不同功能,其中,TL0是8位計數(shù)器,TH0是重置初值的8位緩沖器。4 .方式3定時/計數(shù)器工作于方式3時,其邏輯結(jié)構(gòu)圖如圖所示。三、編程和使用1 .計數(shù)器初值的計算把計數(shù)器計滿為零所需要的計數(shù)值設(shè)定為C,計數(shù)初值設(shè)定為TC,由此可得到公式:TC=M-C式中,M為計數(shù)器模值,該值和計數(shù)器工作方式有關(guān)。在方式0時M為213

52、;在方式1時M為216;在方式2和方式3時M為28。2 .定時器初值的計算在定時器模式下,計數(shù)器由單片機主脈沖經(jīng)12分頻后計數(shù)。因此,定時器定時時間T的公式:T=(M-TC)T計數(shù),上式也可寫成:TC=M-T/T計數(shù)。式中,M為模值,和定時器的工作方式有關(guān);T計數(shù)是單片機振蕩周期TCLK的12倍;TC為定時器的定時初值。第四節(jié)應(yīng)用程序舉例(略)第五章單片機的系統(tǒng)擴展第一節(jié)系統(tǒng)擴展概述一、單片機系統(tǒng)擴展的結(jié)構(gòu)對于沒有內(nèi)部ROM的單片機或者當(dāng)程序較長、片內(nèi)ROM容量不夠時,用戶必須在單片機外部擴展程序存儲器。MCS-51單片機片外有16條地址線,即P0口和P2口,因此最大尋址范圍為64KB(0000HFFFFH)。系統(tǒng)總線及總線構(gòu)造MCS-51系列單片機片外引腳可以構(gòu)成如圖所示的三總線結(jié)構(gòu):地址總線(AB)數(shù)據(jù)總線(DB)控制總線(CB)所有外部芯片都通過這三組總線進行擴展。第二節(jié)存儲器的擴展一、程序存儲器的擴展擴展程序存儲器常用的芯片是EPROM(ErasableProgrammableReadOnlyMemory)型(

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論