第2章 硬件结构_第1页
第2章 硬件结构_第2页
第2章 硬件结构_第3页
第2章 硬件结构_第4页
第2章 硬件结构_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用

第2章:AT89S51单片机的硬件结构单片机湖北经济学院电子工程系(综合张毅刚、李全利教材资料制作)本章主要内容

2.1AT89S51单片机的硬件组成

2.2AT89S51的引脚功能

2.3AT89S51的CPU2.4AT89S51存储器的结构

2.5AT89S51的并行I/O端口

2.6时钟电路与时序

2.7复位操作和复位电路

2.8低功耗节电模式2.1AT89S51单片机的硬件组成2.1.1AT89S51单片机片内结构2.1.2AT89S51单片机功能部件和特性(1)8位微处理器(CPU);(2)数据存储器(128BRAM);(3)程序存储器(4KBFlashROM);(4)4个8位可编程并行I/O口(P0口、P1口、P2口和P3口);(5)1个全双工的异步串行口;(6)2个可编程的16位定时器/计数器;(7)1个看门狗定时器;(8)中断系统具有5个中断源、5个中断向量;(9)特殊功能寄存器(SFR)26个;(10)低功耗模式有空闲模式和掉电模式,且具有掉电模式下的中断恢复模式;(11)程序存储器具有三级加密保护(片内的Flash存储器有3个可编程的加密位,定义了3个加密级别)。AT89S51的优点

(1)增加在线可编程功能ISP(InSystemProgram),字节和页编程,现场程序调试和修改更加方便灵活;(2)数据指针增加到两个,方便了对片外RAM的访问过程;(3)增加了看门狗定时器,提高了系统的抗干扰能力;(4)增加断电标志;(5)增加掉电状态下的中断恢复模式。2023/2/56MCS-51单片机内部结构图2023/2/572.2AT89S51的引脚功能引脚说明时钟引脚

(1)XTAL1(19脚):片内振荡器反相放大器和时钟发生器电路输入端。用片内振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚接外部时钟振荡器的信号。(2)XTAL2(18脚):片内振荡器反相放大器的输出端。当使用片内振荡器,该脚连接外部石英晶体和微调电容。当使用外部时钟源时,本脚悬空。控制引脚(1)RST(RESET,9脚)复位信号输入,在引脚加上持续时间大于2个机器周期的高电平,可使单片机复位。正常工作,此脚电平应≤0.5V。当看门狗定时器溢出输出时,该脚将输出长达96个时钟振荡周期的高电平。引脚说明(2)/VPP(EnableAddress/VoltagePulseofPrograming,31脚)

:引脚第一功能:外部程序存储器访问允许控制端。

=1,在PC值不超出0FFFH(即不超出片内4KBFlash存储器的地址范围)时,单片机读片内程序存储器(4KB)中的程序,但PC值超出0FFFH

(即超出片内4KBFlash地址范围)时,将自动转向读取片外60KB(1000H-FFFFH)程序存储器空间中的程序。

=0,只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH,片内的4KBFlash程序存储器不起作用。

VPP:引脚第二功能,对片内Flash编程,接编程电压。引脚说明

(3)ALE/(AddressLatchEnable/PROGramming,30脚)ALE为CPU访问外部程序存储器或外部数据存储器提供地址锁存信号,将低8位地址锁存在片外的地址锁存器中。单片机正常运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。可用作外部定时或触发信号。

:引脚第二功能,对片内Flash编程,为编程脉冲输入脚。2.3AT89S51的CPU

2.3.1运算器对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW及两个暂存器等。1.算术逻辑运算单元ALU可对8位变量逻辑运算(与、或、异或、循环、求补和清零),还可算术运算(加、减、乘、除)ALU还有位操作功能,对位变量进行位处理,如置“1”、清“0”、求补、测试转移及逻辑“与”、“或”等。2.累加器累加器是一个最常用的专用寄存器,其自身带有全零标志Z,若A=0则Z=1;若A≠0则Z=0。用途:该标志常用作程序分支的判断条件。3.程序状态字寄存器(1)PSW:程序状态字寄存器。定义格式如右上边。其中,CY:进借位标志;AC:辅助进借位标志;F0:用户标志;RS1、RS0:工作寄存器组选择位。D7D6D5D4D3D2D1D0CYACF0RS1RS0OVXPRS1RS0选择工作寄存器组000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)表:工作寄存器组选择控制表(2)堆栈指针SP

指示堆栈顶部在内部RAM块中的位置。堆栈结构--向上生长型。单片机复位后,SP为07H,使得堆栈实际上从08H单元开始。堆栈主要是为子程序调用和中断操作而设。用于保护断点和现场。两种操作:数据压入(PUSH)堆栈,数据弹出(POP)堆栈。数据压入堆栈,SP自动加1;数据弹出堆栈,SP自动减1。

(3)寄存器B为执行乘法和除法而设。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。乘法:两乘数分别在A、B中,执行乘法指令后,乘积在BA中除法:被除数取自A,除数取自B,商存放在A中,余数存B中。2.3.2控制器任务:识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动协调地工作。控制器包括:程序计数器、指令寄存器、指令译码器、定时及控制逻辑电路等。功能:控制指令的读入、译码和执行,从而对各功能部件进行定时和逻辑控制。程序计数器PC:是一个独立的16位计数器,不可访问。单片机复位时,PC中内容为0000H,从程序存储器0000H单元取指令,开始执行程序。PC工作过程是:CPU读指令时,PC的内容作为所取指令的地址,程序存储器按此地址输出指令字节,同时PC自动加1。2.4AT89S51存储器的结构存储器的结构特点之一:将程序存储器和数据存储器分开(哈佛结构),并有各自的访问指令。存储器空间可分为:4类。程序存储器数据存储器特殊功能寄存器位地址空间dz片外ROMEA=0片外ROMEA=0片内ROMEA=1片外ROM0000HFFFFH0000H0FFFH1000HFFFFH片外ROMEA=0片内ROMEA=1片外ROM0000H1FFFH2000HFFFFH(a)片内无ROM(b)片内有4KROM(c)片内有8KROM1.程序存储器中断源入口地址外部中断00003H定时/计数器0000BH外部中断10013H定时/计数器1001BH串行口0023H定时/计数器2(仅52子系列有)002BH程序存储器的0000H单元地址是系统程序的启动地址。

6个中断源的地址之间仅隔8个单元,存放中断服务程序往往不够用,这是通常放一条绝对转移指令,转到真正的中断服务程序,真正的中断服务程序放到后面。程序存储器的7个特殊地址2023/2/5222.特殊功能寄存器、数据存储器及位寻址区数据存储器的说明数据存储器RAM主要用来存放运算的中间结果和数据等。其存储空间分布如下:片外RAM最多可扩至64KB存储单元,地址范围为0000H~FFFFH。片内RAM为256B存储单元,地址范围为00H~FFH。片内RAM地址空间共有256B,又分为两个部分:低128B(00H~7FH)为真正的RAM区。高128B(80H~FFH)为特殊功能寄存器(SFR)区。问题:在52子系列中,高128字节RAM和SFR的地址是重叠的,如何区分呢?究竟访问哪一块可通过不同的寻址方式加以区分:访问高128字节RAM采用寄存器间址访问SFR则只能采用直接寻址访问低128字节RAM时,两种寻址均可采用。问题讨论1.工作寄存器组区00H—1FH单元为工作寄存器组区:共32个字节。工作寄存器也称为通用寄存器,用于临时寄存8位信息。工作寄存器共有4组,称为0组、1组、2组和3组,每组8个,分别依次用R0~R7表示进一步说明

20H—2FH为位寻址区,共16字节,128位。位地址范围为00H—7FH。

字节单元地址D7D6D5D4D3D2D1D020H070605040302010021H0F0E0D0C0B0A090822H171615141312111023H1F1E1D1C1B1A191824H272625242322212025H2F2E2D2C2B2A292826H373635343332313027H3F3E3D3C3B3A393828H474645444342414029H4F4E4D4C4B4A49482AH57565554535251502BH5F5E5D5C5B5A59582CH67666564636261602DH6F6E6D6C6B6A69682EH77767574737271702FH7F7E7D7C7B7A79782.位寻址区30H—7FH是一般RAM区,也称为用户RAM区,共80字节。对于52子系列,一般RAM区从30H—FFH单元。另外,对于前两区中未用的单元也可作为用户RAM单元使用。3.一般RAM区堆栈:是按先入后出、后入先出的原则进行管理的一段存储区域。使注意事项:堆栈是用片内数据存储器的一段区域,在具体使用时应避开工作寄存器、位寻址区,一般设在2FH以后的单元,如工作寄存器和位寻址区未用,也可开辟为堆栈。入栈时,SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把SP指针指向的单元的数据取出,然后再把SP指针的内容自动减1。复位时,SP的初值为07H,因此堆栈实际上从08H开始存放数据。4.堆栈区与堆栈指针概念:特殊功能寄存器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程时可以给其设定值,但不能移作它用。地址:分布在80H—FFH地址空间,与片内数据存储器统一编址。5.特殊功能寄存器特殊功能寄存器(SFR)共26个:表2-4SFR的名称及其分布。位寻址:有些还可位寻址,位地址见表2-4。与AT89C51相比:新增5个SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST。凡是可位寻址的SFR,字节地址末位只能是0H或8H。3031新增寄存器的说明1.AUXR寄存器

AUXR是辅助寄存器,其格式如图2-5所示:

DISALE:ALE的禁止/允许位。

0:ALE有效,发出脉冲;1:ALE仅在执行MOVC和MOVX类指令时有效。

DISRTO:禁止/允许WDT溢出时的复位输出。

0:WDT溢出时,在RST引脚输出一个高电平脉冲;

1:RST引脚仅为输入脚。

WDIDLE:WDT在空闲模式下的禁止/允许位。

0:

WDT在空闲模式下继续计数;

1:

WDT在空闲模式下暂停计数。新增寄存器的说明2.数据指针DPTR0和DPTR1双数据指针寄存器,便于访问数据存储器。DPTR0:AT89C51单片机原有的数据指针;DPTR1:新增加的数据指针。AUXR1的DPS位用于选择两个数据指针。当DPS=0时,选用DPTR0;当DPS=1时,选用DPTR1。数据指针可作为一个16位寄存器来用,也可作为两个独立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)来用。35新增寄存器的说明3.AUXR1寄存器AUXR1是辅助寄存器,格式如图2-6所示:

DPS:数据指针寄存器选择位。

0:选择数据指针寄存器DPTR0;

1:选择数据指针寄存器DPTR1。图2-6

AUXR1寄存器的格式新增寄存器的说明4.看门狗定时器WDTWDT包含一个14位计数器和看门狗定时器复位寄存器——

(WDTRST)。当CPU由于干扰,程序陷入死循环或跑飞状态时,WDT提供了一种使程序恢复正常运行的有效手段。36数据存储器数据读写应用实例

【程序1】工作寄存器的读写地址机器码程序注释检查结果ORG0000H;程序从ROM区0000H处开始存放0000H7811MOVR0,#11H;将立即数11H送入寄存器R0中(H)=11H0002H7922MOVR1,#22H;将立即数22H送入寄存器R1中(H)=22H0004H7A33MOVR2,#33H;将立即数33H送入寄存器R2中(H)=33H0006H7B44MOVR3,#44H;将立即数44H送入寄存器R3中(H)=44H0008H75D010MOVPSW,#10H;使当前工作寄存器组为第2组(H)=10H000BH7855MOVR0,#55H;将立即数55H送入寄存器R0中(H)=55H000DH7966MOVR1,#66H;将立即数66H送入寄存器R1中(H)=66H000FH7A77MOVR2,#77H;将立即数77H送入寄存器R2中(H)=77H0011H7B88MOVR3,#88H;将立即数88H送入寄存器R3中(H)=88HEND;程序结束

【程序2】位寻址区的读写

地址机器码程序注释检查结果ORG0100H;程序从ROM区0100H处开始存放0100HD200SETB00H;将位地址为00H的位置1(H)=10102HD201SETB01H;将位地址为01H的位置1(H)=10104HD202SETB02H;将位地址为02H的位置1(H)=10106HD203SETB03H;将位地址为03H的位置1(H)=10108HC204CLR04H;将位地址为04H的位清0(H)=0010AHC205CLR05H;将位地址为05H的位清0(H)=0010CHC206CLR06H;将位地址为06H的位清0(H)=0010EHC207CLR07H;将位地址为07H的位清0(H)=0(20H)=0110HC290CLR90H;将P1.0位清0(H)=00112HD290SETB90H;将P1.0位置1(H)=10114HC291CLR91H;将P1.1位清0(H)=00116HD291SETB91H;将P1.1位置1(H)=1END;程序结束【程序3】一般RAM区和特殊功能寄存器区的读和写

地址机器码程序注释检查结果ORG0200H;程序从ROM区0200H存放0200H753099MOV30H,#99H;将立即数99H送到30H单元中(30H)=(PC)=0203H7545AAMOV45H,#0AAH;将立即数AAH送到45H单元中(45H)=(PC)=0206H758150MOVSP,#50H;将立即数50H送到堆栈指针SP中(H)=50H(PC)=0209H7460MOVA,#60H;将立即数60H送到累加器A中(H)=60H(PC)=020BH759055MOVP1,#55H;将立即数55H送到P1口中(H)=55H(PC)=020EH75D090MOVPSW,#90H;将立即数90H送到PSW中,使当前工作寄存器组为第2组且将CY位置1(H)=90H(PC)=0211H901234MOVDPTR,#1234H;将立即数1234H送到数据指针DPTR中(H)=12H(H)=34HEND;程序结束2.5并行输入/输出端口8051单片机有4个8位并行I/O端口,称为P0、P1、P2和P3口,每个端口都各有8条I/O口线,每条I/O口线都能独立地用作输入或输出。在无片外扩展存储器的系统中,这四个I/O口都可以作为通用I/O口使用。在有片外扩展存储器的系统中,P2口送出高8位地址,P0口分时送出低8位地址和8位数据。

1.P0口P0口某一位的结构图如下图所示,它由一个输出锁存器、两个三态输入缓冲器、一个转换开关MUX、一个输出驱动电路(T1和T2)和一个与门及一个非门组成。

(1)P0口用作通用I/O口

MUX与锁存器的Q端接通,与门输出为0,T1截止,输出驱动级就工作在需外接上拉电阻的漏极开路方式。 ①P0口用作输出口 ②P0口用作输入口方式1:读引脚。方式2:读锁存器。(2)P0口用作地址/数据总线

MUX将地址/数据线与T2接通,同时与门输出有效。若地址/数据线为1,则T1导通,T2截止,P0口输出为1;反之T1截止,T2导通,P0口输出为0。当数据从P0口输入时,读引脚使三态缓冲器2打开,端口上的数据经缓冲器2送到内部总线。

(3)P0口小结

①P0口既可作地址/数据总线使用,也可作通用I/O口使用。当P0口作地址/数据总线使用时,就不能再作通用I/O口使用了。②P0口作输出口使用时,输出级属漏极开路,必须外接上拉电阻,才有高电平输出。③P0口作输入口读引脚时,应先向锁存器写1,使T2截止,不影响输入电平。

P0口的特点

P0口为双功能口——地址/数据复用口和通用I/O口。(1)当P0口用作地址/数据复用口时,是一个真正的双向口,输出低8位地址和输出/输入8位数据。(2)当P0口用作通用I/O口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此是一个准双向口。为保证引脚信号的正确读入,应首先向锁存器写1。单片机复位后,锁存器自动被置1;当P0口由原来输出转变为输入时,应先置锁存器为1,方可执行输入操作。2.P1口P1口是唯一的单功能口,仅能作为通用I/O口使用。由于在其输出端接有上拉电阻,故可以直接输出而无需外接上拉电阻。同P0口一样,当作输入口时,必须先向锁存器写“1”,使场效应管T截止。

P1口的特点由于内部上拉电阻,无高阻抗输入状态,故为准双向口。P1口“读引脚”输入时,必须先向锁存器写入1。3.P2口图中的控制信号C决定转换开关MUX的位置:当C=0时,MUX拨向下方,P0口为通用I/O口;当控制信号C=1时,MUX拨向上方,P0口作为地址总线使用。在实际应用中,P2口通常作为高8位地址总线使用。

P2口的特点作为地址输出线时,P2口高8位地址,P0口输出的低8位地址寻址64KB地址空间。作为通用I/O口时,P2口为准双向口。功能与P1口一样。一般情况下,P2口大多作为高8位地址总线口使用,这时就不能再作为通用I/O口。4.P3口P3口用作通用I/O口时,第二输出功能信号W=1,P3口的每一位都可定义为输入或输出,其工作原理同P1口类似。在真正的应用电路中,P3口的第二功能显得更为重要。

P3口的第二功能

引脚第二功能功能说明P3.0RXD串行口输入P3.1TXD串行口输出P3.2外部中断0输入P3.3外部中断1输入P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6片外RAM写选通信号(输出)P3.7片外RAM读选通信号(输出)P3口的特点P3口内部有上拉电阻,无高阻抗输入态-准双向口。P3口作为第二功能的输出/输入,或第一功能通用输入,均须将相应位的锁存器置1。实际应用中,由于复位后P3口锁存器自动置1,满足第二功能所需的条件,所以不需任何设置工作,就可以进入第二功能操作。当某位不作为第二功能用时,可作为第一功能通用I/O使用。引脚输入部分有两个缓冲器第二功能的输入信号取自缓冲器BUF3的输出端第一功能的输入信号取自缓冲器BUF2的输出端。

下面讨论P1~P3口与LED发光二极管的驱动连接问题。P0口与P1、P2、P3口相比,P0口的驱动能力较大,每位可驱动8个LSTTL输入,而P1、P2、P3口的每一位的驱动能力,只有P0口的一半。当P0口某位为高电平时,可提供400A的电流;当P0口某位为低电平(0.45V)时,可提供3.2mA的灌电流。P1~P3口驱动LED发光二极管54如低电平允许提高,灌电流可相应加大。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出。例如,使用单片机的并行口P1~P3直接驱动发光二极管,电路如图2-12。由于P1~P3内部有30kΩ左右的上拉电阻。如高电平输出,则强行从P1、P2和P3口输出的电流Id会造成单片机端口的损坏,如图2-12(a)所示。如端口引脚为低电平,能使电流Id

从单片机外部流入内部,则将大大增加流过的电流值,如图2-12(b)所示。所以:当P1~P3口驱动LED发光二极管时,应该采用低电平驱动。55(a)不恰当的连接:高电平驱动(b)恰当的连接:低电平驱动图2-12

发光二极管与AT89S51并行口的直接连接关于负载能力的小节P0口的输出级与P1~P3口的输出级在结构上不同。其输出级无上拉电阻。P0口的每一位能驱动8个LSTTL负载。在作为通用I/O口使用时,输出驱动电路是开漏的,所以,驱动集电极开路(OC门)电路或漏级开路电路需外接上拉电阻。当作为地址/数据总线使用时(T1可以提供上拉电平),口线不是开漏的,无需外接上拉电阻。P1~P3口的每一位能驱动4个LSTTL负载。无需外接上拉电阻。当作输出口去驱动一个普通晶体管的基极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流。

P1口输出功能应用实例

【例1】P1口做输出口,控制八只发光二极管循环点亮(P1口输出低电平时发光二极管被点亮)。

解:由于发光二极管低电平点亮,所以,需要哪个发光二极管点亮,只需在相应的端口输出逻辑0即可。

由于每个发光二极管点亮后要持续一段时间才熄灭,再使下个发光二极管点亮,因此需要编写延时子程序,供主程序反复调用。本例中,延时子程序采用指令循环来实现。

P1口输出功能应用实例

地址机器码程序注释ORG0000H0000H021000LJMPMAINORG1000H1000H74FEMAIN:MOVA,#0FEH1002HF590LOOP:MOVP1,A1004H12100ALCALLDELAY;延时1007H23RLA;左移位1008H80F8SJMPLOOP;循环100AH7FFFDELAY:MOVR7,#0FFH;延时子程序100CH7EFAL1:MOVR6,#0FAH100EHDEFEDJNZR6,$1010HDFFADJNZR7,L11012H22RETEND【例2】利用P1.0输出高低电平,控制继电器的开合,以实现对外部装置(如灯L1和L2)的控制。

解:将单片机的P1.0接继电器控制端JIN,继电器的JZ通过K1接地,常开触点JK接L1,常闭触点JB接L2。编制程序,使P1.0电平变化,高电平时继电器吸合,常开触点闭合,L1点亮,L2熄灭;低电平时继电器不工作,常闭触点闭合,L2点亮,L1熄灭。

参考程序:

地址机器码程序注释ORG0000H0000H022000LJMPMAINORG2000H2000HC290MAIN:CLRP1.0;P1.0送低电平2002H12200CLCALLDELAY;延时2005HD290SETBP1.0;P1.0送高电平2007H12200CLCALLDELAY;延时200AH80F4SJMPMAIN;循环200CH7F06DELAY:MOVR7,#06H;延时子程序200EH7EFFL1:MOVR6,#0FFH2010H7DFAL2:MOVR5,#0FAH2012HDDFEDJNZR5,$2014HDEFADJNZR6,L22016HDFF6DJNZR7,L12018H22RETENDP3口输入功能应用实例

【例3】P3口的P3.0连接一个开关,作为输入端;P1口的P1.0~P1.7连接八只发光二极管,作为输出端。要求用P3.0来控制P1输出的循环灯,即当P3.0输出高电平时,控制P1口的发光二极管左循环点亮;当P3.0输出低电平时,控制P1口的发光二极管右循环点亮(P1口输出低电平时发光二极管被点亮)。

解:在主程序中要对P3.0的状态进行判断。如果P3.0为高电平,则使用循环左移指令。如果P3.0为低电平,则使用循环右移指令。延时子程序同例1。

参考程序:地址机器码程序注释ORG0000H0000H023000 LJMPMAIN ORG3000H3000H74FEMAIN:MOVA,#0FEH3002HF590LOOP:MOVP1,A3004H123010 LCALLDELAY;延时3007H20B003 JBP3.0,L1300AH03 RRA;右移位300BH80F5 SJMPLOOP;循环300DH23L1:RLA;左移位300EH80F2 SJMPLOOP;循环3010H7FFFDELAY:MOVR7,#0FFH;延时子程序3012H7EFAL2:MOVR6,#0FAH3014HDEFEDJNZR6,$3016HDFFADJNZR7,L23018H22RETEND2023/2/5632.6时钟电路与时序

2.6.1时钟电路内部时钟方式外部时钟方式

AT89S51AT89S512023/2/564

2.6.2周期与时序1个机器周期:12个晶荡周期(或6个时钟周期)指令的执行时间称作指令周期(单、双、四周期)2023/2/565典型时序单字节指令

温馨提示

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

评论

0/150

提交评论