單片機(jī)的C語言編程_第1頁
單片機(jī)的C語言編程_第2頁
單片機(jī)的C語言編程_第3頁
單片機(jī)的C語言編程_第4頁
單片機(jī)的C語言編程_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)的C語言編程稱為C51編程,應(yīng)用C51編程具有以下優(yōu)點(diǎn):

(1)C51編譯器管理內(nèi)部寄存器和存貯器的分配,編程時(shí),無需考慮不同存儲器的尋址和數(shù)據(jù)類型等細(xì)節(jié)問題;

(2)程序有規(guī)范的結(jié)構(gòu),可分成不同的函數(shù),這種方式具有良好的模塊化結(jié)構(gòu),使已編好程序容易移植;(3)有豐富的子程序庫可直接引用,具有較強(qiáng)的數(shù)據(jù)處理能力,從而大大減少用戶編程的工作量;(4)C語言和匯編語言可以交叉使用。

匯編語言程序代碼短、運(yùn)行速度快、但復(fù)雜運(yùn)算編程耗時(shí)。用匯編語言編寫與硬件有關(guān)的部分程序,用C語言編寫與硬件無關(guān)的運(yùn)算部分程序,充分發(fā)揮兩種語言的長處,提高開發(fā)效率。

第4章單片機(jī)的C語言編程4.1C51程序結(jié)構(gòu)特點(diǎn)

同標(biāo)準(zhǔn)C一樣,C51的程序是由函數(shù)組成。C語言的函數(shù)以“{”開始,以“}”結(jié)束。

其中必須有一個(gè)主函數(shù)main(),程序的執(zhí)行從主函數(shù)main()開始,調(diào)用其他函數(shù)后返回主函數(shù)main(),最后在主函數(shù)中結(jié)束整個(gè)程序,而不管函數(shù)的排列順序如何。

C語言的語句規(guī)則:

1.每個(gè)變量必須先說明后引用。

2.C語言程序一行可以書寫多條語句,但每個(gè)語句必須以“;”結(jié)尾,一個(gè)語句也可以多行書寫。

3.C語言的注釋用/*……*/表示。

4.“{”花括號必須成對,位置隨意,多個(gè)花括號可同行書寫,也可逐行書寫。

C語言程序的組成結(jié)構(gòu):

全局變量說明/*可被各函數(shù)引用*/

main()/*主函數(shù)*/ {

局部變量說明 /*只在本函數(shù)引用*/ 執(zhí)行語句(包括函數(shù)調(diào)用語句); }

fun1(形式參數(shù)表)/*函數(shù)1*/ 形式參數(shù)說明

{ 局部變量說明 執(zhí)行語句(包括調(diào)用其他函數(shù)語句) }

funn(形式參數(shù)表)/*函數(shù)n*/ 形式參數(shù)說明

{ 局部變量說明 執(zhí)行語句

}

標(biāo)識符用來標(biāo)識源程序中某個(gè)對象的名字,這些對象可以是語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等。標(biāo)識符區(qū)分大小寫,第一個(gè)字符必須是字母或下劃線。

C51中有些庫函數(shù)的標(biāo)識符是以下劃線開頭的,所以一般不要以下劃線開頭命名標(biāo)識符。

C51編譯器規(guī)定標(biāo)識符只有32個(gè)字符在編譯時(shí)有效,因此在編寫源程序時(shí)標(biāo)識符的長度不要超過32個(gè)字符。

關(guān)鍵字是編程語言保留的特殊標(biāo)識符,在C語言的程序編寫中不允許標(biāo)識符與關(guān)鍵字相同。KeilC51編譯器的關(guān)鍵字除了有ANSIC標(biāo)準(zhǔn)的32個(gè)關(guān)鍵字外還根據(jù)51單片機(jī)的特點(diǎn)擴(kuò)展了相關(guān)的關(guān)鍵字。4.2C51的標(biāo)識符和關(guān)鍵字關(guān)鍵字用途說明auto存儲種類說明用以說明局部變量,缺省值為此break程序語句退出最內(nèi)層循環(huán)體case程序語句switch語句中的選擇項(xiàng)char數(shù)據(jù)類型說明單字節(jié)整型數(shù)或字符型數(shù)據(jù)const存儲類型說明在程序執(zhí)行過程中不可更改的常量值continue程序語句轉(zhuǎn)向下一次循環(huán)default程序語句switch語句中的失敗選擇項(xiàng)do程序語句構(gòu)成do…while循環(huán)結(jié)構(gòu)double數(shù)據(jù)類型說明雙精度浮點(diǎn)數(shù)else程序語句構(gòu)成if…else選擇結(jié)構(gòu)enum數(shù)據(jù)類型說明枚舉extern存儲種類說明在其他程序模塊中說明了的全局變量float數(shù)據(jù)類型說明單精度浮點(diǎn)數(shù)for程序語句構(gòu)成for循環(huán)結(jié)構(gòu)goto程序語句構(gòu)成goto轉(zhuǎn)移結(jié)構(gòu)if程序語句構(gòu)成if…else選擇結(jié)構(gòu)ANSIC標(biāo)準(zhǔn)關(guān)鍵字(1)ANSIC標(biāo)準(zhǔn)關(guān)鍵字(2)關(guān)鍵字用途說明int數(shù)據(jù)類型說明基本整型數(shù)long數(shù)據(jù)類型說明長整型數(shù)register存儲種類說明使用CPU內(nèi)部寄存的變量return程序語句函數(shù)返回short數(shù)據(jù)類型說明短整型數(shù)signed數(shù)據(jù)類型說明有符號數(shù),二進(jìn)制數(shù)據(jù)的最高位為符號位sizeof運(yùn)算符計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)static存儲種類說明靜態(tài)變量struct數(shù)據(jù)類型說明結(jié)構(gòu)類型數(shù)據(jù)switch程序語句構(gòu)成switch選擇結(jié)構(gòu)typedef數(shù)據(jù)類型說明重新進(jìn)行數(shù)據(jù)類型定義union數(shù)據(jù)類型說明聯(lián)合類型數(shù)據(jù)unsigned數(shù)據(jù)類型說明無符號數(shù)據(jù)void數(shù)據(jù)類型說明無類型數(shù)據(jù)volatile數(shù)據(jù)類型說明該變量在程序執(zhí)行中可被隱含地改變while程序語句構(gòu)成while和do…while循環(huán)結(jié)構(gòu)KeilC51編譯器擴(kuò)展的關(guān)鍵字(1)關(guān)鍵字用途說明_at_地址定位為變量定義存儲空間絕對地址alien函數(shù)特性說明聲明與PL/M51兼容的函數(shù)bdata存儲器類型說明可位尋址的內(nèi)部RAMbit位標(biāo)量聲明聲明一個(gè)位標(biāo)量或位類型的函數(shù)code存儲器類型說明程序存儲器空間compact存儲器模式使用外部分頁RAM的存儲模式data存儲器類型說明直接尋址的8051內(nèi)部數(shù)據(jù)存儲器idata存儲器類型說明間接尋址的8051內(nèi)部數(shù)據(jù)存儲器interrupt中斷函數(shù)聲明定義一個(gè)中斷函數(shù)large存儲器模式使用外部RAM的存儲模式pdata存儲器類型說明“分頁”尋址的8051外部數(shù)據(jù)存儲器_priority_多任務(wù)優(yōu)先聲明RTX51的任務(wù)優(yōu)先級reentrant再入函數(shù)聲明定義一個(gè)再入函數(shù)sbit位變量聲明聲明一個(gè)可位尋址變量sfr特殊功能寄存器聲明聲明一個(gè)特殊功能寄存器(8位)KeilC51編譯器擴(kuò)展的關(guān)鍵字(2)關(guān)鍵字用途說明sfr16特殊功能寄存器聲明聲明一個(gè)16位的特殊功能寄存器small存儲器模式內(nèi)部RAM的存儲模式_task_任務(wù)聲明定義實(shí)時(shí)多任務(wù)函數(shù)using寄存器組定義定義8051的工作寄存器組xdata存儲器類型說明8051外部數(shù)據(jù)存儲器4.3C51的數(shù)據(jù)類型

C51的數(shù)據(jù)有常量和變量之分。

常量

——在程序運(yùn)行中其值不變的量。變量

——在程序運(yùn)行中其值可以改變的量。

定義一個(gè)變量,編譯系統(tǒng)就會(huì)自動(dòng)為它安排一個(gè)存貯區(qū),具體的地址值,用戶不必在意。一個(gè)變量由變量名和變量值構(gòu)成.

變量名:存貯單元地址的符號表示。變量的值:變量所在地址單元存放的內(nèi)容。數(shù)據(jù)類型:數(shù)據(jù)的長度。

C51編譯器支持?jǐn)?shù)據(jù)類型

數(shù)

據(jù)

型長

度值

域位型bit1Bit0或1字符型signedchar1Byte-128~+127unsignedchar1Byte0~255

整形signedint2Byte-32768~+32767unsignedint2Byte0~65535signedlong4Byte-2147483648~+2147483647unsignedlong4Byte0~4294967295實(shí)型Float4Byte1.176E-38~3.40E+38指針型data/idata/pdata1Byte1字節(jié)地址code/xdata2Byte2字節(jié)地址通用指針3Byte其中1字節(jié)為儲存器類型編碼,2,3字節(jié)為地址偏移量訪問SFR的數(shù)據(jù)類型sbit1Bit0或1sfr1Byte0~255sfr162Byte0~65535*11C51增加的特殊的數(shù)據(jù)類型1.bit位標(biāo)量bit位標(biāo)量是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個(gè)位標(biāo)量。它的值是一個(gè)二進(jìn)制位,不是0,就是1。

bit位變量名例:bitlock;

/*將lock定義為位變量*/lock=1;*122.sfr特殊功能寄存器

MCS-51系列單片機(jī)片內(nèi)有21個(gè)特殊功能寄存器(SFR),分散在片內(nèi)RAM區(qū)的0x80~0xFF地址范圍內(nèi)。對SFR的操作只能用直接尋址方式。為了能直接訪問這些特殊功能寄存器,C51提供了定義sfr的方法。sfr是一種C51擴(kuò)充數(shù)據(jù)類型,占用一個(gè)內(nèi)存單元,值域?yàn)?~255。語法如下:

sfr特殊寄存器名=寄存器地址

*13例如:sfrP1=0x90P1=255

定義一個(gè)特殊功能寄存器變量“P1”,0x90是指51單片機(jī)的P1端口地址90H,變量P1即指51單片機(jī)的P1端口。在后面的語句中可以用P1=255(對P1端口的所有引腳置高電平)之類的語句操作特殊功能寄存器。*14例:sfrPSW=0xD0;

/*定義程序狀態(tài)字PSW,因MCS-51單片機(jī)的PSW地址為D0H*/sfrTMOD=0x89;/*定義定時(shí)/計(jì)數(shù)器方式控制寄存器TMOD,因MCS-51單片機(jī)的TMOD地址為89H*/sfrSCON=0x98;

/*定義串口控制寄存器SCON,因MCS-51單片機(jī)的SCON地址為8H*/*153.sfr1616位特殊功能寄存器sfr16也是一種C51擴(kuò)充數(shù)據(jù)類型,用于定義存在于MCS-51單片機(jī)內(nèi)部RAM的16位特殊功能寄存器,如定時(shí)器T0和T1。

sfr16型數(shù)據(jù)占用2個(gè)內(nèi)存單元,取值范圍為0~65535。

*16

sbit也是一種C51擴(kuò)充數(shù)據(jù)類型,利用sbit訪問芯片內(nèi)部可尋址的特殊功能寄存器中的位。定義方法有如下三種:(1)sbit特殊功能寄存器位名=位地址

將位的絕對地址賦給位變量,位地址必須位于80H~FFH(特殊功能寄存器的位地址)之間。4.sbit可尋址位*17(2)sbit特殊功能寄存器位名=特殊功能寄存器名^位位置當(dāng)可尋址位位于特殊功能寄存器中時(shí),可采用這種方法。位位置是一個(gè)0~7之間的常數(shù)。(3)sbitsbit特殊功能寄存器位名=字節(jié)地址^位位置這種方法是以一個(gè)常數(shù)(字節(jié)地址)作為基地址,該常數(shù)必須在80H~FFH(特殊功能寄存器的字節(jié)地址)之間。位位置是一個(gè)0~7之間的常數(shù)。*18例:sfr

PSW=0xD0; /*首先定義程序狀態(tài)字PSW,

因MCS-51單片機(jī)的PSW地址為D0H*/sbitOV=PSW^2;

/*在前面定義了PSW后,OV位于PSW的第2位*/sbitAC=0xD0^6;

/*D0H是程序狀態(tài)字PSW的字節(jié)地址,

輔助進(jìn)位標(biāo)志位AC位于PSW的第6位*/sbitRS0=0xD0^3;

/*工作寄存器組控制位RS0位于PSW的第3位*/sbitCY=0xD7;

/*進(jìn)位標(biāo)志位Cy的絕對位地址為D7H*/對位變量的定義C51對位變量的定義方法有三種:1.定義bit類型變量

如bitmn;mn為位變量,其值只能是“0”或“1”,其位地址C51自行安排在可位尋址區(qū)的bdata區(qū)。

2.采用字節(jié)尋址變量.位的方法如bdataintibase;

/*ibase定義為整型變量*/

sbitmybit=ibase^15;

/*mybit定義為ibase的D15位*/

這里位是運(yùn)算符“^”相當(dāng)于匯編中的“·”,其后的最大取值依賴于該位所在的變量的類型,如定義為char最大值只能為7。

3.對特殊功能寄存器的位的定義方法1:使用頭文件及sbit定義符;多用于無位名的可尋址位。如#include<reg51.h>

sbitP1_1=P1^1;

/*P1_1為P1口的第1位*/

sbitac=ACC^7;/*ac定義為累加器A的第7位*/方法2:使用頭文件reg51.h,再直接用位名稱。例如#include<reg51.h>RS1=1;

RS0=0;

方法3:用字節(jié)地址位表示如sbitOV=0xD0^2;方法4:用寄存器名.位定義

如sfrPSW=0xd0;/*定義PSW地址為d0H*/

sbitCY=PSW^7;/*CY為PSW·7*/*21例5-2

特殊功能寄存器的訪問。#include”reg51.h”sbitP10=P1^0; /*定義P10為P1口第0位,即P1.0口*/sbitP12=P1^2; /*定義P12為P1口第2位,即P1.2口*/

voidmain() { P10=1; /*置位P1.0口*/ P12=0; /*復(fù)位P1.2口*/ PSW=0x08; /*程序狀態(tài)字置0x08*/ …… }----應(yīng)用實(shí)例C5l編譯器除了能支持以上這些基本數(shù)據(jù)類型之外,還能支持一些復(fù)雜的組合型數(shù)據(jù)類型,如數(shù)組類型、指針類型、結(jié)構(gòu)類型、聯(lián)合類型等這些復(fù)雜的數(shù)據(jù)類型。

使用頭文件

C51建有頭文件reg51.h、reg52.h,在該頭文件中對51或52系列單片機(jī)所有的特殊功能寄存器的進(jìn)行了sfr定義,對特殊功能寄存器的有位名稱的可尋址位進(jìn)行了sbit定義,因此,只要用包含語句#include<reg51.h>就可以直接引用特殊功能寄存器名,或直接引用位名稱。要特別注意:在引用時(shí)特殊功能寄存器或者位名稱必須大寫。

4.4數(shù)據(jù)的存儲類型和存儲模式

同ANSIC一樣,C51規(guī)定變量必須先定義后使用。C51對變量的進(jìn)行定義的格式如下:

[存儲種類]數(shù)據(jù)類型[存儲器類型]變量名表其中,存儲種類和存儲器類型是可選項(xiàng)。存儲類型是C51中增加的。一、變量的存儲種類

按變量的有效作用范圍可以將其劃分為局部變量和全局變量;還可以按變量的的存儲方式為其劃分存儲種類。在C語言中變量有四種存儲種類,即自動(dòng)(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。二、數(shù)據(jù)的存儲類型

C51是面向8XX51系列單片機(jī)及硬件控制系統(tǒng)的開發(fā)語言,它定義的任何變量必須以一定的存儲類型的方式定位在8XX51的某一存儲區(qū)中,否則便沒有意義。因此在定義變量類型時(shí),還必須定義它的存儲類型,C51的變量有如下幾種存儲類型:存儲器類型

描述data直接尋址內(nèi)部數(shù)據(jù)存儲區(qū),00H-7FH(128Byte)bdata可為尋址內(nèi)部數(shù)據(jù)存儲區(qū),20H-2FH,允許位與字節(jié)混合訪問(16Byte)idata間接尋址內(nèi)部數(shù)據(jù)存儲區(qū),可訪問全部內(nèi)部地址空間00H-FFH(256Byte)pdata分頁(256Byte)外部數(shù)據(jù)存儲區(qū),由操作碼MOVX@Ri訪問xdata外部數(shù)據(jù)存儲區(qū)(64KB),由操作碼MOVX@DPTR訪問code程序存儲區(qū)(64KB),由操作碼MOVC@A+DPTR訪問如果在變量定義時(shí)省略了存儲器類型標(biāo)識符,C51編譯器會(huì)選擇默認(rèn)的存儲器類型。默認(rèn)的存儲器類型由SMALL、COMPACT和LARGE存儲模式指令決定。1)data區(qū)對data區(qū)的尋址是最快的,所以應(yīng)該把使用頻率高的變量放在data區(qū),由于空間有限,必須注意使用data區(qū),data區(qū)除了包含程序變量外,還包含了堆棧和寄存器組data區(qū)。在SMALL存儲模式下,未說明存儲器類型時(shí),變量默認(rèn)被定位在data區(qū)。2)bdata區(qū)當(dāng)在DATA區(qū)的位尋址區(qū)定義變量,這個(gè)變量就可進(jìn)行位尋址,并且聲明位變量。這對狀態(tài)寄存器來說十分有用,因?yàn)樗梢詥为?dú)使用變量的每一位,而不一定要用位變量名引用位變量。3)idata區(qū)idata區(qū)也可以存放使用比較頻繁的變量,使用寄存器作為指針進(jìn)行尋址。在寄存器中設(shè)置8位地址進(jìn)行間接尋址,與外部存儲器尋址比較,它的指令執(zhí)行周期和代碼長度都比較短。4)pdata和xdata區(qū)在這兩個(gè)區(qū)聲明變量和在其他區(qū)的語法是一樣的,pdata區(qū)只有256B,而xdata區(qū)可達(dá)65536B5)code區(qū)code區(qū)即80C51的程序代碼區(qū),所以代碼區(qū)的數(shù)據(jù)是不可改變的,80C51的代碼區(qū)不可重寫。一般代碼區(qū)中可存放數(shù)據(jù)表,跳轉(zhuǎn)向量和狀態(tài)表。如果用戶不對變量的存貯類型定義,則編譯器承認(rèn)默認(rèn)存貯類型,默認(rèn)的存貯類型由編譯控制命令的存貯的模式部分決定。例:

datacharvar;

/*字符變量var定位在片內(nèi)RAM區(qū)*/charcodeMSG[]=″ENTERPARAMETER:″

/*字符數(shù)組定位在程序存貯區(qū)*/

unsignedlongxdataarray[100];

/*無符號長型數(shù)組定位在片外RAM區(qū),每元素占4bytes*/

floatidatax,y,z;

/*實(shí)型變量x,y,z,定位在片內(nèi)用間址訪問的內(nèi)部RAM區(qū)*/

bitlock;

/*位變量Lock定位在片內(nèi)RAM可位尋址區(qū)*/unsignedintpdatadimension;

/*無符號整型變量

dimension定位在分頁的外部RAM區(qū)*/unsignedcharxdatavector[10][4][4];

/*無符號字符型三維數(shù)組,定位在片外RAM區(qū)*/三、數(shù)據(jù)的存儲模式在固定的存貯器地址進(jìn)行變量參數(shù)傳遞是C51的一個(gè)標(biāo)準(zhǔn)特征,定義了變量、參數(shù)傳遞區(qū)的存貯器模式,也就是默認(rèn)了變量和參數(shù)傳遞區(qū)存貯器類型、無需再對變量和參數(shù)傳遞區(qū)的存貯器類型進(jìn)行說明。存貯器模式?jīng)Q定了變量的默認(rèn)存貯器類型、參數(shù)傳遞區(qū)和無明確存貯區(qū)類型的說明。有三種存貯器模式:SMALL、LARGE和COMPACT存儲器模式

描述SMALL參數(shù)及局部變量放入可直接尋址的內(nèi)部數(shù)據(jù)存儲區(qū)(128Byte,默認(rèn)存儲器類型是DATA)COMPACT參數(shù)及局部變量放入分頁外部數(shù)據(jù)存儲區(qū)(最大256Byte,默認(rèn)存儲類型是PDATA)LARGE參數(shù)及局部變量直接放入外部數(shù)據(jù)存儲器(最大64KB,默認(rèn)存儲器類型為XDATA)1.小(SMALL)模式所有變量都默認(rèn)在8051的內(nèi)部數(shù)據(jù)存儲器中。這和用data顯式定義變量起到相同的作用。

2.緊湊(COMPACT)模式此模式中,所有變量都默認(rèn)在8051的外部數(shù)據(jù)存儲器的一頁中。3.大(LARGE)模式

在大模式下,所有的變量都默認(rèn)在外部存儲器中(xdata)。例如:設(shè)C語言源程序?yàn)镻ROR.C,若使程序中的變量類型和參數(shù)傳遞區(qū)限定在外部數(shù)據(jù)存貯區(qū),有兩種方法:方法1:在程序的第一句加預(yù)處理命令

#pragmacompact。方法2:用C51對PROR.C進(jìn)行編譯時(shí),使用編譯控制命令:C51PROR.CCOMPACT。

如果在變量說明時(shí)略去存貯器類型標(biāo)志符,編譯器會(huì)自動(dòng)選擇默認(rèn)的存貯器類型。默認(rèn)的存貯器類型進(jìn)一步由控制指令SMALL、COMPACT和LARGE限制。例:如果聲明charvar,則默認(rèn)的存貯器模式為SMALL,var放在data存貯區(qū);如果使用COMPACT模式,var放入idata存貯區(qū);使用LARGE模式,var被放入外部存貯區(qū)(xdata存貯區(qū))。

四、對存貯器和外接I/O口的絕對地址訪問

C51對存貯器和外接I/O口的絕對地址訪問可以通過指針訪問,也可以通過函數(shù)訪問。

1.對存貯器的絕對地址訪問

利用絕對地址訪問的頭文件absacc.h可對不同的存貯區(qū)進(jìn)行訪問。該頭文件的函數(shù)有:

CBYTE (訪問code區(qū)字符型)

DBYTE (訪問data區(qū)字符型)

PBYTE (訪問pdata或I/O)

XBYTE (訪問xdata或I/O)

還有CWORD、DWORD、PWORD和XWORD四個(gè)函數(shù),它們的訪問區(qū)域同上,只是訪問的類型為int型

例: #include<absacc.h>

#definecomXBYTE[0x07ff]

那么后面程序com變量出現(xiàn)的地方,就是對地址為07ffH外部RAM或I/O口進(jìn)行訪問。例:XWORD[0]=0x9988;

即將9988H(int類型)送入外部RAM的0號和1號單元。使用中要

溫馨提示

  • 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論