單片機(c語言版)定時器計數(shù)器_第1頁
單片機(c語言版)定時器計數(shù)器_第2頁
單片機(c語言版)定時器計數(shù)器_第3頁
單片機(c語言版)定時器計數(shù)器_第4頁
單片機(c語言版)定時器計數(shù)器_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章AT89S51單片機的

定時器/計數(shù)器

內(nèi)容概要:介紹AT89S51單片機片內(nèi)定時器/計數(shù)器的結構與功能,兩種工作模式和4種工作方式,以及與其相關的兩個特殊功能寄存器TMOD和TCON各位的定義及其編程,最后介紹定時器/計數(shù)器的C51編程及應用實例。2021/5/916.1定時器/計數(shù)器的結構定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位THX(X=0或1)和低8位TLX兩個寄存器組成。TMOD是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動和停止及設置溢出標志。

外部脈沖2021/5/92圖6-1AT89S51單片機的定時器/計數(shù)器結構框圖2021/5/936.1.1工作方式控制寄存器TMODAT89S51定時器工作方式寄存器TMOD用于選擇工作模式和工作方式,字節(jié)地址為89H,不能位尋址。8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE—門控位GATE=0時,僅由運行控制位TRx(x

=

0,1)來控制定時器運行GATE=1時,用外中斷引腳INT0*(或INT1*)上的電平與運行控制位TRx共同控制定時器運行。圖6-2寄存器TMOD格式2021/5/94(2)M1、M0—工作方式選擇位M1、M0的4種編碼,對應于4種工作方式的選擇。(3)C/T*—計數(shù)器模式和定時器模式選擇位C/T*=0,為定時器工作模式,對單片機的晶體振蕩器12分頻后的脈沖進行計數(shù)。C/T*=1,為計數(shù)器工作模式,計數(shù)器對外部輸入引腳T0(P3.4)或T1(P3.5)的外部脈沖(負跳變)計數(shù)。2021/5/956.1.2定時器/計數(shù)器控制寄存器TCONTCON字節(jié)地址為88H,可位尋址,位地址為88H~8FH。(1)TF1、TF0—計數(shù)溢出標志位。當計數(shù)器計數(shù)溢出時,該位置“1”。使用查詢方式時,應注意查詢有效后,使用軟件及時將該位清“0”。使用中斷方式時,中斷請求標志位在進入中斷服務程序后由硬件自動清“0”。(2)TR1、TR0—計數(shù)運行控制位。TR1位(或TR0位)=1,啟動定時器工作。TR1位(或TR0位)=0,停止定時器工作。該位可由軟件置“1”或清“0”。圖6-3TCON格式2021/5/966.2定時器/計數(shù)器的4種工作方式6.2.1方式0——M1M0=00方式0為13位計數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時,置位TCON中的TF0標志,向CPU發(fā)出中斷請求。2021/5/97圖6-4定時器/計數(shù)器方式0邏輯結構框圖C/T*位決定定時器/計數(shù)器的兩種工作模式(1)C/T*=0,T1(或T0)為定時器工作模式,把時鐘振蕩器12分頻后的脈沖作為計數(shù)信號。(2)C/T*=1,T1(或T0)為計數(shù)器工作模式,計數(shù)脈沖為P3.4(或P3.5)引腳上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加1。2021/5/98GATE位決定定時器的運行控制取決于TRx一個條件,還是取決于TRx和INTX*(x=0,1)引腳狀態(tài)這兩個條件。(1)GATE=0時,僅由TR0控制與門的開啟。與門輸出1時,控制開關接通,計數(shù)開始;(2)GATE=1時,由外中斷引腳信號控制或門的輸出,此時控制與門的開啟由外中斷引腳信號和TR0共同控制。當TR0=1時,外中斷引腳信號引腳的高電平啟動計數(shù),外中斷引腳信號引腳的低電平停止計數(shù)。這種方式常用來測量外中斷引腳上正脈沖的寬度。定時器模式時有:N=t/Tcy計數(shù)初值計算的公式為:2021/5/99

6.2.2方式1——M1M0=01方式1的計數(shù)位數(shù)是16位,由TLX作為低8位、THX作為高8位,組成了16位加1計數(shù)器。計數(shù)個數(shù)與計數(shù)初值的關系為:

2021/5/910

6.2.3方式2——M1M0=10方式2為自動重裝初值的8位計數(shù)方式。

工作方式2特別適合于用作較精確的脈沖信號發(fā)生器。

計數(shù)個數(shù)與計數(shù)初值的關系為:

工作過程

2021/5/911

T0分成兩個8位定時/計數(shù)器TL0和TH0;

TL0:既可計數(shù)也可定時,是一個8位定時/計數(shù)器。占用了T0

所有控制位:C/T,TR0,GATE,TF0和INT0、T0引腳;

TH0:只能作為定時器,因為T0已被TL0占用,TH0用T1的控制位:TR1、TF1;6.2.4方式3——M1M0=112021/5/91213T0在方式3時T1的工作模式T1只能工作在0、1、2方式,作為串行口的波特率發(fā)生器使用。因為T1的運行控制位TR1及計數(shù)溢出標志位TF1已被定時/計數(shù)器T0借用。當作為波特率發(fā)生器使用時,只需要設置好工作方式,便可自動運行。如要停止工作,只需送入一個把T1設置為方式3的方式控制字。因為定時/計數(shù)器T1不能在方式3下工作,因為T1處于方式3時相當于TR1

=

0,停止計數(shù)。2021/5/9136.3對外部輸入的計數(shù)信號的要求當定時器/計數(shù)器工作在計數(shù)器模式時,計數(shù)脈沖來自外部輸入引腳T0或T1。當輸入信號產(chǎn)生由1至0的跳變(即負跳變)時,計數(shù)器值增1。由于確認一次負跳變花2個機器周期,即24個振蕩周期,因此外部輸入的計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。圖6-12

對外部計數(shù)輸入信號的要求例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高為250kHz。如果選用12MHz頻率的晶體,則可輸入最高頻率為500kHz的外部脈沖。2021/5/914156.3對外部輸入的計數(shù)信號的要求當定時器/計數(shù)器工作在計數(shù)器模式時,計數(shù)脈沖來自外部輸入引腳T0或T1。當輸入信號產(chǎn)生由1至0的跳變(即負跳變)時,計數(shù)器值增1。由于確認一次負跳變花2個機器周期,即24個振蕩周期,因此外部輸入計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。圖6-12

對外部計數(shù)輸入信號的要求例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高為250kHz。如果選用12MHz頻率的晶體,則可輸入最高頻率為500kHz的外部脈沖。2021/5/915時間常數(shù)的計算時間常數(shù):定時器/計數(shù)器T0或T1的初始計數(shù)值,在T0或T1被啟動后,每個機器周期使計數(shù)器中的計數(shù)值加1,計數(shù)器產(chǎn)生溢出后。定時時間:計數(shù)器溢出時間,時間常數(shù)越大,定時時間就越短;時間常數(shù)越小,定時時間就越長。時鐘的頻率越高,定時時間越短;時鐘的頻率越低,定時時間越長。2021/5/916設系統(tǒng)時鐘的頻率為fosc,計數(shù)器的初始值為N,定時器工作于方式1,則定時時間:

T=(216-N)×12/fosc(1)

如果定時器工作于方式2或方式3,定時時間為:

T=(28-N)×12/fosc(2)

當初始值N=0時,如果fosc=12MHZ,最大定時時間為:方式1為:Tmax=216×12/fosc=65536us=65.536ms

方式2、方式3為:Tmax=28×12/fosc=256us根據(jù)定時時間T,及公式(1)、(2)分別可以求出初值N為:方式1:

N=216-T×fosc/12(3)方式2、方式3:N=28-T×fosc/12(4)如果fosc=12MHZ,以上公式可簡化為方式1:N=216-T

方式2、方式3:N=28-T2021/5/917

例如:系統(tǒng)的時鐘頻率是12MHz,在方式1下,如果希望定時器/計數(shù)器T0的定時時間T為10ms,則初值N=216-T=65536-10000=55536

如何將55536給兩個8位寄存器TH0、TL0賦值呢?可將十進制數(shù)55536轉(zhuǎn)換成四位十六進制數(shù),將高2位送TH0,低2位送TL0。

更簡單的方法是:對于16位計數(shù)器來講,216等效為0,對于8位計數(shù)器,28等效為0,這樣公式(3)、(4)可簡化為N=-T,直接用下面兩條語句就可以完成計數(shù)器初值的設置:

TH0=-10000/256;//取-N的高8位

TL0=-10000%256;//取-N的低8位

例如:設系統(tǒng)的時鐘頻率是12MHz,定時器工作于方式2,定時時間200us。根據(jù)前面分析,N=-T=-200,可直接用以下語句實現(xiàn):

TH0=-200;TL0=-200;2021/5/918MCS-51單片機的定時器是可編程的,但在進行定時或計數(shù)之前要對程序進行初始化,具體步驟如下:(1)確定工作方式字:對TMOD寄存器正確賦值;(2)確定定時初值:計算初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1; 初值計算:設計數(shù)器的最大值為M,則置入的初值X為: 計數(shù)方式:X=M-計數(shù)值 定時方式:由(M-X)T=定時值,得X=M-定時值/T T為計數(shù)周期,是單片機的機器周期。 (模式0-M為213,模式1-M為216,模式2和3-M為28)(3)根據(jù)需要,對IE置初值,開放定時器中斷;(4)啟動定時/計數(shù)器,對TCON寄存器中的TR0或TR1置位,置位以后,計數(shù)器即按規(guī)定的工作模式和初值進行計數(shù)或開始定時。6.4定時器/計數(shù)器的編程和應用2021/5/9196.4.1P1口外接的8只LED每0.5s閃亮一次。【例6-1】在AT89S51單片機的P1口上接有8只LED(電路見圖4-7)。下面采用定時器T0的方式1的定時中斷方式,使P1口外接的8只LED每0.5s閃亮一次。(1)設置TMOD寄存器方式1;計時工作模式;僅由TR0來控制;T1不使用。TMOD寄存器應初始化為0x01=00000001B2021/5/920(2)計算T0計數(shù)初值設定時時間5ms(即5000μs),設定時器T0的計數(shù)初值為X,假設晶振的頻率為11.0592MHz,則定時時間為:定時時間=(216?X)

12/晶振頻率則5000=(216

?X)

12/11.0592得:X=60928,轉(zhuǎn)換成16進制后為:0xee00,其中0xee裝入TH0,0x00裝入TL0。(3)設置IE寄存器本例由于采用定時器T0中斷,因此需將IE寄存器中的EA、ET0位置1。(4)啟動和停止定時器T0將定時器控制寄存器TCON中的TR0=1,則啟動定時器T0;TR0=0,則停止定時器T0定時。2021/5/921#include<reg51.h>Chari=100;/*給變量i賦初值,定時0.5S,每次定時中斷5MS,需要中斷100次*/voidmain(){ TMOD=0x01; /*設置定時器T0為方式1*/ TH0=0xee; /*向TH0寫入初值的高8位*/ TL0=0x00; /*向TL0寫入初值的低8位*/ P1=0x00; /*P1口8只LED點亮*/ EA=1; /*總中斷允許*/ ET0=1; /*定時器T0中斷允許*/ TR0=1; /*啟動定時器T0*/ while(1); /*無窮循環(huán),等待定時中斷*/}2021/5/922/*以下為定時器T0的中斷服務程序*/voidT0_int(void)interrupt1

{ TH0=0xee;/*給T0裝入16位初值,計4608個數(shù)后,T0溢出 TL0=0x00; i--;/*循環(huán)次數(shù)減1*/ if(i<=0) { P1=~P1; /*P1口按位取反*/ i=100; /*重新設置循環(huán)次數(shù)*/ }}2021/5/923

[案例2]如圖所示,P0口接8只發(fā)光二極管,編程使發(fā)光管輪流點亮,點亮時間為500ms,要求使用定時器T0來控制,設晶振為12MHz。2021/5/924

設計思想

我們可將P0口的初值設置為0xFE,對應于發(fā)光管D1亮,每隔500ms將P0的值循環(huán)左移一位,這一周期性的定時作業(yè)用T0來完成。當時鐘頻率為12MHZ時,在定時器的4種工作方式中,方式1的最大溢出時間最長,但即使在方式1,最大的溢出時間也只有65.536ms,所以我們不能在每次中斷時都執(zhí)行上述移位操作。可以這樣處理:將定時器T0的溢出時間設定為50ms,累計滿10次中斷正好500ms,才允許程序執(zhí)行1次移位動作。2021/5/925

主函數(shù)ucharcount=0;//50ms定時中斷次數(shù)計數(shù)器voidmain(void){led=0xfe;TMOD=0x01;//T0工作于方式1TH0=-50000/256;//定時時間為50msTL0=-50000%256;ET0=1;//允許T0中斷

TR0=1;//啟動T0定時

EA=1;//CPU開中斷

while(1);}2021/5/926voidtime0(void)interrupt1{TH0=-50000/256;TL0=-50000%256;count++;if(count==10){count=0;led=_crol_(led,1);P0=led;}}定時器T0中斷服務程序重新裝入時間常數(shù)每中斷一次,計數(shù)器加110次中斷為0.5秒滿10次變量led左移1位送P0口2021/5/9276.4.2計數(shù)器的應用【例6-2】

采用定時器T1的方式1的中斷計數(shù)方式,如圖6-13所示,計數(shù)輸入引腳T1(P3.5)上外接開關K1,作為計數(shù)信號輸入。按4次K1后,P1口的8只LED閃爍不停。(1)設置TMOD寄存器T1工作在方式1,應使TMOD的M1、M0=01;設置計數(shù)器工作模式C/T*=1;對T0的運行控制僅由TR0來控制,應使GATE0=0。定時器T0不使用,各相關位均設為0。所以,TMOD寄存器應初始化為0x50。圖6-132021/5/928(2)計算T1計數(shù)初值由于每按4次K1,計數(shù)一次,因此計數(shù)器的初值為65536-4=65532,將其轉(zhuǎn)換成16進制后為:0xfffc,因此,TH0=0xff,TL0=0xfc。(3)設置IE寄存器本例由于采用定時器T1中斷,因此需將IE寄存器中的EA、ET1位置1。(4)啟動和停止定時器T1將定時器控制寄存器TCON中的TR1=1,則啟動定時器T1計數(shù);TR1=0,則停止定時器T1計數(shù)。參考程序如下:2021/5/929#include<reg51.h>/*定義延時函數(shù)Delay(),i是形式參數(shù),不能賦初值*/voidDelay(unsignedinti){ unsignedintj; /*變量i由實際參數(shù)傳入一個值,因此i不能賦初值*/ for(;i>0;i--) for(j=0;j<125;j++) {;} /*空函數(shù)*/}voidmain() /*主函數(shù)*/{ TMOD=0x50; /*設置定時器T1為方式1計數(shù)*/ TH0=0xff; /*向TH0寫入初值的高8位*/2021/5/930 TL0=0xfc; /*向TL0寫入初值低8位*/ EA=1; /*總中斷允許*/ ET1=1; /*T1中斷允許*/ TR1=1; /*啟動T1*/ while(1); /*無窮循環(huán),等待定時中斷*/}/*以下為定時器T1的中斷服務程序*/voidT1_int(void)interrupt3{ for(;;) /*無限循環(huán)*/ { P1=0xff; /*8位LED全滅*/ Delay(500); /*延時500ms*/ P1=0; /*8位LED全亮*/ Delay(500); /*延時500ms*/ }}2021/5/931[案例4]用定時器來控制數(shù)碼管的動態(tài)顯示。

用定時器控制數(shù)碼管動態(tài)顯示的方法:設定時器的定時時間為1ms,每次產(chǎn)生溢出中斷,就根據(jù)位選變量bsel(主程序中將其初值設置為0xfe)送位選口,點亮一位數(shù)碼管,并將bsel左移一位,為下一位的顯示做好準備,4次定時中斷分別完成4位數(shù)碼管的顯示,之后將bsel的值再次初始化為0xfe,準備下一輪顯示。

因此這種顯示方式由定時中斷自動完成,無需在主程序中調(diào)用2021/5/932主程序ucharbsel,n;voidmain(void){n=0;bsel=0xfe;//首先顯示數(shù)碼管的最低位

TMOD=0x01;//T0工作于定時方式2TH0=-1000/256;//T0的定時時間為1000usTL0=-1000%256;ET0=1;//允許T0中斷

TR0=1;//啟動定時

EA=1;//開中斷

while(1);}ucharcodesegtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c};uchardbuf[4]={4,3,2,1};

字符0~F的字形碼表顯示緩存,存放要顯示字符2021/5/933voidtime0(void)interrupt1{TH0=-1000/256;TL0=-1000%256;P0=0xff;P2=bsel;P0=segtab[dbuf[n]];bsel=_crol_(bsel,1);n++; if(n==4) {n=0; bsel=0xfe; }}重新裝入時間常數(shù)定時器T0中斷服務程序熄滅數(shù)碼管,防止上一位字符在當前位置顯示出來。點亮當前位根據(jù)顯示緩存查字段碼準備顯示下一位指向下一位要顯示的數(shù)據(jù)如果四位已顯示完,重新從最低位開始2021/5/9346.4.3擴展一個外部中斷源方式2可自動重新裝載初值。此方式可省去用戶程序中重新裝初值的指令。當某個定時器/計數(shù)器不使用時,可為AT89S51擴展一個負跳沿觸發(fā)的外部中斷源。

基本思想:把定時器溢出中斷做成外部中斷,然后把計數(shù)輸入信號接到定時器的相應引腳上T0腳(或T1腳),并把定時器被設置為方式2(自動裝入常數(shù)方式)計數(shù)工作模式,計數(shù)器TH0、TL0初值均為0FFH,并允許T0中斷,總中斷開放。當檢測到T0腳(或T1腳)引腳電平發(fā)生負跳變時,計數(shù)器TF0(或TF1)溢出,這時將產(chǎn)生一個中斷請求?!纠?-3】擴展一個負跳沿觸發(fā)的外部中斷源,把定時器T0計數(shù)輸入引腳作為外部中斷請求信號的輸入端。2021/5/935#include<reg51.h>voidmain(){……… TMOD=0x06; /*設置定時器T0為方式2計數(shù)*/ TH0=0xff; /*給T0裝入初值*/ TL0=0xff;/*給T0裝入初值*/ ET0=1; /*允許T0中斷*/ EA=1; /*總中斷開*/ TF0=0; /*T0中斷溢出標志位清0*/ TR0=1 /*接通T0計數(shù)*/ while(1) /*無限循環(huán)等待*/}/*以下為定時器T0的中斷服務程序*/voidT0_int(void)interrupt1using0{┉┉} /*外中斷處理部分*/2021/5/9366.4.4P1.0上產(chǎn)生周期為2ms的方波【例6-4】系統(tǒng)時鐘為12MHz,編程實現(xiàn)從P1.0引腳上輸出一個周期為2ms的方波,如圖6-14所示。基本思想:要在P1.0上產(chǎn)生周期為2ms的方波,定時器應產(chǎn)生1ms的周期性的定時,定時對P1.0求反。選擇定時器T0,方式1定時,采用中斷方式,GATE不起作用。圖6-14

定時器控制P1.0輸出一個周期為2ms的方波2021/5/937計算T0的初值計算:設T0的初值為X,則

(216

?

X)

1

10?6

=

1

10?3=

65536?X

=1000則初值為:65536?1000=64536,因此TH0=(65536

?1000)

/256,TL0=(65536

?1000)

%256。參考程序如下:2021/5/938#include<reg51.h>sbitP1_0=P1^0;voidmain(void){ TMOD=0x01; /*設置定時器T0為方式2計數(shù)*/ P1_0=0; TH0=(65536

?1000)

/256; /*給T0裝入初值*/ TL0=(65536

?1000)

%256; /*給T0裝入初值*/ ET0=1; /*允許T0中斷*/ EA=1; /*總中斷開*/ TR0=1 /*接通T0計數(shù)*/ do{} while(1); /*無限循環(huán)等待*/}voidT0_int(void)interrupt1using1{ P1_0=!P1_0; TH0=(65536

?1000)

/256; TL0=(65536

?1000)

%256;}2021/5/9396.4.5P1.1上產(chǎn)生周期為1s的方波【例6-5】假設系統(tǒng)時鐘為12MHz,編程實現(xiàn)從P1.1引腳上輸出一個周期為1s的方波。基本思想:要在P1.0上產(chǎn)生周期為1s的方波,定時器應產(chǎn)生500ms的周期性定時,定時到則對P1.0求反。由于定時時間較長,用定時器不能直接實現(xiàn),直接定時時間最長的就是方式1,僅為65ms(系統(tǒng)時鐘12MHz)多一點。

實現(xiàn):T0定為10ms定時,每10ms對P1.0求反一次,P1.0輸出的脈沖加到定時器T1的計數(shù)輸入腳P3.5(T1腳),作為計數(shù)輸入,定時500ms需計數(shù)50次。T1設為方式2計數(shù),初值X為:28?X=50,則X=206,2021/5/940所以TH1=TL1=206。T0設為方式1定時,則控制字為61H。定時器T0和T1均采用中斷方式工作。參考程序如下:#include<reg51.h>sbitP1_0=P1^0;sbitP1_1=P1^1;voidmain(void){TMOD=0x61; /*設置定時器T0為方式1定時,T1為方式2計數(shù)*/P1_0=0;TH0=(65536

?10000)

/256; /*給T0裝初值*/TL0=(65536

?10000)

%256;TH1=206; /*給T1裝初值*/TL1=206;2021/5/941EA=1; /*總中斷開*/ET0=1; /*允許T0中斷*/ET1=1; /*允許T1中斷*/TR0=1;TR1=1;while(1); }voidT0_int(void)interrupt1{ TH0=(65536

?1000)

/256;TL0=(65536

?1000)

%256;P1_0=!P1_0;}voidT1_int(void)interrupt3{P1_1=!P1_1; }; /*P1.1腳產(chǎn)生1s的方波*/。2021/5/9426.4.6T1控制發(fā)出1KHz的音頻信號【例6-6】

利用定時器T1的中斷來控制蜂鳴器發(fā)出1KHz的音頻信號,電路圖見圖6-15。假設系統(tǒng)時鐘為11.0592MHz,則每個脈沖的周期為12/11.0592=1.085μs。1KHz的音頻信號周期為1ms,因此要計數(shù)的脈沖數(shù)為1000/1.085=921次。所以T1的初值:

TH1=(65536

?921)

/256;TL1=(65536

?921)

%256參考程序如下:#include<reg51.h>sbitsound=P1^7;2021/5/943

voidmain(void) { EA=1; /*總中斷開*/ ET1=1; /*

溫馨提示

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

評論

0/150

提交評論