曼徹斯特解碼原則+125K-EM4100系列RFID卡解碼源程序分析_第1頁
曼徹斯特解碼原則+125K-EM4100系列RFID卡解碼源程序分析_第2頁
曼徹斯特解碼原則+125K-EM4100系列RFID卡解碼源程序分析_第3頁
曼徹斯特解碼原則+125K-EM4100系列RFID卡解碼源程序分析_第4頁
曼徹斯特解碼原則+125K-EM4100系列RFID卡解碼源程序分析_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上曼徹斯特解碼原則+125K EM4100系列RFID卡解碼源程序分析曼徹斯特解碼原則1. 曼徹斯特編碼曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE),是一個同步時鐘編碼技術,被物理層使用來編碼一個同步位流的時鐘和數據。曼徹斯特編碼被用在以太網媒介系統中。曼徹斯特編碼提供一個簡單的方式給編碼簡單的二進制序列而沒有長的周期沒有轉換級別,因而防止時鐘同步的丟失,或來自低頻率位移在貧乏補償的模擬鏈接位錯誤。在這個技術下,實際上的二進制數據被傳輸通過這個電纜,不是作為一個序列的邏輯1或0來發(fā)送的(技術上叫做反向不歸零制(NRZ))。相反地,這些位

2、被轉換為一個稍微不同的格式,它通過使用直接的二進制編碼有很多的優(yōu)點。曼徹斯特編碼,常用于局域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數據信號;從高到低跳變表示"1",從低到高跳變表示"0"。還有一種是,每位中間的跳變僅提供時鐘定時,而用每位開始時有無跳變表示"0"或"1",有跳變?yōu)?quot;0",無跳變?yōu)?quot;1"。 對于以上電平跳變觀點有歧義:關于曼徹斯特編碼電平跳變,在雷振甲編寫的網絡工程師教程中對曼徹斯特編碼的解釋為:從低電平到高電平的轉換表示

3、1,從高電平到低電平的轉換表示0,模擬卷中的答案也是如此,張友生寫的考點分析中也是這樣講的,而計算機網絡(第4版)中(P232頁)則解釋為高電平到低電平的轉換為1,低電平到高電平的轉換為0。清華大學的計算機通信與網絡教程計算機網絡(第4版)采用如下方式:曼徹斯特編碼從高到低的跳變是 0 從低到高的跳變是 1 。兩種曼徹斯特編碼是將時鐘和數據包含在數據流中,在傳輸代碼信息的同時,也將時鐘同步信號一起傳輸到對方,每位編碼中有一跳變,不存在直流分量,因此具有自同步能力和良好的抗干擾性能。但每一個碼元都被調成兩個電平,所以數據傳輸速率只有調制速率的1/2。 就是說主要用在數據同步傳輸的一種編碼方式。【

4、在曼徹斯特編碼中,用電壓跳變的相位不同來區(qū)分1和0,即用正的電壓跳變表示0,用負的電壓跳變表示1。因此,這種編碼也稱為相應編碼。由于跳變都發(fā)生在每一個碼元的中間,接收端可以方便地利用它作為時鐘,因此,這種編碼也稱為自同步編碼?!?. 曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE);常用于局域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數據信號。但在不同的書籍中,曼徹斯特編碼中,電平跳動表示的值不同,這里產生很多歧義:1、在網絡工程師考試以及與其相關的資料中:位中間電平從高到低跳變表示"0";位中間電平從低到高

5、跳變表示"1"。2、在一些計算機網絡書籍中:位中間 電平從高到低跳變表示"1";位中間電平從低到高跳變表示"0"。在清華大學出版的計算機通信與網絡教程計算機網絡(第4版)也是這么說的,就以此為標準,我們就叫這為標準曼徹斯編碼。至于第一種,我們在這里就叫它曼徹斯特編碼。但是要記住,在不同的情況下懂得變通哦,否則會被老師扣分數的哦 。這兩者恰好相反,千萬別弄混淆了?,F在我們要講的 就是差分曼徹斯特編碼:在信號位開始時不改變信號極性,表示輯"1" 在信號位開始時改變信號極性,表示邏輯"0" ;【注意】

6、:如果在最初信號的時候,即第一個信號時:如果中間位電平從低到高,則表示0;如果中間位電平從高到低,則表示1;后面的(從第二個開始)就看每個信號位開始時有沒有跳變來決定:下面我們來舉個例子,來比較標準曼徹斯特編碼、曼徹斯特編碼、差分曼徹斯特編碼:EM4100系列用的是:曼徹斯特編碼!125K;EM4100系列RFID卡解碼源程序分析1. 我們知道了曼徹斯特編碼原則,那么反過來的過程就是解碼了。EM4100系列用的是:曼徹斯特編碼!2. 傳統只讀射頻卡讀卡器的設計一般采用U2270B或EM4095讀寫基站芯片加MCU模式,其成本高、功耗大。本文介紹一種采用一片74HC4060+LM258/358加

7、少量普通元件構成的讀卡器電路和處理的程序設計方案,電路簡單、功耗小、成本低。 74HC4060+LM258/358 電路為市面上已非常成熟 RFID-125KHZ-I卡且廣泛采用的低功耗、低成本方案。該方案在門禁、保安、考勤、展覽會、公園、旅店、餐廳等公共場所的門票、優(yōu)惠卡以及生產過程、郵政包裹、航空鐵路運輸、產品包裝、交通等部門的物流、電子標簽、防偽標 志、一次性票證等眾多領域上占據半壁江山。3. 推挽式放大電路輸出後接LC串聯諧振電路,當回路固有諧振頻率與輸入訊號頻率相等時,電路發(fā)生串聯諧振。本文只要求對125kHz頻率的訊號放大,所以根據串聯諧振公式計算電路中元件參數,可得L=737uH

8、,C=2200pF。4. 包絡檢波電路 感應線圈產生諧振電壓約有20V,所以載波訊號的電壓也約為20V。對輸入電壓高於500mV檢波,稱為大訊號檢波,利用二極體單向導電特性及檢波負載RC充放電過程實現。RC參數的確定需要滿足兩個條件:1.不產生隋性失真,一般工程上按計算,f為載波頻率。2.不產生負峰切割失真,即,m為調幅系數,R1是交流阻值,R0是直流阻值。聯立上述兩個條件,確定檢波電路中R12、C36分別為470k、4700pF。5. 波形整形電路 在單晶片處理之前,整形電路將檢波後的訊號變成單片機可以識別的高低電平。LM358 (LM258) 內部整合兩個運放,經過兩次整形後可以得到很好的

9、方波訊號。電路中R16、R17、R18、R19起到分壓作用,確定輸出翻轉門限為2.5V;R15、R21將同向輸入的電壓疊加在反向輸入端;C54、C55為耦合電容,能夠隔離直流分量,傳遞交流訊號。當U+大於U-+2.5V時,輸出高電平;當U+小於U-+2.5V時,輸出低電平。6. 讀卡程序是根據EM4100、EM4001系列射頻卡的特點量身定做的一段程序,射頻卡以曼徹斯特編碼,傳輸一個資料的時間t=64/125kHz=512s。實際使用中,一般傳輸時間為,230s<0.5t<280s。280s<定時器取樣時間<512s。所以本文中取樣波形時,定時器時間設定為400s,保證

10、為取樣留有足夠的時間。原程序分析:1. 定時器時間設定為400s#defineTH0_H 0xfe/ 定時器0 取樣定時值設定為400us#defineTL0_L 0x8f/8f2. 定時器0中斷優(yōu)先級最高: PT0=1;3. /曼徹斯特碼同步頭檢測,9個1采用逐個前移檢測法/逐個前移檢測法,即每檢測到一個數據,如果是"1",并向數據庫寫入1,/如果是"0",就放棄當前檢測的數據,并向當前數據流方向移動一位,/這樣一來,就保證了不管數據流是在何種狀態(tài)下,都能正確無誤地抓取9個1,/同步頭9個1的提取成功,曼徹斯特碼譯碼器即和當前的數據流保持了同步,/并把

11、余下的55位數據全部譯完。4. uchar REM_Buffer14;/曼徹斯特碼解碼后得到最終數據的緩存013/*曼徹斯特碼解碼后的數據放在 REM_Buffer013;REM_Buffer0=0xff 數據格式:1111 1111 同步頭,8個1REM_Buffer1=0x8x 數據格式:1xxx xxxx 同步頭,1個1,x表示無意義REM_Buffer2= 數據格式:D00D01D02D03 P0xxx 八個版本位或廠商信息的前四位,x表示無意義;P0為行效驗位REM_Buffer3= 數據格式:D10D11D12D13 P1xxx 八個版本位或廠商信息的后四位,x表示無意義;P1為行

12、效驗位REM_Buffer4= 數據格式:D20D21D22D23 P2xxx 三十二個數據,x表示無意義;P2為行效驗位REM_Buffer5= 數據格式:D30D31D32D33 P3xxx 三十二個數據,x表示無意義;P3為行效驗位REM_Buffer6= 數據格式:D40D41D42D43 P4xxx 三十二個數據,x表示無意義;P4為行效驗位REM_Buffer7= 數據格式:D50D51D52D53 P5xxx 三十二個數據,x表示無意義;P5為行效驗位REM_Buffer8= 數據格式:D60D61D62D63 P6xxx 三十二個數據,x表示無意義;P6為行效驗位REM_Buf

13、fer9= 數據格式:D70D71D72D73 P7xxx 三十二個數據,x表示無意義;P7為行效驗位REM_Buffer10= 數據格式:D80D81D82D83 P8xxx 三十二個數據,x表示無意義;P8為行效驗位REM_Buffer11= 數據格式:D90D91D92D93 P9xxx 三十二個數據,x表示無意義;P9為行效驗位REM_Buffer12= 數據格式:PC0PC1PC2PC3 0xxx 四個列效驗位,x表示無意義;0為停止位原程序:/2008.10.15/125K;EM4100系列RFID卡解碼/#include <reg52.h>/使用AT89S51/52等

14、系列單片機頭文件#include <STC12C5410AD.h>/stc系列單片機專用頭文件#include <intrins.h>#define uint unsigned int/定義 #define uchar unsigned char/定義 #define ulong unsigned long/定義 sbit REM=P21;/ 曼徹斯特編碼輸入端sbit CLK=P33;/產生125KHZ 時鐘信號端sbit LED=P25;/ 紅燈sbit SPP=P10;/ 喇叭bit REM_BIT;/ 曼徹斯特碼高、低邊沿跳變標志位,bit Efficacy_B

15、IT; /待效驗標志位,bit P_PC_BIT; /行,列效驗標志位bit YES_NO_BIT; /效驗正確,或效驗錯誤標志位,/YES_NO_BIT=1 表示效驗正確;/YES_NO_BIT=0 表示效驗錯誤。#defineTH0_H 0xfe/ 定時器0 取樣定時值設定為400us#defineTL0_L 0x8f/8f/350420us/375450usuchar U_D_Buffer5;/User_Data/用戶數據緩存,ulong long_D;/方法1,卡號在 long_D 中,不足10位,則在高位前面加 0uchar char_D;/方法2,前兩位卡號在 char_D 中,u

16、int int_D;/方法2,卡號后4位卡號在 int_D 中,uchar volue;/volue 為曼徹斯特碼譯碼時的臨時運算緩存uchar REM_Buffer14;/曼徹斯特碼解碼后得到最終數據的緩存013/*曼徹斯特碼解碼后的數據放在 REM_Buffer013;REM_Buffer0=0xff 數據格式:1111 1111 同步頭,8個1REM_Buffer1=0x8x 數據格式:1xxx xxxx 同步頭,1個1,x表示無意義REM_Buffer2= 數據格式:D00D01D02D03 P0xxx 八個版本位或廠商信息的前四位,x表示無意義;P0為行效驗位REM_Buffer3=

17、 數據格式:D10D11D12D13 P1xxx 八個版本位或廠商信息的后四位,x表示無意義;P1為行效驗位REM_Buffer4= 數據格式:D20D21D22D23 P2xxx 三十二個數據,x表示無意義;P2為行效驗位REM_Buffer5= 數據格式:D30D31D32D33 P3xxx 三十二個數據,x表示無意義;P3為行效驗位REM_Buffer6= 數據格式:D40D41D42D43 P4xxx 三十二個數據,x表示無意義;P4為行效驗位REM_Buffer7= 數據格式:D50D51D52D53 P5xxx 三十二個數據,x表示無意義;P5為行效驗位REM_Buffer8= 數

18、據格式:D60D61D62D63 P6xxx 三十二個數據,x表示無意義;P6為行效驗位REM_Buffer9= 數據格式:D70D71D72D73 P7xxx 三十二個數據,x表示無意義;P7為行效驗位REM_Buffer10= 數據格式:D80D81D82D83 P8xxx 三十二個數據,x表示無意義;P8為行效驗位REM_Buffer11= 數據格式:D90D91D92D93 P9xxx 三十二個數據,x表示無意義;P9為行效驗位REM_Buffer12= 數據格式:PC0PC1PC2PC3 0xxx 四個列效驗位,x表示無意義;0為停止位*/uchar code DispTab=

19、9;0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'uchar code Data="Data: "/數據uchar code UserData="User Data: "/用戶數據uchar code Card_1="Met

20、hods 1 Decimal Card Number: "/方法1:掐頭留尾法提取10位十進制卡號:uchar code Card_2="Methods 2 Decimal Card Number: "/方法2:前兩位后4位的微根格式,段間以小數點或豆號隔開uchar code DispTab_2=' ','H',','void init()/TMOD=0x21;TH1=0xfd;/11.0592MHz 波特率: 9600TL1=0xfd;PCON&=0x80;SCON=0x40;/AUXR=0x40;/波特

21、率倍增 /11.0592MHz TH0=0x00;/TL0=0x00;/EA=1;ET0=1;TR0=0;TR1=1;ES=0;REN=1;PT0=1;/PT0H=1;/定時器0中斷優(yōu)先級最高:第三/PT0H是 stc單片機特有的寄存器REM=1;CLK=1;SPP=1;LED=1;REM_BIT=1;void delay1(uint z)/ delay(10); 10次為1msuchar x;for(;z>0;z-)for(x=0;x<160;x+)/*void delay()/ _nop_();_nop_();_nop_();*/void Time_interrupt(void

22、) interrupt 1 /定時器0中斷TR0=0;/關閉定時器0,為曼徹斯特碼提取數據定時器void RS232_in(void) interrupt 4/串口中斷EA=0;if(RI=1)/接收 RI=0; /SBUF_RI_Buffer0=SBUF;/RS2323接收緩沖區(qū)/else /if(TI=1)/發(fā)送TI=0;EA=1;void RS232()/通信轉輸數據,發(fā)給 PCuchar i;ulong mm;/ES=0;if(REM_Buffer0=0xff)&&(REM_Buffer1=0x80)/同步頭9個1的判斷,同步頭正確,進入數據發(fā)送,否則退出for(i=0

23、;i<6;i+)SBUF=Datai;/" "while(TI=0);TI=0;for(i=0;i<13;i+)SBUF=DispTab(REM_Bufferi/16);/SBUF=REM_Bufferi;/給 PC 發(fā)送REM_Buffer013個數據while(TI=0);/TI=1,表示數據發(fā)送完畢,TI=0;/TI清零,并把余下的數據繼續(xù)發(fā)送,直到13個數據全部發(fā)送完。SBUF=DispTab(REM_Bufferi%16);while(TI=0);TI=0;SBUF=DispTab_21;/'H'while(TI=0);TI=0;SBU

24、F=DispTab_20;/' 'while(TI=0);TI=0;for(i=0;i<94;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;/U_D_Buffer5;/User_Data/用戶數據緩存,for(i=0;i<11;i+)SBUF=UserDatai;/" "while(TI=0);TI=0;for(i=0;i<5;i+)SBUF=DispTab(U_D_Bufferi/16);while(TI=0);TI=0;SBUF=DispTab(U_D_Bufferi%16);whi

25、le(TI=0);TI=0;SBUF=DispTab_21;/'H'while(TI=0);TI=0;SBUF=DispTab_20;/' 'while(TI=0);TI=0;for(i=0;i<120;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;for(i=0;i<31;i+)SBUF=Card_1i;/" "while(TI=0);TI=0;/10位十進制卡號 Card_1SBUF=DispTablong_D/;/10while(TI=0);TI=0;mm=long_D%

26、;SBUF=DispTabmm/;/9while(TI=0);TI=0;mm=long_D%;SBUF=DispTabmm/;/8while(TI=0);TI=0;mm=long_D%;SBUF=DispTabmm/;/7while(TI=0);TI=0; mm=long_D%;SBUF=DispTabmm/;/6while(TI=0);TI=0; mm=mm%;SBUF=DispTabmm/10000;/5while(TI=0);TI=0;mm=long_D%10000;SBUF=DispTabmm/1000;/4while(TI=0);TI=0;mm=long_D%1000;SBUF=Di

27、spTabmm/100;/3while(TI=0);TI=0;mm=long_D%100;SBUF=DispTabmm/10;/2while(TI=0);TI=0;SBUF=DispTabmm%10;/1while(TI=0);TI=0;/Card_2for(i=0;i<106;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;for(i=0;i<31;i+)SBUF=Card_2i;/" "while(TI=0);TI=0;SBUF=DispTabchar_D/100;/while(TI=0);TI=0;cha

28、r_D=char_D%100;SBUF=DispTabchar_D/10;/while(TI=0);TI=0;SBUF=DispTabchar_D%10;/while(TI=0);TI=0;SBUF=DispTab_22;/while(TI=0);TI=0;SBUF=DispTabint_D/10000;/while(TI=0);TI=0;int_D=int_D%10000;SBUF=DispTabint_D/1000;/while(TI=0);TI=0;int_D=int_D%1000;SBUF=DispTabint_D/100;/while(TI=0);TI=0;int_D=int_D%1

29、00;SBUF=DispTabint_D/10;/while(TI=0);TI=0;SBUF=DispTabint_D%10;/while(TI=0);TI=0;for(i=0;i<109;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;/ES=0;void REM_init()/射頻接口初始化CLK=0;/為74HC4060 提供+5V電源,74HC4060得電后輸出125KHZ信號void REM_Processing()/曼徹斯特碼數據提取uchar i,ii;loop:TR0=0;volue=0;for(i=0;i<9;i

30、+)/曼徹斯特碼同步頭檢測,9個1采用逐個前移檢測法/逐個前移檢測法,即每檢測到一個數據,如果是"1",并向數據庫寫入1,/如果是"0",就放棄當前檢測的數據,并向當前數據流方向移動一位,/這樣一來,就保證了不管數據流是在何種狀態(tài)下,都能正確無誤地抓取9個1,/同步頭9個1的提取成功,曼徹斯特碼譯碼器即和當前的數據流保持了同步,/并把余下的55位數據全部譯完。while(REM=1)if(TR0=0)goto loop;/break;TR0=0;TH0=TH0_H;/開啟400us定時器,TL0=TL0_L;TR0=1;while(TR0=1);TH0=

31、TH0_H;/開啟400us定時器,同步頭逐個前移檢測TL0=TL0_L;TR0=1;if(REM=0)goto loop;if(i<8)volue<<=1;volue|=0x01;if(i=7)REM_Buffer0=volue;REM_Buffer1=0x80;TR0=0;REM_BIT=0;volue=0x00;TH0=TH0_H;/400usTL0=TL0_L; /下降TR0=1;for(i=2;i<13;i+)/曼徹斯特碼解碼 for(ii=0;ii<5;ii+)/曼徹斯特碼解碼while(TR0=1);if(REM=1)if(REM_BIT=0)whi

32、le(REM=1);/曼徹斯特碼跳變?yōu)楦唠娖絖nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=1);/_nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=1);/volue<<=1;/用左移指令把"1"移入voluevolue|=0x08;/跳變的瞬間提取數據,TH0=TH0_H;/開啟400us定時器,為下次提取數據提供參考TL0=TL0_L;TR0=1;REM_BIT=0;/曼徹斯特碼標志位置"0"else /if(REM_BIT=1)while(REM=1

33、);/曼徹斯特碼跳變?yōu)楦唠娖絖nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=1);_nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=1);volue<<=1;/用左移指令把"1"移入voluevolue|=0x08;/跳變的瞬間提取數據,TH0=TH0_H;/開啟400us定時器,為下次提取數據提供參考TL0=TL0_L;TR0=1;REM_BIT=0;/曼徹斯特碼標志位置"0"else /if(REM=0)if(REM_BIT=0)while(REM=0)

34、;/曼徹斯特碼跳變?yōu)橄陆笛豞nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=0);_nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=0);volue<<=1;/用左移指令把"0"移入volueTH0=TH0_H;/開啟400us定時器,為下次提取數據提供參考TL0=TL0_L;TR0=1;REM_BIT=1;/曼徹斯特碼標志位置"1"else /if(REM_BIT=1)while(REM=0);/曼徹斯特碼跳變?yōu)橄陆笛豞nop_();_nop_();_nop

35、_();_nop_();/抗抖動while(REM=0);_nop_();_nop_();_nop_();_nop_();/抗抖動while(REM=0);volue<<=1;/用左移指令把"0"移入volueTH0=TH0_H;/開啟400us定時器,為下次提取數據提供參考TL0=TL0_L;TR0=1;REM_BIT=1;/曼徹斯特碼標志位置"1"REM_Bufferi=volue;volue=0x00;void Efficacy()/數據效驗uchar i,ii,cache,cache_1,counter;/counter=0;for(

36、i=2;i<12;i+)/行效驗counter=0;cache=REM_Bufferi;cache_1=REM_Bufferi;for(ii=0;ii<4;ii+)cache&=0x80;if(cache=0x80)counter+;cache_1<<=1;cache=cache_1;if(counter=0)|(counter=2)|(counter=4)Efficacy_BIT=0;else if(counter=1)|(counter=3)Efficacy_BIT=1;cache=REM_Bufferi;cache&=0x08;if(cache=0

37、x08)P_PC_BIT=1;else P_PC_BIT=0;if(Efficacy_BIT=P_PC_BIT)YES_NO_BIT=1; /表示效驗正確elseYES_NO_BIT=0; /表示效驗錯誤if(YES_NO_BIT=0)/效驗錯誤,無條件返回return;cache_1=0x80;for(i=0;i<4;i+)/列效驗counter=0;for(ii=2;ii<12;ii+)cache=REM_Bufferi;cache&=cache_1;if(cache=cache_1)counter+=1;if(counter=0)|(counter=2)|(counter=4)|(counter=6)|(counter=8)|(counter=10)Efficacy_BIT=0;else if(counter=1)|(counter=3)|(counter=5)|(counte

溫馨提示

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

最新文檔

評論

0/150

提交評論