版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LOGO第五章第五章 单片机定时器单片机定时器 与计数器与计数器 单片机定时器与计数器单片机定时器与计数器定时器定时器/计数器结构计数器结构1定时器定时器/计数器工作方式计数器工作方式2定时器定时器/计数器应用举例计数器应用举例3定时器定时器/计数器结构计数器结构1一、定时一、定时/ /计数器结构计数器结构MCS-51MCS-51单片机定时器单片机定时器/ /计数器的逻辑结构如图计数器的逻辑结构如图5-15-1所示。所示。主要由工作方式寄存器主要由工作方式寄存器TMODTMOD、控制寄存器、控制寄存器TCONTCON和初值寄存器和初值寄存器TLXTLX、THXTHX等等工作部件组成。工作部件组
2、成。等效逻辑结构图等效逻辑结构图1工作方式寄存器TMOD 89H)位位D7D6D5D4D3D2D1D0位符号位符号GATEC/TM1M0GATEC/TM1M0T1方式字段方式字段T0方式字段方式字段 GATEGATE:门控位。:门控位。GATE = 0 GATE = 0 启动不受启动不受 /INT0 /INT0或或 /INT1 /INT1的控制;的控制;GATE = GATE = 1 1 启动受启动受 /INT0 /INT0 或或 /INT1 /INT1 的控制。的控制。C/ C/ : 外部计数器外部计数器 / / 定时器方式选择位。定时器方式选择位。C/ = 0 C/ = 0 定时方式;定时
3、方式;C/ C/ = 1 = 1 计数方式。计数方式。M1M0M1M0:工作模式选择位。:工作模式选择位。 TTTTMODM1M0:工作模式选择位。:工作模式选择位。 M1M1 M0M0工作方式工作方式 方式说明方式说明 0 0 0 0方式方式0 01313位定时器位定时器/ /计数器计数器 0 0 1 1方式方式1 11616位定时器位定时器/ /计数器计数器 1 1 0 0方式方式2 2具有自动重装初值的具有自动重装初值的8 8位定位定时器时器/ /计数器计数器 1 1 1 1方式方式3 3T0T0为两个独立的为两个独立的8 8位计数器,位计数器,T1T1为波特率发生器为波特率发生器2、初
4、值寄存器、初值寄存器 TH0,TL0,TH1,TL151子系列单片机内有两个十六位增一子系列单片机内有两个十六位增一 定时定时 / 计数器计数器TH0计数值高八位计数值高八位TL0计数值低八位计数值低八位TH1计数值高八位计数值高八位TL1计数值低八位计数值低八位最大计数器值最大计数器值M655353定时/计数器控制寄存器TCON 88H) 位位D7D6D5D4D3D2D1D0位符号位符号TF1TR1TF0TR0IE1IT1IE0IT0TR0TR0:定时:定时 / / 计数器计数器0 0运行控制位。软件置位运行控制位。软件置位/ /复位。与复位。与GATEGATE有关有关分两种情况:分两种情况
5、: GATE = 0 GATE = 0 时:若时:若TR0 = 1TR0 = 1,开启,开启T0T0;若;若TR0 = 0TR0 = 0,停止,停止T0T0。 GATE = 1 GATE = 1 时:若时:若TR0 = 1 TR0 = 1 且且/INT0 = 1/INT0 = 1时,开启时,开启T0T0; 若若TR0 = 1 TR0 = 1 但但 /INT0 = 0 /INT0 = 0,则不能开启,则不能开启T0T0。 若若TR0 = 0TR0 = 0, 停止停止T0T0计数。计数。TR1TR1:定时:定时 / / 计数器计数器1 1运行控制位。用法与运行控制位。用法与TR0TR0类似。类似。
6、TF0/TF1:TF0/TF1:定时定时/ /计数溢出标志。计数溢出标志。 1 1:有溢出,:有溢出,0 0:无溢出:无溢出IE0/IE1:IE0/IE1:外部中断请求标志。外部中断请求标志。1 1:有请求,:有请求,0 0:无请求:无请求IT0/IT1:IT0/IT1:外部中断触发方式。外部中断触发方式。1 1:下降沿,:下降沿,0 0:低电平:低电平二、定时器二、定时器/计数器的工作方式计数器的工作方式工作方式工作方式 M1M0=00 M1M0=00 工作方式工作方式0 0:1313位计数。位计数。THTH的的8 8位和位和TLTL的低的低5 5位位在工作方式在工作方式0 0下,计数器的计
7、数值由下式确定:下,计数器的计数值由下式确定:213-X=8192-X213-X=8192-X计数值范围是:计数值范围是: 1 181928192213213)定时器的定时值由下式确定:定时器的定时值由下式确定:T=NT=N* *Tcy=(8192-X)Tcy=(8192-X)* *TcyTcy 例:单片机晶振频率例:单片机晶振频率fosc=12MHZ定时器定时器0定时定时1MS,采用,采用方式方式0时,时,TCON,TMOD,TH0,TL0的值分别是:的值分别是:TCON=0 x10TMOD=0 x00TH0=(81921000)/32TL0= (81921000)%32工作方式的应用工作方
8、式的应用:【例】设单片机晶振频率【例】设单片机晶振频率fosc=6MHZ,使用定时器使用定时器1以方式以方式0产生周期为产生周期为600s的等宽方波脉冲,并由的等宽方波脉冲,并由P1.7输出,以查询输出,以查询方式完成。方式完成。解解:(1)计算计数初值计算计数初值.欲产生周期为欲产生周期为600s的等宽方波脉冲,只需在的等宽方波脉冲,只需在P1.7端端以以300s为周期交替输出高低电平即可,为周期交替输出高低电平即可,因此定时时间应为因此定时时间应为300s。设待求计数初。设待求计数初值为值为N,那么:,那么:(213-N)210-6=30010-6N=8042=1F6AH000111110
9、1101010B用用T1实现。将低实现。将低5位位01010B=0A写入写入TL1,将高,将高8位有效值位有效值11111011B=FBH写入写入TH1中。中。(2 2TMODTMOD初始化初始化为把定时为把定时/ /计数器计数器1 1设定为方式设定为方式0 0,则,则M1M0=00M1M0=00。为实现定时功能应使。为实现定时功能应使C/T=0C/T=0,为实现,为实现内部定时器启动应使内部定时器启动应使GATE=0GATE=0,因此设定工作方,因此设定工作方式控制寄存器式控制寄存器TMOD=00HTMOD=00H。(3 3由由TR1TR1启动和停止定时器启动和停止定时器TR1=1TR1=1
10、为启动,为启动,TR1=0TR1=0为停止为停止C语言参考程序语言参考程序 v # include /包含特殊功能寄存器库包含特殊功能寄存器库v sbit P1_7=P17; /定义定义P1.7口,程序中用口,程序中用P1_7代替代替P1.7。v void main() /主函数主函数v v IE=0 x00; /关中断关中断v TMOD=0 x00; /工作方式设定工作方式设定v TR0=1; /启动定时启动定时v for(;) /无限循环体无限循环体v v TH1=0 xFB;TL1=0 x0A; /计数初值设定计数初值设定v do while (!TF1) /查询是否溢出查询是否溢出,当
11、当TF0=1时溢出来,则时溢出来,则跳出跳出do- while循环。循环。v P1_7=! P1_7; TF1=0; /溢出,溢出,P1.7取反,中断标志取反,中断标志TF1清清0。v v 中断方式完成中断方式完成v # include /包含特殊功能寄存器库包含特殊功能寄存器库v sbit P1_7=P17; /定义定义P1.7口,程序中用口,程序中用P1_7代替代替P1.7。v void main() /主函数主函数v v TMOD=0 x00; /工作方式设定工作方式设定v TR0=1; v TH1=0 xFB;v TL1=0 x0A; v ET0=1;v EA=1;v while (1
12、);v /启动定时启动定时v Void T_0() interrupt 1 using 3v P1_7=! P1_7; v TH1=0 xFB;v TL1=0 x0A;v 2.定时/计数器工作方式1 M1M0=01 P3.4P3.2v在工作方式在工作方式1 1下,计数器的计数值由下式确定:下,计数器的计数值由下式确定:v216-X=65536-X216-X=65536-Xv计数值范围是:计数值范围是: 1 16553665536216216)v 定时时间长;时器的定时值由下式确定:定时时间长;时器的定时值由下式确定:vT=NT=N* *Tcy=(65536-X)Tcy=(65536-X)* *
13、TcyTcy 定时计数器的工作方式1与方式0基本相同,区别只是方式0是13位计数器,而方式1为了16位计数器。当要求定时时间较长,13位计数器不能满足要求时,可改用方式1,用16位计数器计数。工作方式1 应用【例】设单片机晶振频率fosc=6MHZ,使用定时器1以方式1产生周期为600s的等宽方波脉冲,并由P1.7输出,以查询方式完成。该题目就是用方式1实现例5-1的功能。原理与例5-1相似,只需修改工作方式和计数初值设置即可。v(1)计算计数初值计算计数初值v欲在欲在P1.7引脚输出周期为引脚输出周期为600s的等宽方波脉冲,只需在的等宽方波脉冲,只需在P1.7端交替输端交替输出出300s的
14、高低电平即可,因此定时时间应为的高低电平即可,因此定时时间应为300s。设计数初值为。设计数初值为N,那么:那么:v(65536-N)210-6=30010-6vN=65236v将计数初值将计数初值N的低的低8位位6AH写入写入TL1;将计数初值;将计数初值N的高的高8位位1FH写入写入TH1。v(2)TMOD初始化初始化v题目要求定时器题目要求定时器/计数器计数器1为工作方式为工作方式1,所以,所以M1M0=01;为实现定时功;为实现定时功能应使能应使C/=0;为实现定时器内启动,应使;为实现定时器内启动,应使GATE=0。此题目不涉及定时。此题目不涉及定时器器/计数器计数器0,为方便起见,
15、设其各控制位均为,为方便起见,设其各控制位均为0。则工作方式控制寄存器。则工作方式控制寄存器TMOD=10H。v(3)启动和停止控制启动和停止控制v因为定时器因为定时器/计数器计数器1作定时器,故当作定时器,故当TR1=1时,启动计数;当时,启动计数;当TR1=0时,时,停止计数。停止计数。v(4)中断的开放中断的开放/制止制止v题目中要求用查询方式检查题目中要求用查询方式检查T1的计数溢出状态,故设置的计数溢出状态,故设置IE=00H,以关中,以关中断。断。3 3、定时、定时/ /计数器工作方式计数器工作方式2 M1M0=102 M1M0=10初值自动重装,将初值自动重装,将TH中的数值装入
16、中的数值装入TL中。中。v工作在方式下,计数器的计数值由下式确定:工作在方式下,计数器的计数值由下式确定:v 28-X=256-X28-X=256-Xv 计数范围为计数范围为: : v 1 1256 256 v 定时准确定时准确v定时器的定时值由下式确定:定时器的定时值由下式确定:v T=N T=N* *Tcy=(256-X)Tcy=(256-X)* *Tcy Tcy 工作方式的应用工作方式的应用【例】使用定时器【例】使用定时器T0以方式以方式2产生产生200微秒定时,在微秒定时,在P1.0输出周期为输出周期为400微秒的连续方波。已知晶振频微秒的连续方波。已知晶振频率率fosc=6MHz。(
17、1计算计数初值计算计数初值(256-N)210-6=20010-6 N=156=9CH(2TMOD初始化初始化工作方式工作方式2时,时,M1M0=10,实现定时功能,实现定时功能C/T=0,内部启动,内部启动GATE=0。定时器。定时器1不用,无不用,无关位设定为关位设定为0,可得,可得TMOD=02H。(3允许中断允许中断(4TR0 启动定时启动定时v C语言参考程序:语言参考程序:v # include /包含特殊功能寄存器库包含特殊功能寄存器库v sbit P1_0=P10; /定义定义P1.0口,程序中用口,程序中用P1_0代替代替P1.0。v void main() /主函数主函数v
18、 TCON=0 x00 /清清TCON,定时器,定时器中断标志清零及不允许计数中断标志清零及不允许计数v TMOD=0 x02; /设定时器设定时器T0工作方式工作方式2v TH0=0 x9c;TL0=0 x9c; /设初值设初值v EA=1;ET0=1; /开中断开中断v TR0=1; /启动计数启动计数v while(1); /无限循环无限循环,结束主函数结束主函数v v void time0_int(void) interrupt 1 /中断函数中断函数v P1_0=!P1_0;、定时、定时/ /计数器工作方式计数器工作方式 功能多功能多当当M1M1,M0=10M0=10时,定时时,定时
19、/ /计数器处于工作方式计数器处于工作方式3 3,此时,定时此时,定时/ /及数器的等效电路如图所示及数器的等效电路如图所示 当当T0T0工作于方式工作于方式3 3时,时,T1T1只能工作在方式只能工作在方式0 0、方式、方式1 1或或方式方式2 2,并且由于已没有计数溢出标志位,并且由于已没有计数溢出标志位TF1TF1可供使可供使用,只能把计数溢出直接送给串行口,作串行口的用,只能把计数溢出直接送给串行口,作串行口的波特率发生器使用。等效电路图如下波特率发生器使用。等效电路图如下 波波特特率率发发生生器器在使用定时在使用定时/ /计数器时,应做好计数器时,应做好4 4件事:件事:设置设置TM
20、ODTMOD以选择工作方式;以选择工作方式;计算并设置计数初值计算并设置计数初值THX,TLXTHX,TLX;设置设置IEIE、IPIP以规定中断的开放以规定中断的开放/ /禁止及优先级;禁止及优先级;设置设置TCONTCON以启动以启动/ /停止定时停止定时/ /计数器的工作。计数器的工作。工作方式的应用工作方式的应用【例】假设有一个用户系统中已使用了两【例】假设有一个用户系统中已使用了两个外部中断源个外部中断源, 并置定时器并置定时器 T1 于方式于方式 2, 作串行口波特率发生器用作串行口波特率发生器用, 现要求再现要求再增加一个外部中断源增加一个外部中断源,当有中断时,累当有中断时,累
21、加器加加器加1。并由。并由P1.0 口输出一个口输出一个5KHz的方波假设晶振频率为的方波假设晶振频率为 6 MHz)。)。 思路思路 在不增加其它硬件开销时,可把定时/计数器T0置于工作方式3,利用外部引脚T0端作附加的外部中断输入端,把TL0预置为0FFH,这样在T0端出现由1至0的负跳变时,TL0溢出,申请中断,相当于边沿触发的外部中断源。 在方式3下,TH0总是作8位定时器用,可以靠它来控制由P1.0输出的5kHz方波。由P1.0输出5kHz的方波,即每隔100s使P1.0求反一次。则TH0的初始值: (256-N)210-6=10010-6 N=206vC语言参考程序:语言参考程序:
22、v# include /包含特殊功能寄存器库包含特殊功能寄存器库vsbit P1_0=P10; /定义定义P1.0口,程序中用口,程序中用P1_0代替代替P1.0vvoid main() /主函数主函数vvTMOD=0 x27; /置置T0工作方式工作方式3,TL0计数器方式;计数器方式;TH0为为8位定位定时器时器vTL0=0 xFF; /送初值,用于外部引脚送初值,用于外部引脚T0口口P3.4做新增外部中做新增外部中断断vTH0=206; /送定时送定时100s的初值的初值vTL1=BAUD; /BAUD是根据波特率要求设置的常数是根据波特率要求设置的常数vTH1=BAUD;vTCON=0
23、 x55; /启动定时器启动定时器 T0、 T1, 置边沿触发置边沿触发vIE=0 x9F; /开放全部中断开放全部中断vwhile(1); /无限循环,结束主函数无限循环,结束主函数vvvoid TL0INT (void) interrupt 1 /中断函数中断函数, 处理新增的外部中断处理新增的外部中断源源vvTL0=0 xFF; / 外部引脚外部引脚T0引起中断处理程序引起中断处理程序v vvoid TH0INT (void) interrupt 3 /中断函数中断函数, 处理输出处理输出5kHz的方的方波波 v v TH0=206; /重送初值重送初值v P1_0=!P1_0; /P1
24、.0口取反口取反v 5. 5. 计数器功能计数器功能v当当C/T1时,多路开关接通计数器引脚时,多路开关接通计数器引脚TX,外,外部计数脉冲由引脚输入。部计数脉冲由引脚输入。v每一个脉冲过来,计数器的寄存器单元加一。每一个脉冲过来,计数器的寄存器单元加一。v加满之后溢出,满值会根据不同的方式而各不相加满之后溢出,满值会根据不同的方式而各不相同。同。v计数方式也受计数方式也受GATE位控制。位控制。v计数溢出后需重装初值。计数溢出后需重装初值。例:例:T0控制控制LED实现二进制计数实现二进制计数 v本例对按键的计数不本例对按键的计数不使用查询法,不使用使用查询法,不使用外部中断函数,不使外部中
25、断函数,不使用定时或计数中断函用定时或计数中断函数。而是启用了计数数。而是启用了计数器,连接在器,连接在T0引脚的引脚的按键每次按下时,会按键每次按下时,会使计数寄存器的值递使计数寄存器的值递增,其值通过增,其值通过LED以以二进制形式显示二进制形式显示 v #includev void main()v vTMOD=0 x05;/定时器定时器0为计数器,工作方式为计数器,工作方式1,最大计数值,最大计数值65535vTH0=0;/初值为初值为0vTL0=0;vTR0=1;/启动定时器启动定时器vwhile(1)vvP1=TH0;vP2=TL0;vv 练习:计数器练习:计数器v对对P3.5端口进
26、行脉冲计数,计数满端口进行脉冲计数,计数满100次后产次后产生中断,在生中断,在P1端口输出端口输出100的二进制值。的二进制值。MCS51单片机有两个定时器计数器,当它们选择计数工作方式时,T0或T1引脚上的负跳变将使T0或T1计数器加1,若把定时器计数器设置成计数工作方式,计数初值设定为满量程,一旦计数从外部引脚输入一个负跳变信号,计数器To或T1加1,产生溢出中断,这样,便可把外部计数输入端T0(P34)或T1(P35)扩展为外部中断源输入。 v C语言参考程序:语言参考程序:v # include /包含特殊功能寄存器库包含特殊功能寄存器库v #define uchar unsigne
27、d char /定义数据类型定义数据类型v uchar i; /定义变量定义变量i,作为存放中断函数中加作为存放中断函数中加1的记录。的记录。v void main() /主函数主函数v v TMOD=0 x60; /T1方式方式2,计数器,计数器v TL1=0 xFF; /设初值满量程设初值满量程v TH1=0 xFF;v TR1=1; /启动启动T1计数计数v ET1=1; /T1中断允许中断允许v EA=1; /CPU中断开放中断开放v while(1); /无限循环,结束主函数无限循环,结束主函数v v void INT (void) interrupt 3 /中断函数中断函数v v
28、i+; /中断加中断加1处理处理v P1=i; /将结果送将结果送P1口口v 四、全自动洗衣机定时控制四、全自动洗衣机定时控制Proteus仿真仿真v洗衣机中所需的定时功能并不复杂,可以利用单洗衣机中所需的定时功能并不复杂,可以利用单片机提供的定时器方便实现。设洗衣机有三段定片机提供的定时器方便实现。设洗衣机有三段定时时间,分别为:进水阶段定时时时间,分别为:进水阶段定时2秒,洗涤阶段秒,洗涤阶段定时定时4秒,甩干阶段定时秒,甩干阶段定时2秒。并分别用三个秒。并分别用三个LED发光二极管表示进水、洗涤、甩干三个环节发光二极管表示进水、洗涤、甩干三个环节的工作状态。其中如果发光二极管的工作状态。
29、其中如果发光二极管A亮,表示进亮,表示进水工作正在进行;发光二极管水工作正在进行;发光二极管B亮,表示洗涤工亮,表示洗涤工作正在进行;发光二极管作正在进行;发光二极管C亮,表示甩干工作正亮,表示甩干工作正在进行。发光二极管熄灭时,说明相应的定时已在进行。发光二极管熄灭时,说明相应的定时已到,工作停止。图到,工作停止。图5-7给出了给出了Proteus仿真电路仿真电路图。图。v图图5-6中,中,S表示洗衣机启动开关,开关按表示洗衣机启动开关,开关按下洗衣机开始工作。首先是进水定时控制,下洗衣机开始工作。首先是进水定时控制,表示正在进水的表示正在进水的LED发光二极管发光二极管A点亮。当点亮。当进
30、水控制的定时时间到时,进水工作停止,进水控制的定时时间到时,进水工作停止,发光二极管发光二极管A灭灯;接着开始洗涤工作定时,灭灯;接着开始洗涤工作定时,发光二极管发光二极管B点亮;洗涤工作结束后,开始点亮;洗涤工作结束后,开始甩干工作定时,发光二极管甩干工作定时,发光二极管C点亮。当洗衣点亮。当洗衣功能结束时,三个指示灯都熄灭,表示洗衣功能结束时,三个指示灯都熄灭,表示洗衣工作结束,并接通扬声器工作结束,并接通扬声器LS1鸣声提醒。鸣声提醒。C语言参考程序语言参考程序 v #include / 包含包含51单片机寄存器单片机寄存器定义的头文件定义的头文件v sbit P20=P20; /将将P
31、20位定义为位定义为P2.0引脚引脚v sbit P37=P37; /将将P37位定义为位定义为P3.7引脚引脚v unsigned char Countor; /设置全局变量,储存定时器设置全局变量,储存定时器T1中中断次数断次数v unsigned char f=0; /设置全局变量,作为区设置全局变量,作为区分不同阶段的定时分不同阶段的定时v void delay1() /延时函数延时函数v v int q;v for(q=0;q500;q+);v v void main(void) /主函数主函数v v if(P20=0) /若若P2.0=0,说明键按下,执行语句,否说明键按下,执行语
32、句,否则一直等待。则一直等待。v v delay1(); /有键按下,延时去抖动有键按下,延时去抖动v if(P20=0) /再判有键按下再判有键按下v v P1=0 x0e; /A灯亮,开始放水定时灯亮,开始放水定时v EA=1; /开总中断开总中断v ET0=1; /定时器定时器T0中断允许中断允许 v TMOD=0 x01; /使用定时器使用定时器T0的模式的模式1v TH0=(65536-46083)/256; /定时器定时器T0的高的高8位赋初值位赋初值,定定时时50msv TL0=(65536-46083)%256; /定时器定时器T0的高的高8位赋位赋初值初值v TR0=1; /
33、启动定时器启动定时器T0v v while(1); /无限循环等待中断无限循环等待中断 v v v void Time0(void) interrupt 1 using 0v v if(f=0) / f为标志变量,为标志变量, 若若f=0,执行第,执行第1阶段定时放水功能)阶段定时放水功能)v v Countor+; /Countor加加1v if(Countor=40) /若累计满若累计满40次,即计时满次,即计时满2sv v P1=0 x0d; /A灯灭,结束放水,灯灭,结束放水,B灯亮,开始洗涤灯亮,开始洗涤v Countor=0; /将将Countor清清0,重新从,重新从0开始计数开
34、始计数v f+; /f加加1,准备第,准备第2阶段的定时阶段的定时v v v if(f=1) /若若f=1,执行第,执行第2阶段定时洗涤功能)阶段定时洗涤功能)v v Countor+; /Countor加加1v if(Countor=80) /若累计满若累计满80次,即计时满次,即计时满4Sv v P1=0 x0B; /B灯灭,结束洗涤,灯灭,结束洗涤,C灯亮,开始甩干灯亮,开始甩干v Countor=0; /将将Countor清清0,重新从,重新从0开始计数开始计数v f+; /f加加1,准备第,准备第3阶段的定时阶段的定时v v v if(f=2) /若若f=2,执行第,执行第3阶段定时甩干功能)阶段定时甩干功能)v v Countor+; /Countor加加1v if(Countor=40) /若累计满若累计满60次,即计时次,即计时满满3Sv v P1=0 x07; /灯全灭,洗衣机结束工作灯全灭,洗衣机结束工作v Countor=0; /将将Countor清清0,重新从,重新从0开始计数;开始计数;v f+; / f加加1,准备进入第,准备进入第4阶段。阶段。v v v if(f=3) /若若f=3,执行进入第,执行进入第4阶段工作扬声器提醒)阶段工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论