定时器计数器与串口.ppt_第1页
定时器计数器与串口.ppt_第2页
定时器计数器与串口.ppt_第3页
定时器计数器与串口.ppt_第4页
定时器计数器与串口.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6 定时器/计数器与串行通信口,6.1 MCS-51的定时器/计数器,在单片微机应用系统中,常常会需要定时或计数。,80C51包含有两个16位的定时器计数器:T0和T1; 80C52包含有三个16位的定时器计数器:T0、T1 和T2。,2种工作模式: (1)计数器工作模式 (2)定时器工作模式 4种工作方式(方式0方式3),6.1.1 MCS-51定时器/计数器的基本原理,定时器计数器的核心是一个加1计数器其基本功能是计数加1。,计数功能(计数器工作模式) 对片外从T0(P3.4)、T1(P3.5)引脚输入的外部脉冲信号进行计数,下降沿计数加1。最大计数速率为晶振频率的1/24。,定时功能(定

2、时器工作模式) 对片内机器周期进行计数,即每个机器周期产生一 个计数脉冲,计数加1。计数速率为晶振频率的112 。,结构组成部分,两个16位的二进制定时/计数器T0、T1 T0/T1分别由两个8位的计数器组成,均属SFR寄存器 T0由TH0、TL0构成 T1由TH1、TL1构成 相关的控制寄存器 方式寄存器TMOD 控制寄存器TCON,定时/计数器的结构框图,6.1.2 定时器/计数器控制与状态寄存器,1)工作方式控制寄存器TMOD,TMOD:选择定时器/计数器T0、T1的工作模式和工作 方式。 TCON:控制T0、T1的启动和停止计数,同时包含了 T0、T1的状态。,8位分为两组,高4位控制

3、T1,低4位控制T0。,定时器工作方式选择,M1和M0工作方式选择位,模式选择及门控位,C/ :计数器模式和定时器模式选择位 0:定时器模式 1:计数器模式 GATE:门控位,定义T1/T0的启动方式 GATE=0,非门控方式(内部启动): TR0/TR1=1,启动定时器工作; TR0/TR1 =0,停止定时器工作。 GATE=1,门控方式(外部启动): TR0/TR1=1且引脚INT0/INT1 =1才启动。,2)启/停与中断控制寄存器TCON 低4位与外部中断有关。高4位的功能如下: (1) TF1、TF0计数溢出标志位 当T1/T0的计数器计数溢出时,该位置“1” (2) TR1、TR0

4、计数启/停控制位 软件置1:启动定时器/计数器工作 软件置0:停止定时器/计数器工作,1 ) 方式0 M1 M0 = 0 0 13位定时器/计数器(TLx:低5位,高3位不用;THx:8位) 计数时,TLx溢出后向THx进位,THx溢出后将TFx置位, 如果中断允许,CPU响应中断并转入中断服务程序,由内部 硬件清TFx。TFx也可以由程序查询和清零。,6.1.3 定时器/计数器的工作方式,根据对TMOD寄存器中M1和M0的设定,T0、 T1可选择 四种不同的工作方式,2)方式1,TMOD中的M1 M0 = 0 1 16位计数器( THx高8位和TLx的低8位) 计数溢出时,将TFx置位。,3

5、)方式2,M1 M0 = 10 8位计数器 计数满后自动装入计数初值 在方式2中,TLx作为8位计数寄存器,THx作为8位计数 常数寄存器。 当TLx计数溢出时,一方面将TFx置位,并向CPU申请 中断;另一方面将THx的内容重新装入TLx中,继续计数。,M1M0=11 T0两个8位的计数器 TL0:使用T0原有控制资源,功能与方式0、1相同。TH0:借用T1的TR1、TF1,只能对片内机器周期脉冲计数, 作8位定时器。,4)方式3,定时器初始化编程,1.向TMOD寄存器中写入工作方式控制字 2.向定时/计数器TH0、TL0(或TH1、TL1)装入初值 3.启动定时/计数器(置位TR0/TR1

6、) 4.如采用中断方式,置位ET0(ET1)、EA、IP等中 断寄存器,计数初值 设实际计数值为X,计数器字长为n(方式0:n=13; 方式1:n=16;方式2:n=8) 计数初值= (X)补=2n X 对于定时模式: 定时时间TC= XTP 计数初值= (X)补=2n X 例如: 方式0:最大计数值为213=8192,计数初值=213 X 方式1:最大计数值为216=65536 ,计数初值=216 X 方式2:最大计数值为28=256 ,计数初值=28 X,4种工作方式中,方式0与方式1基本相同,由于方 式0是为兼容MCS-48而设,初值计算复杂,在实际应 用中,一般不用方式0,而采用方式1

7、。,例 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。,方波的周期用T0来确定,让T0每隔1ms计数溢出1次,然后对 P1.0取反。 (1)TMOD初始化 01H (T0方式1,定时模式) (2)计算计数初值 振荡器的频率fosc6MHz,机器周期为2s,则有: 计数初值=216 -欲计数脉冲数=216 -TC/ TP =216-(110-3/210-6) =216-500=65036 化为16进制,即计数初值=0FE0CH 所以,T0的计数初值为: TH0=0FEH TL0=0CH,(3)程序设计 1)查询方式,参考程序: MOV TMOD , #01H

8、;设定时器T0为方式1 MOV TH0 , # 0FEH ; 设T0计数初值 MOV TL0 , #0CH SETB TR0 ;启动 T0 LOOP: JNB TF0 , LOOP ;查询计数溢出,未到时 间继续计数 CPL P1.0 ; 输出方波 MOV TH0 , # 0FCH ;重新置计数初值 MOV TL0 , #03H AJMP LOOP,2)中断方式 让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应 中断后,在中断服务程序中对P1.0取反。 中断服务程序除产生方波外,还要注意将计数初值重新装 入定时器中,为下一次中断作准备。 参考程序: ORG 0000H AJMP

9、 MAIN ;转主程序 ORG 000BH ;T0的中断入口 AJMP IT0P ;转T0中断处理程序IT0P,ORG 0100H MAIN: MOV TMOD,#01H ;设置T0为方式1 MOV TL0,#0CH ;T0置计数初值 MOV TH0,#0FEH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SJMP $ ITOP: CPL P1.0 ;P1.0的状态取反 MOV TL0,#0CH ;T0中断服务子程序,T0置初值 MOV TH0,#0FEH RETI END,例 某系统中,T1工作在方式1,定时时间为10ms,主频为12MHz

10、,每10ms向主机请求中断,将累加器A中内容左移1位,并送P1口输出。,TC =10ms TP =1us X=10ms/1us= 104 计数初值=216 -欲计数脉冲数=216 - 104 =65536-10000 =55536 =D8F0 TMOD初始化 10H (T1方式1,定时模式) 计算计数初值 T1的计数初值为:TH0=0D8H TL0=0F0H,主程序: START: MOV SP, #60H MOV TMOD,#10H MOV TH0,#0D8H MOV TL0,#0F0H SETBEA SETBET1 MOVB,#01H SETB TR1 ,中断服务程序: INTT1: MO

11、V TL1, #0F0H MOV TH1,#0D8H MOV A,B RLA MOVP1,A MOVB,A RETI,例 测试外部正脉冲宽度(晶振12MHz) 可选T0,模式1,外部触发,外部信号为高电平时,外部触发 从0开始计数,计数初值为0 计数值为N则Tc=NTp 不需要中断,主程序: START: MOV TMOD,#09H MOV TH0,#00H MOV TL0,#00H CLREX0 LOP1:JBP3.2,LOP1 LOP2:JNBP3.2,LOP2 SETBTR0 LOP3:JBP3.2,LOP3 CLRTR0 MOVA,TL0 MOVB,TH0 ,例 利用定时器扩充外部中断

12、源 计数模式;方式2;计数初值为0FFH,主程序: ORG0000H AJMPMAIN ORG001BH LJMPINTER ORG0100H MAIN: MOV SP, #60H MOV TMOD,#60H MOV TH0,#0FFH MOV TL0,#0FFH SETBEA SETBET1 SETB TR1 ,中断服务程序: ORG1000H INTER:PUSHA PUSH DPL PUSHDPH POPDPH POPDPL POPA RETI,注意点,定时/计数器的实时性 计数溢出到中断响应之间存在延时 动态读取计数值 先读取TH,再读取TL,再读取TH,6.1.4 定时器/计数器2,

13、16位定时/计数器,控制寄存器为T2CON,TF2:溢出中断请求标志位,RCLK/TCLK=1时,需软件复位 EXF2:外部中断请求标志位,P1.1(T2EX)下降沿到来,且EXEN2=1时,请求中断,需要软件复位 RCLK:接收时钟标志,1:串口使用T2溢出信号作为接收时钟 0:串口使用T1溢出信号作为接收时钟 TCLK:发送时钟标志, EXEN2:外部采样允许标志, 1:T2不作为串口时钟时,P1.1下降沿触发捕获/重装 0:P1.1下降沿对T2不起作用,6.1.4 定时器/计数器2,16位定时/计数器,控制寄存器为T2CON,TR2:启动/停止位 C/T2:计数/定时选择 CP/RL2:

14、捕获/重装选择 1:若EXEN2=1则P1.1下降沿触发捕获功能 0:若EXEN2=1则P1.1下降沿或溢出均触发重装功能 RCLK/TCLK=1时,CP/RL2不起作用,6.1.4 定时器/计数器2,工作方式,6.1.4 定时器/计数器2,捕获方式,EXEN2=0,同T0、T1方式1,软件复位,输入端P1.0 EXEN2=1,增加捕获功能,P1.1下降沿到来,捕获TH2、TL2进入RCAP2、RCAP1,同时触发EXF2 CP/RL2:捕获/重装选择,6.1.4 定时器/计数器2,重装方式,T2OE:输出启动位 DCEN:置位为1时允许增量/减量计数 字节地址:C9H,不可位寻址,6.1.4

15、 定时器/计数器2,重装方式,DCEN=0时,T2为增量重装方式 EXEN2=0时,16位溢出置位TF2,请求中断,陷阱寄存器RCAPx装入TH/TL EXEN2=1时,增加:P1.1下降沿触发RCAPx重装,置位EXF2 DCEN=1时,加1/减1计数 P1.1=1时,增量计数,溢出置位TF2、EXF2、RCAPx重装 P1.1=0时,减量计数,溢出置位TF2、EXF2、RCAPx重装,6.1.4 定时器/计数器2,波特率发生方式,RCLK/TCLK均为1或某一位为1,6.2 MCS-51的串行通信 6.2.1串行通信概述 并行通信与串行通信 并行通信通常是将数据字节的各位用多条数据线同时进

16、行传送 。,并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。,6.2 MCS-51的串行通信 6.2.1串行通信概述 并行通信与串行通信 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。,串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。,异步通信与同步通信 1、同步通信 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。,异步通信与同步通

17、信 2、异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。,异步通信的数据格式 :,异步通信的格式:一帧数据包含起始位、数据位、校验位和停止位。 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加23位用于起止位,各帧之间还有间隔,因此传输效率不高。,波特率的倒数即为每位传输所需的时间。 相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。,二、串行通信波特率,波特率bps(bit per second)定义: 每秒传输数据的位数,即:,1波特 = 1

18、位/秒(1bps),一、帧格式设定,设定起始位、数据位、停止位、奇偶校验位,串行通信的制式(传输方向),串行通信按照数据传送方向可分为三种制式:,单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。,1、单工制式(Simplex),半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。,2、半双工制式(Half Duplex),全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。,3、全双工制式(Full Duplex

19、),串行通信的错误校验 1、奇偶校验 在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。,3、循环冗余校验,2、代码和校验,串行通信接口电路 UART 通用异步收发器/USRT通用同步收发器 串并转换,MCS-51系列单片机有一个全双工的串行口,属于UART方式 2个独立的收/发缓冲器,通称串行通信特殊功能寄存器SBUF,6.2.2 MCS-51串行通信口,发送时,只需将发送数据输入SB

20、UF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。,串行数据缓冲器SBUF,在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。 在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。,指令 MOV SBUF,A 启动一次数据发送,可向SBUF 再发送下一个数 指令 MOV A,SBUF 完成一次数据接收,SBUF可再 接收下一个数,4种工作方式,其中两种波特率可变。波特率有定时/计数器产生。 可通过查询/中断对收发程序处理,6.2.2 MCS-51串行通信

21、口,2、串行控制寄存器SCON, SM0 SM1 串行口工作方式选择位。 SM2 多机通信控制位。 REN 允许接收控制位。REN=1,允许接收。 TB8 方式2和方式3中要发送的第9位数据。 RB8 方式2和方式3中要接收的第9位数据。 TI 发送中断标志。 RI 接收中断标志。, SM0 SM1串行口工作方式选择位。其状态组合所对应的工作方式如表6-2所示。, SM2-多机通信控制位。在方式2和方式3中,若SM2=1,且RB8(接收到的第9位数据)=1时,将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的8位数据丢弃。而当SM2=0时,则不论第9位数据为0还是为1,

22、都将前8位数据装入 SBUF中,并产生中断请求。 在方式0时,SM2必须为0。,REN-允许接收控制位。REN位用于对串行数据的接收进行控制:REN=0,禁止接收;REN=1,允许接收。该位由软件置位或复位。 TB8-方式2和方式3中要发送的第9位数据。在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0表示数据,TB8=1表示地址。该位由软件置位或复位。 TB8还可用于奇偶校验位。 RB8-方式2和方式3中要接收的第9位数据。在方式2或方式3时,RB8存放接收到的第9位数据。,TI-发送中断标志。当方式0时,发送完第8位数据后,

23、该位由硬件置位。在其他方式下,遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可软件查询TI位标志,也可以请求中断。TI位必须由软件清0。 RI-接收中断标志。当方式0时,接收完第8位数据后,该位由硬件置位。在其他方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束,可软件查询RI位标志,也可以请求中断。RI位也必须由软件清0。,接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。,3、电源控制寄存器PCON,SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。, SMOD:在串行口工作方式

24、 1、2、3 中,是波特率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关),6.2.3 80C51串行口的工作方式,一、方式0 方式0时,串行口为同步移位寄存器的输入输出方式。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。 1、方式0输出,2、方式0输入,方式0接收和发送电路,二、方式1 方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。,二、方式1

25、,1、方式1输出 发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕,将SCON中的TI置1。,2、方式1输入,用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第

26、9位(停止位)进入RB8,并置RI=1,向CPU请求中断。,3波特率,方式1波特率可变,由定时/计数器T1的计数溢出率来决定。,波特率 = (2SMOD / 32) (T1溢出率),其中SMOD为PCON寄存器中最高位的值,SMOD=1表示波特率倍增。,当定时计数器T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2(注意:不要把定时计数器的工作方式与串行口的工作方式搞混淆了)。其计数结构为8位,假定计数初值为COUNT,单片机的机器周期为T,则定时时间为(256-COUNT)*T。从而在1s内发生溢出的次数(即溢出率)为:,波特率=(2SMOD/32)T1的溢出率,波特率=(2SMO

27、D/32)T1的溢出率, 溢出率:T1溢出的频繁程度 即:T1溢出一次所需时间的倒数。, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定时器初值,在实际应用时,通常是先确定波特率,后根据波特率求T1定时初值,因此上式又可写为:,三、方式2和方式3 方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚 。,方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8,可编程位TB8/RB8既可作奇偶校验位用,也可作控制位用,其功

28、能由用户确定。),停止位1位,一帧数据为11位。,三、方式2和方式3 方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚 。,方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。,波特率 = (2SMOD / 64) (振荡器频率),波特率 = (2SMOD / 32) (T1溢出率),1、方式2和方式3输出,发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。 第一次移位时,停止位“1”移入输出移位寄存器的第9位上

29、,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。,2、方式2和方式3输入,接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。,串行口四种工作方式的比较,四种工作方式的区别主要表现在帧格式及波特率两个方面。,四、波特率的计算 在串行通信

30、中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。 串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64) fosc 方式1的波特率 =(2SMOD/32)(T1溢出率) 方式3的波特率 =(2SMOD/32)(T1溢出率),当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=

31、1,以启动定时器)。这时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /12256 (TH1) 在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。,关于SMOD对波特率的影响 设:波特率2400(位秒),fosc6MHz,T1为方式2。 SMOD=0时 N=256-206106/32122400249 波特率=206106/240032(256-249)=2232 SMOD=1时 N=256-216106/32122400243 波特率=216106/240032(256-243)=24

32、03,解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。,常用波特率通常按规范取1200、2400、4800、9600、,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。,五、使用T2产生波特率 波特率发生器方式与自动再装入方式相似。当计数器TH2、TL2(16位)计满溢出时,RCAP2H和RCAP2L中的16位计数常数将自动再装入TH2和TL2中,继续进行新的计数。TH2、 TL2和RCAP2H 、 RCAP2L的计数常数由初始化程序设置。 波特率= fosc /32216 (RCAP2H RCAP2

33、L) 当TH2、 TL2计数器溢出时并不置位TF2,即不产生中断请求 当T2工作于波特率发生器方式时,不要对TH和TL读或写,对RCAP可读不应写,一、双机通信 近距离:直连方式TXD-RXD 远距离:RS-232C、RS-485等方式,6.2.3 MCS-51串行通信技术,例1: 设甲机是发送方,乙机是接收方。波特率为2400波特,T1工作在定时器方式2,振荡频率选用6MHz 当甲机发送时,先发送一个“06”联络信号,2号机收到后回答一个“00”应答信号,表示同意接收,否则发05H。当1号机收到应答信号“E2”后,开始发送数据, 数据格式如下。,字节数n:甲向乙发送的数据个数 数据1数据n:n帧数据 累加校验和:前n+1个数据的累加和,乙机接收并检验校验和是否正确,若正确向甲机发送0FH,否则发F0H。 甲机接收到0FH,发送结束,否则继续呼叫重新发送 发送程序流程图:,发送程序设置: T1、定时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论