單片機(jī)課程筆記_第1頁(yè)
單片機(jī)課程筆記_第2頁(yè)
單片機(jī)課程筆記_第3頁(yè)
單片機(jī)課程筆記_第4頁(yè)
已閱讀5頁(yè),還剩155頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、WORD格式注意:本課件為上課筆記的一個(gè)整理,其中難免存在錯(cuò)誤,請(qǐng)讀者不吝賜教,如有問(wèn)題請(qǐng)發(fā)送 E-mail 到。本文根據(jù)教學(xué)的情況,隨時(shí)進(jìn)行修改和完善,所以歡迎同學(xué)隨時(shí)注意本文檔在課件中的更新情況。單片機(jī)基礎(chǔ)知識(shí)單片機(jī)的外部結(jié)構(gòu):1、 DIP40 雙列直插;、 P0, P1, P2, P3 四個(gè) 8 位準(zhǔn)雙向 I/O 引腳;(作為 I/O 輸入時(shí),要先輸2出高電平)3、電源 VCC( PIN40)和地線GND( PIN20);4、高電平復(fù)位 RESET( PIN9);( 10uF 電容接 VCC與 RESET,即可實(shí)現(xiàn)上電復(fù)位)、內(nèi)置振蕩電路,外部只要接晶X1( PIN18)和 X0(PIN

2、19);(頻率為主 125體至頻的倍)6、程序配置 EA( PIN31)接高電平 VCC;(運(yùn)行單片機(jī)內(nèi)部ROM中的程序)7、 P3 支持第二功能: RXD、TXD、 INT0、 INT1、T0、 T1單片機(jī)內(nèi)部 I/O 部件: ( 所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程I/O 部件,完成指定任控制以下務(wù) )、四個(gè) 8 位通用 I/O 端口,對(duì)應(yīng)P0、 P1、 P2 和 P3;1引腳2、兩個(gè) 16 位定時(shí)計(jì)數(shù)器;(TMOD, TCON,TL0, TH0, TL1,TH1)3、一個(gè)串行通信接口;(SCON,SBUF)4、一個(gè)中斷控制器;(IE , IP )針對(duì) AT89C52單片機(jī),頭文件AT89x52

3、.h 給出了 SFR特殊功能寄存器所有端口的定義。160教科書的頁(yè)給出了針對(duì)MCS51系列單片機(jī)的C 語(yǔ)言擴(kuò)展變量類型。C 語(yǔ)言編程基礎(chǔ):、十六進(jìn)制表示字節(jié) 0x5a:二進(jìn)1制為01011010B;0x6E 為 01101110。、如果將一個(gè) 16 位二進(jìn)數(shù)賦給一 8 位的字節(jié)變量,則自動(dòng)截8 位,而丟2個(gè)斷為低掉高8 位。3、 +var 表示對(duì)變量 var 先增一; var 表示對(duì)變量后減一。4、 x|=0x0f;表示為 x=x|0x0f;0x5 ,而不改變 TMOD的高四5、 TMOD=(TMOD&0xf0)|0x05;表示給變量 TMOD的低四位賦值位。、 While(1);表示

4、無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,;6也就是第一章單片機(jī)最小應(yīng)用系統(tǒng):?jiǎn)纹瑱C(jī)最小系統(tǒng)的硬件原理接線圖:、接電源: VCC( PIN40)、 GND( PIN20)。加接退耦電容10.1uF、接晶體: X1( PIN18)、 X2( PIN19)。注意標(biāo)出晶體頻率12MHz),還有輔助電容2(選用30pF專業(yè)資料整理WORD格式3、接復(fù)位: RES( PIN9)。接上電復(fù)位電路,以及手動(dòng)復(fù)位電路,分析復(fù)位工作原理4、接配置: EA( PIN31)。說(shuō)明原因。專業(yè)資料整理WORD格式具體接法如下圖所示:第二章基本I/O口的應(yīng)用。例 1:用 P1 口輸出一倍頻方波。#include

5、<reg52.h>為包51 資源的庫(kù)文件含/reg52.hvoidmain(void)while(1=1)+P1;/ 使 P1 口加一完成一倍頻方波,注意: P0 的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4K7)至 VCC電源。例 2:用 P1 口輸出一倍頻方波 , 要求能用萬(wàn)用表測(cè)出方波。其實(shí),只需要在上面的程序中添加延時(shí)程序即可。#include<reg52.h>voidmain(void)unsignedinti,j;while(1=1)專業(yè)資料整理WORD格式+P1;for(i=0;i<1000;i+)專業(yè)資料整理WORD格式for(j=0;j<

6、;1000;j+); /該循環(huán)是一個(gè)大概的延時(shí),具體時(shí)間要看匯編語(yǔ)言的指令才能判斷。例 3:要求從 P1 口輸出一方波,要求變化的最快, P1.0 變化的最P1.7慢。#include<reg52.h>voidmain(void)unsignedcharm,n;/定義兩個(gè)中間變量完成交換過(guò)程unsignedinti,j;while(1)n=0;+m;/將第 位的值送至n|=(m<<7)&0x80;0第7 位n|=(m<<5)&0x40;/將第 位的值送至1第6 位n|=(m<<3)&0x20;/將第 位的值送至2第5 位n

7、|=(m<<1)&0x10;/將第 位的值送至3第4 位n|=(m>>1)&0x08;/將第 位的值送至4第3 位n|=(m>>3)&0x04;/將第 位的值送至5第2 位n|=(m>>5)&0x02;/將第 位的值送至6第1 位n|=(m>>7)&0x01;/將第 位的值送至7第0 位P1=n;for(i=0;i<1000;i+)for(j=0;j<1000;j+);注意:一個(gè)字節(jié)的 8 位 D7、 D6 至 D0,分別輸出到P3.7 、P3.6 至 P3.0 ,比如 P3=0x0

8、f ,則 P3.7 、 P3.6 、 P3.5 、P3.4 四個(gè)引腳都輸出低電平,而P3.3 、 P3.2 、P3.1 、 P3.0 四個(gè)引腳都輸出高電平。同樣,輸入一個(gè)端口 P2,即是將 P2.7 、 P2.6至 P2.0 ,讀入到一個(gè)字節(jié)的 8 位 D7、D6 至 D0。第三章顯示驅(qū)動(dòng)數(shù)碼管的接法和驅(qū)動(dòng)原理一支七段數(shù)碼管實(shí)8個(gè)發(fā)光二極管構(gòu)成,7 個(gè)組形構(gòu)成8 的七段筆畫,所以稱為七段數(shù)際由其中數(shù)字碼管,而余1 個(gè)發(fā)光二極管作為小數(shù)點(diǎn)。作為習(xí)慣,8 個(gè)發(fā)光二極管標(biāo)上記a,b,c,d,e,f,g,h。下的分別給號(hào):對(duì)8 的頂上一畫,按順時(shí)針?lè)较蚺?,中g(shù),小數(shù)點(diǎn)h。應(yīng)間一畫為8 位對(duì)應(yīng),為我們通

9、常又將各二極與一個(gè),相 8字節(jié)的a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h應(yīng)(D7)個(gè)發(fā)光二極管正好與單片機(jī)一Pn 的 8 個(gè)引腳連接,這樣單片機(jī)就可以通過(guò)引腳輸出高8個(gè)端口低電平控制專業(yè)資料整理WORD格式個(gè)發(fā)光二極的亮與滅,從而顯示各種數(shù)字和符號(hào);對(duì)應(yīng)字節(jié),引腳接法為:a(Pn.0) ,b(Pn.1) , c(Pn.2) , d(Pn.3) ,e(Pn.4) , f(Pn.5), g(Pn.6) , h(Pn.7) 。如果將 8 個(gè)發(fā)光二極管的負(fù)極(陰極)內(nèi)接在一起,作為數(shù)碼管的一個(gè)引腳,這種數(shù)碼管則被稱為共陰數(shù)碼管,共同的引腳則稱為共陰極,8

10、個(gè)正極則為段極。否則,如果是將正極(陽(yáng)極)內(nèi)接在一起引出專業(yè)資料整理WORD格式的,則稱為共陽(yáng)數(shù)碼管,共同的引腳則稱8 個(gè)負(fù)極則為段極。為共陽(yáng)極,Pn,共陰極GND,則可編寫出對(duì)應(yīng)十六進(jìn)制碼的七以單支共陰數(shù)碼管為例,可將段極接到某端口接段碼表字節(jié)數(shù)據(jù)如下圖:動(dòng)態(tài)顯示的電路連接如下圖所示:P1 口專業(yè)資料整理WORD格式下面,我們編程在數(shù)碼管上顯示出“1234”。程序如下:#include<reg52.h>CodeunsignedcharSeg7Code16=/ 用十六進(jìn)數(shù)作為數(shù)組下標(biāo),可直接取得對(duì)應(yīng)的七段編碼字節(jié)/0 1 2 3 4 5 6 7 8 9 A b C d E F 0x

11、3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;voidmain(void)unsignedinti;while(1)P2|=0x0f;/ 消隱,讓數(shù)碼管開始處于不亮的狀態(tài)P0=LedCode1;/ 將“ 1”的代碼送出P2&=0xfe;/ 選中第一個(gè)數(shù)碼管for( i=0;i<1000;i+) ;P2 |=0x0f;P0 =LedCode2;P2 &=0xfd;for( i=0;i<1000;i+) ;P2 |=0x0f;P0 =LedCode3;P2 &a

12、mp;=0xfb;for( i=0;i<1000;i+) ;P2 |=0x0f;P0 =LedCode4;P2 &=0xf7;for( i=0;i<1000;i+) ;關(guān)于 DRIVER編寫 DRIVER的目的是讓程序能適應(yīng)更多的場(chǎng)合,讓我們的使用更加方便,大家可以把一些自己編過(guò)的有用的程序做成 DRIVER便于自己以后的使用。下面介紹顯示的驅(qū)動(dòng)程序:<LedDriver.H>首先,定義一個(gè)頭文檔專業(yè)資料整理WORD格式,描述可用函數(shù),如下:#ifndef_LedDriver_H_/ 防止重復(fù)引用該文檔,如果沒(méi)有定義過(guò)符號(hào)_KEY_H,則編譯下面語(yǔ)句#defin

13、e_LedDriver_H_/ 只要引用過(guò)一次,即#include<key.h>,則定義符號(hào)_KEY_H_voidLedPrint(unsignedcharDat)/數(shù)據(jù)緩沖區(qū)間,完成移位功能voidLedWork(void)/ 送數(shù)到顯示數(shù)碼管專業(yè)資料整理WORD格式#endif然后,定義函數(shù)體文檔LedDriver.C,如下:#include<reg52.h>#include “ LedDriver.h”CodeunsignedcharLedCode16= /Code 是表示這個(gè)數(shù)組的存儲(chǔ)空間 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

14、x07,0x7f,0x6f,0x77,0x7c,0x39,0x5 e,0x79,0x71;unsignedcharDisBuf4; voidLedPrint(unsignedcharDat)DisBuf0=DisBuf1;/ 每次用后一個(gè)數(shù)沖掉前一個(gè)數(shù),便于擴(kuò)展顯示位數(shù)DisBuf1=DisBuf2;DisBuf2=DisBuf3;DisBuf3=Dat;voidLedWork(void)staticunsignedchari=0;/static表示靜態(tài)變量,指變量的賦值只在第一次定義的時(shí)候賦P2|=0x0f;P0=LedCodeDisBufi;Switch(i)/ 選擇數(shù)據(jù)送到哪個(gè)管子cas

15、e0:P2_0=0;break;case1:P2_1=0;break;case2:P2_2=0;break;case3:P2_3=0;break;if(+i>=4)i=0;/ 判斷四位數(shù)是否都已經(jīng)送完for(m=0;m<1000;m+/ 延時(shí));這樣 DRIVER的程序就編好了,我們以后用的時(shí)候直接調(diào)用函數(shù)就可以了。主程序可以編寫如下:#include<reg52.h>#include “ LedDriver.h”專業(yè)資料整理WORD格式voidmian(void)LedPrint(1);/ 調(diào)用函數(shù),把想顯示的數(shù)據(jù)送如緩存LedPrint(2);LedPrint(3)

16、;專業(yè)資料整理WORD格式LedPrint(4);While(1)LedWork();下面介紹一個(gè)例子供大家參考。顯示“ 12345678”P1 端口接 8 聯(lián)共陰數(shù)碼管的段極: P1.7接段 h, ?, P1.0 接段 aSLED8 的段極: P2.7接左邊的共陰極,?,P2.0 接右邊的共陰極P2 端口接 8 聯(lián)共陰數(shù)碼管,數(shù)碼管采用動(dòng)態(tài)刷新方式顯示,在1ms定時(shí)斷服務(wù)程序中實(shí)現(xiàn)SLED8方案說(shuō)明:晶振頻率fosc=12MHz#include<reg52.h>unsignedcharDisBuf8;/ 全局顯示緩沖區(qū),DisBuf0對(duì)應(yīng)右 SLED, DisBuf7對(duì)應(yīng)左 SL

17、ED,voidDisplayBrush(void)codeunsignedcharcathode8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/ 陰極控制碼codeunsignedcharSeg7Code16=/ 用十六進(jìn)數(shù)作為數(shù)組下標(biāo),可直接取得對(duì)應(yīng)的七段編碼字節(jié)0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;staticunsignedchari=0;/( 0i 7)循環(huán)刷新顯示,由于是靜態(tài)變量,此賦值只做一次。P2=0xff;/ 顯示消隱,

18、以免下一段碼值顯示在前一支SLEDP1=Seg7CodeDisBufi;/從顯示緩沖區(qū)取出原始數(shù)據(jù),查表變?yōu)槠叨未a后送出顯示P2=cathodei;/ 將對(duì)應(yīng)陰極置低,顯示if(+i>=8)i=0;/ 指向下一個(gè)數(shù)碼管和相應(yīng)數(shù)據(jù)voidTimer0IntRoute(void)interrupt1TL0=-1000;/ 由于 TL0 只有 8bits,所以將( -8 位賦 TL0TH0=(-1000)低給/ ?。?-1000 )的高 8 位賦給 TH0,重1ms1000)>>8;新定時(shí)DisplayBrush();voidTimer0Init(void)TMOD=(TMOD&a

19、mp;0xf0)|0x01;ET0=1;/ 允許T0,工作方式/ 初始化,定時(shí)器TL0=-1000 ; /定時(shí) 1msTH0=(-1000)>>8;T0 開始計(jì)數(shù)TR0=1;/ 允T0 計(jì)數(shù)溢出時(shí)產(chǎn)生中斷請(qǐng)求許專業(yè)資料整理WORD格式1voidDisplay(unsignedcharindex,unsignedchardataValue)DisBufindex=dataValue;voidmain(void)專業(yè)資料整理WORD格式unsignedchari;for(i=0;i<8;i+)Display(i,8-i);/DisBuf0為右, DisBuf0為左Timer0In

20、it();EA=1;/ 允許 CPU響應(yīng)中斷請(qǐng)求While(1);第四章鍵盤驅(qū)動(dòng)單片機(jī) I/O 口作為輸入的前提是必須首先輸出一個(gè)高電平。charKbhit(void)P1.0P1_0=1;return(1if(P1_9=0);elsereturn(0);)下面我們對(duì)上面的程序作個(gè)改進(jìn):charKbhit(void)P1=0xff;if(P10xff)!=0)return(1);一般來(lái)說(shuō),按鍵的時(shí)候會(huì)有抖動(dòng),我們可以用加延時(shí)的辦法來(lái)去除抖動(dòng)。即:P1=0xff;if(P10xff)!=0)延時(shí) 20ms;if(P10xff)!=0)return(1);4X4 按鍵。由 P1 端口的高 4 位和

21、低 4 位構(gòu)成 4X4 的矩陣鍵盤,本程序只認(rèn)為單鍵操作為合法,同時(shí)按多鍵時(shí)無(wú)效。0123P1.0(0xE)4567P1.1(0xD)89ABP1.2(0xB)專業(yè)資料整理WORD格式CDEFP1.3(0x7)P1.4(E)P1.5(D)P1.6(B)P1.7(7)專業(yè)資料整理WORD格式取鍵值的程序如下:unsignedchargetch(void)unsignedcharX,Y,Z;P1=0xf0;X=P1;P1=0x0f;Y=P1;Z=X|Y;switch(Z)case0xee:return(0);case0xde:return(1);case0xbe:return(2);case0x7

22、e:return(3);case0xed:return(4);case0xdd:return(5);case0xbd:return(6);case0x7d:return(7);case0xeb:return(8);case0xdb:return(9);case0xbb:return(10);case0x7b:return(11);case0xe7:return(12);case0xd7:return(13);case0xb7:return(14);case0x77:return(15);判斷有無(wú)鍵按下的程序:charKbhit(void)P1=0xf0;if(P1=0xf0)return(0)

23、;elsereturn(1);專業(yè)資料整理WORD格式下面是鍵盤的Driver程序:首先我們還是來(lái)寫KeyDriver.h這個(gè)程序:#ifndef_KeyDriver_h_#define_KeyDriver_h_charKhbit(void);專業(yè)資料整理WORD格式charGetch(void);#endif接著,我們來(lái)寫KeyDriver.c程序#include<reg52.h>#include “ KeyDriver.h”charKbhit(void)P1=0xf0;if(P1=0xf0)return(0);elsereturn(1);unsignedchargetch(vo

24、id)unsignedcharX,Y,Z;P1=0xf0;X=P1;P1=0x0f;Y=P1;Z=X|Y;switch(Z)case0xee:return(0);case0xde:return(1);case0xbe:return(2);case0x7e:return(3);case0xed:return(4);case0xdd:return(5);case0xbd:return(6);case0x7d:return(7);case0xeb:return(8);case0xdb:return(9);case0xbb:return(10);case0x7b:return(11);case0xe7

25、:return(12);case0xd7:return(13);case0xb7:return(14);專業(yè)資料整理WORD格式case0x77:return(15);按鍵顯示程序如下:#include<reg52.h>專業(yè)資料整理WORD格式#include “ LedDriver.h”#include “ KeyDriver.h”voidmain(void)unsignedchari;for(i=1;i<5;i+)LedPrint(i);while(1)if(Kbhit()LedPrint(Getch();LedWork();下面是另一個(gè)鍵盤值的算法,供大家參考。0123

26、P1.0(0xE)4567P1.1(0xD)89ABP1.2(0xB)CDEFP1.3(0x7)P1.4(E)P1.5(D)P1.6(B)P1.7(7)定義一個(gè)頭文檔<KEY.H>,描述可用函數(shù),如下:#ifndef_KEY_H_/ 防止重復(fù)引用該文檔,如果沒(méi)有定義過(guò)符號(hào)_KEY_H,則編譯下面語(yǔ)句#define_KEY_H_/ 只要引用過(guò)一次,即#include<key.h>,則定義符號(hào)_KEY_H_unsignedcharkeyHit(void);/ 如果按鍵,則返回非,否則返回unsignedcharkeyGet(void);/ 讀取按鍵值,如果沒(méi)有按鍵則等待到按

27、鍵為止voidkeyPut(unsignedcharucKeyVal);/保存按鍵值 ucKeyVal 到按鍵緩沖隊(duì)列末voidkeyBack(unsignedcharucKeyVal);/ 退回鍵值 ucKeyVal 到按鍵緩沖隊(duì)列首專業(yè)資料整理WORD格式#endif定義函數(shù)體文檔KEY.C,如下:專業(yè)資料整理WORD格式 include “ key.h ”#defineKeyBufSize16/ 定義按鍵緩沖隊(duì)列字節(jié)數(shù)unsignedcharKeyBufKeyBufSize;/ 定義一個(gè)無(wú)符號(hào)字符數(shù)組作為按鍵緩沖隊(duì)列。該隊(duì)列為先進(jìn)/ 先出,循環(huán)存取,下標(biāo)從到KeyBufSize-1uns

28、ignedcharKeyBufWp=0;/作為數(shù)組下標(biāo)變量,記錄存入位置 unsignedcharKeyBufRp=0;/作為數(shù)組下標(biāo)變量,記錄讀出位置/ 如果存入位置與讀出位置相同,則表明隊(duì)列中無(wú)按鍵數(shù)據(jù)unsignedcharkeyHit(void)if(KeyBufWp=KeyBufRp)return(0);elsereturn(1);unsignedcharkeyGet(void)unsignedcharretVal;/ 暫存讀出鍵值while(keyHit()=0);/ 等待按鍵,因?yàn)楹瘮?shù)keyHit()的返回值為0 表示無(wú)按鍵retVal=KeyBufKeyBufRp; /從數(shù)組中

29、讀出鍵值if(+KeyBufRp>=KeyBufSize)KeyBufRp=0;/ 讀位置加,超出隊(duì)列則循環(huán)回初始位置return(retVal);voidkeyPut(unsignedcharucKeyVal)KeyBufKeyBufWp=ucKeyVal; / 鍵值存入數(shù)組 if(+KeyBufWp>=KeyBufSize)KeyBufWp=0; / 存入位置加,超出隊(duì)列則循環(huán)回初始位置/*由于某種原因,讀出的按鍵,沒(méi)有用,但其它任務(wù)要用該按鍵,但傳送又不方便。此時(shí)可以退回按鍵隊(duì)列。就如取錯(cuò)了信件,有必要退回一樣*/voidkeyBack(unsignedcharucKeyVa

30、l)/*如果 KeyBufRp=0; 減 1 后則為 FFH,大于 KeyBufSize ,即從數(shù)組頭退回到數(shù)組尾?;蛘哂捎诟蓴_使得 KeyBufRp 超出隊(duì)列位置,也要調(diào)整回到正常位置,*/if(-KeyBufRp>=KeyBufSize)KeyBufRp=KeyBufSize-1;KeyBufKeyBufRp=ucKeyVal;/ 回存鍵值#include<at89x52.h>#include “ KEY.H”unsignedcharkeyScan(void)/ 返回 0 表示無(wú)按鍵,或無(wú)效按鍵,其它值為按鍵編碼值專業(yè)資料整理WORD格式codeunsignedcharkeyCode16=/0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF0,0,0,0,0,0,0,1,0,0,0,2,0,3,4,0;unsignedcharx,y,retVal;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論