第8章输入输出接口_第1页
第8章输入输出接口_第2页
第8章输入输出接口_第3页
第8章输入输出接口_第4页
第8章输入输出接口_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

微型计算机原理与应用

------输入输出和接口技术主讲人:马永红2/6/20231第八章输入输出和接口技术本章教学目的通过输入输出接口是计算机的重要组成部分,通过I/O接口控制方式的学习,使学生初步了解主机与外设的主要通信方式及其特点,通过并行接口8255A的学习和实践,使学生接触具体的接口形式,从而进一步加深对接口知识的理解。2/6/20232一、什么是I/O接口(电路)?是外设与CPU间连接的桥梁;CPU与外设之间信息交换的通道。9.1.1I/O接口基本概念---接口的功能外设各种各样,工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大2/6/20233常用外设:硬盘、显示器、存储器工业控制中的模拟设备、A/D、D/A转换器输入、输出设备:打印机;键盘、鼠标;绘图仪2/6/20234主板上串行接口的插头与插座9针插座9针插头25针插座、插头2/6/20235二、I/O接口电路的主要功能

----协助CPU对外部设备进行管理数据加工(1)进行I/O地址译码:找到CPU选定的I/O设备。----8259(2)协调外设与CPU工作速度的差异:作为数据中转站。输出接口有锁存环节(外设慢),输入接口有缓冲环节(暂时寄存器)(3)信息联络:CPU和I/O设备进行联络的通讯员。

CPU想读或写外设时,外设是否准备好了,要给CPU发个信号,这个功能由接口来完成;外设向CPU发出中断申请,通过接口代为办理;2/6/20236计算机的CPU与一个I/O设备进行信息交换时,要传递三种信息:图6-1CPU与I/O接口间传递的信息三、I/O接口的内部结构2/6/20237接口芯片内部必须有相应的寄存器---端口

命令寄存器——存放控制命令,用来设定接口功能、工作方式。状态寄存器——保存外设当前状态,以供CPU读取。数据输入/输出寄存器——暂存输入/输出的数据2/6/202389.1.2接口控制原理一、数据传送方式并行传送:数据在多条传输线上同时传送。以1字节的数据为例,通过8条(+2)并行传输线同时传送。串行传送:数据在1(+2)条传输线上,一位一位地按顺序分时传送。以1字节为例,数据要通过一条传输线分8次由低位到高位按顺序一位一位地传送。源目的0

11

0

1

0

1

0源目的一条地线+一条数据准备好状态线(应答线)移位寄存器2/6/20239距离:并行——近距离传送(通常小于30米)

串行——远距离传送(几米~数千公里)速度:二者的传送速率与距离成反比,但在短距离内并行快得多。2/6/202310

9.1.2接口控制原理

二、传送控制方式-------CPU与外设间的数据传送方式CPU与外设的工作速度不一致,如何使两者高效、可靠地进行数据传送,是本节讨论的问题。2/6/2023111、查询方式(CPU与外设不同步工作):传送前,先查询外设状态,准备好才传送,否则CPU处于等待状态。查询传送方式,编程流程:NY从状态端口读入状态信息从数据端口传送一个数据外设准备好否?外设处于被动状态2/6/202312实现方法:

在与外设进行传送数据前,CPU先查询外设状态,

——“你准备好没有?”当外设准备好后,才执行I/O指令,实现数据传送特点:1.CPU通过不断查询外设状态,实现与外设的速度匹配2.CPU的工作效率低对外设的要求:应提供设备状态信息对接口的要求:需要提供状态端口跳转就像从卡上提钱需要查询请示2/6/2023132、无条件传送方式实现方法●如发光二极管的亮灭、电机的启停这类外部设备可以随时接受数据,向这类外设可以直接传送数据,●如A/D转换器,没处理一个数据的时间是固定的,可以间隔固定的时间来送数据以上这两种情况CPU不必查询外设工作状态在程序中直接用I/O指令,完成与外设的数据传送。跳转想想邮信或邮递货物想想我们发的QQ信息2/6/202314例1

无条件输入接口(参看教材图6-8)接口电路,即硬件上保证:只在CPU执行从200H端口输入数据时,

三态门处于工作状态,使输入设备的数据送上总线侧,而CPU执行其它指令时,

三态门均处于高阻状态,使输入设备的数据线与总线侧断开三态缓冲器输入设备数据线IOR地址译码地址线

200H000D7~D0A15~A0与非PC总线2/6/202315无条件输入编程:

从端口200H读入100个字节到内存缓冲区buffer中。、、、

MOVAX,SEGbufferMOVDS,AX;取缓冲区

LEADI,buffer;首地址

MOVCX,100H;传送个数

MOVDX,200H;端口地址

next: ;延时等待

INAL,DX;读入数据

CALLdelay

MOV[DI],AL;送缓冲区

INCDI;修改指针

LOOPnext

、、、;延时子程delayPROCPUSHCXMOVCX,80Hcc:LOOPccPOPCX

RETdelayENDP2/6/2023163、中断传送方式

实现方法:

1.

当外设准备好,向CPU发出中断请求

2.CPU在满足响应中断的条件下,发出中断响应信号;

3.CPU暂停当前的程序,转去执行中断服务程序,完成与外设的数据传送;

4.CPU从中断服务程序返回,继续执行被中断的程序就像学生上课发言要举手一样2/6/202317中断服务程序发申请中断服务程序发申请中断方式下CPU执行程序流程外设2/6/2023184、DMA传输方式(DirectMemoryAccess)前面三种I/O方式都需要CPU作为中介:

外设

CPU内存外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式);I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。

缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒)—解决:DMA传输外设

内存DMA传送方式:2/6/202319DMA

传送方式过程CPUDMAC内存外设总线响应总线请求

1.由专用接口芯片DMA控制器(称DMAC)控制传送过程,2.当外设需传送数据时,通过

DMAC向CPU发出总线请求;3.CPU发出总线响应信号,释放总线;4.DMAC接管总线,控制外设、内存之间直接数据传送2/6/202320DMA传送原理示意图

①系统总线CPUDMAC存储器外设接口AENIOWMEMWMEMRIORMEMWMEMRIOWIORAENHOLDHLDADRQDACK②③④⑤AENIOWIORMEMWMEMR①外设发出DMA请求②DMAC向CPU申请总线③CPU完成当前总线周期后响应,并释放总线控制权④DMAC得到总线控制权,并发出DMA响应信号⑤由DMAC发出各种控制信号,控制外设与存储器之间的数据传送⑥数据传送完后,DMAC撤销HOLD信号⑦CPU释放HLDA信号,并重新控制总线⑥⑦2/6/202321DMA传送方式的特点

1.外设和内存之间,直接进行数据传送,不通过CPU,传送效率高。适用于在内存与高速外设、或两个高速外设之间进行大批量数据传送。

2.电路结构复杂,硬件开销较大。2/6/202322

对I/O设备进行操作须经过两个步骤:寻找I/O接口芯片(片选)寻找该芯片中的和外设对应的寄存器---端口9.2、I/O指令和I/O地址译码2/6/202323

I/O端口: 外设通过接口和系统连接如图6-2所示。接口中的寄存器叫做端口。每一个端口有端口地址。一个接口芯片中的可能有多个端口,计算机中为每一个端口都赋予一个惟一编号——称为端口地址(或端口号)。一、什么是I/O端口是接口中可供CPU访问的寄存器不同的信息用不同的端口不同的端口有不同的地址2/6/202324数据端口:保存外设给CPU和CPU发往外设的数据状态端口:保存外设或接口电路的状态。CPU通过对状态端口的访问和测试可以知道外设或接口的当前状态;控制端口:保存CPU给外设或接口电路的命令端口按传送的信息不同分为三类2/6/202325

1.映像I/O寻址(统一编址)把外设接口与内存统一进行编址。各占据统一地址空间的不同部分。优点指令统一,灵活;访问控制信号统一,使用同一组的地址/控制信号。

缺点内存可用地址空间减小0地址空间(共1MB)内存地址(960KB)I/O地址(64KB)FFFFFHEFFFFHF0000H二、端口寻址方式2/6/202326

2.独立编址外设地址空间和内存地址空间相互独立。优点:内存地址空间不受I/O编址的影响缺点:I/O指令功能较弱,使用不同的读写控制信号00000H内存地址空间内存空间(1MB)I/O空间(64KB)FFFFHFFFFFHI/O地址空间0000H2/6/202327

8088/8086CPU的I/O编址方式采用I/O独立编址方式与存储器共用地址线)地址线上的地址信号用来区分时为I/O地址I/O操作只使用20根地址线中的16根:A15

~A0

可寻址的I/O端口数为64K(65536)个I/O地址范围为0~FFFFHIBMPC只使用了1024个I/O地址(0~3FFH)2/6/2023289.3简单的数据输入输出接口电路

在简单的电路中,常常使用三态缓冲器、三态寄存器、输出寄存器作为CPU与外设间的数据输入输出接口电路,我们称作简单的输入输出接口电路。2/6/202329

接口电路的基本结构数据线控制线状态线DBCBAB数据输入寄存器(or三态门)数据输出寄存器(锁存器)状态寄存器(or三态门)命令寄存器译码电路控制逻辑接外设接主机2/6/2023301、三态门作为输入接口

MOVDX,83FCHINAL,DXANDAL,0FFHJZNEXT1JMPNEXT2译码器83FCH~83FFH地址可以认为设计执行IN指令时处理器发出读信号IOR#,与地址信号相或产生负脉冲加到输出允许端E1#和E2#,这样输入端的数据通过数据线D0-D7送至CPU中的AL数据输入三态缓冲器2/6/2023312、输出寄存器74LS273作为输出接口74LS273:8输入D触发器用OUT指令执行输出操作:执行OUT指令时微处理器发出IOW#写信号,和端口地址相或产生负脉冲加到CP引脚,CP引脚在上升沿之后,将D0-D7端出现的数据写入该触发器寄存。2/6/20233274LS138G端接高电平;G2A、G2B接低电平74LS273:8输入D触发器2/6/202333用74LS273作为输出接口,把数据送到7段数码管74LS273的地址假设为F0H用74LS244作为输入口,读入开关K0~K3的状态74LS244的地址假设为F1H当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’实例:根据开关状态在7段数码管上显示数字或符号3、简单接口的应用举例2/6/202334O1I1O2I2O3I3O4I4#E1

K0~K3+5VGG2AG2BCBA≥174LS244D0Q0|Q1D7Q2Q3Q4CPQ5Q6Q7

abcdefgDP74068个反相器74LS273Rx8≥174LS138D0~D7IOW#IOR#Y0Y1F0H=0000000011110000F1H=0000000011110001&≥1A7~A4A15~A8A3A2A1A0D0D1D2D3译码电路地址由设计者通过电路来设定!!!2/6/202335符号形状7段码.gfedcba符号形状7段码.gfedcba’0’00111111’8’01111111’1’00000110’9’01100111’2’01011011’A’01110111’3’01001111’B’01111100’4’01100110’C’00111001’5’01101101’D’01011110’6’01111101’E’01111001’7’00000111’F’011100012/6/202336相应程序段如下:

……Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX,Seg7 ;取7段码表基地址

MOV AH,0GO: MOV DX,0F1H

;开关接口的地址为F1H

IN AL,DX

;读入开关状态

AND AL,0FH ;保留低4位(只有四个开关) MOV SI,AX ;作为7段码表的表内位移量

MOV AL,[BX+SI] ;取7段码

MOV DX,0F0H ;7段数码管接口的地址为F0H OUT DX,AL JMP GO2/6/202337

微型计算机原理与应用

----可编程并行接口8255主讲人:马永红2/6/202338可编程并行通信接口芯片8255A概述

8255A是Intel86系列微处理机的配套并行接口芯片,它可为86系列CPU与外部设备之间提供并行输入/输出的通道。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用8255A连接外部设备时,通常不用再附加外部电路,给使用者带来很大方便。CPU和外设交换数据的管理芯片2/6/202339Intel公司出品的82C55A-2★含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。★可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。2/6/202340控制字寄存器一、8255A芯片内部结构及其引脚功能数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESETC2/6/2023411、三个8位数据端口A,B,C(3个8位寄存器);1)PA、PB、PC口三个8位输入输出的数据端口2)PC口有第二种用途:;在“方式字”的控制下,PC口可以分成两个4位的端口,分别配合A、B口使用,用作联络线端口提供控制或状态信息2.控制字端口(寄存器)可接收来CPU通过数据总线(D7~D0)送来的控制字,从而决定各个端口的工作方式。通过A、B组控制器来实现各种操作。3.数据总线缓冲存储器它是8255A与8086CPU之间的数据接口,是CPU和8255之间交换信息的必由之路。CPU执行输出指令时,可将控制字或数据通过数据总线缓冲存储器传送给8255A。CPU执行输入指令时,8255A可将状态信息或数据通过总线缓冲存储器向CPU输入。2/6/202342CS(chipselect)——片选信号。由CPU输入,低电平有效。由他启动8255,使其处于工作状态,完成和CPU之间的通信。由地址线A15-A2经译码选中。(2)

RD,WR——读、写控制信号。由CPU输入,RD有效,他控制8255A送出数据或状态信息向CPU。WR有效,他控制CPU将命令信号或数据写入8255A。(3)RESET——复位信号。由CPU输入。RESET有效时,清除8255A中所有控制字寄存器内容,并将各端口置成输入方式。4控制命令2/6/2023438255中有三个输入输出端口,另外还有一个控制端口(控制字寄存器),共有四个端口,A1和A0——端口选择信号。当A1A0=00,选择端口A;当A1A0=01,选择端口B;当A1A0=10,选择端口C;当A1A0=11,选择控制字寄存器。5、端口寻址线A0、A1---片内端口地址线2/6/202344二、8255与系统的连接示意图D0~D7WRRDA1A0CSDBIOWIORA1A0译码器8255A口B口C口D0~D7外设A15~A2系统总线2/6/202345三、8255工作方式及控制字方式0:基本输入/输出方式(A、B、C口)方式1:选通工作方式(A、B口)方式2:双向传送方式(仅A口)

某端口工作于哪一种方式,可通过软件编程来指定。即向8255(控制字寄存器)写入方式控制字来决定其工作方式,见下页。2/6/202346PA0~PA7PC7~PC4PC3~PC0PB7~PB0地址总线数据总线控制总线*RD*WRBCAD7~D08255AA0A1*CS方式0PB7~PB0方式2PA0~PA7IO控制双向BACIOIOPB7~PB0方式1PA0~PA7控制或控制或BAC2/6/202347

方式选择控制字

——确定3个端口的工作方式;

C口置位/复位控制字

——确定C口某一位的初始状态,或用于设置INTE位。8255A的工作方式由CPU对8255A(控制字寄存器)写入控制命令字来设定,这个过程称为“初始化”。控制字2/6/2023488255A的初始化——方式选择控制字D7D6D5D4D3D2D1D0C口低位选择,1入0出B口I/O选择,1入0出B口方式选择,0=方式01=方式1B组C口高位选择,1入0出A口I/O选择,1入0出A口方式选择00=方式001=方式11X=方式2D7=1,方式控制字标志A组1、控制字的结构2/6/2023498255A的初始化——C口置位/复位控制字D7D6D5D4D3D2D1D0置位/复位选择1=置位,0=复位D7=0为置位/复位控制字标志D3D2D1位选择

000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7无效2/6/2023502、如何写入控制字

MOVDX,8255A控制端口地址

MOVAL,86H;10000110OUTDX,AL

方式控制字2/6/202351【例1】

某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入。则控制字为:10010001B即91H初始化程序为:MOVAL,91HOUTCTRL_PORT,AL2/6/202352【例2】A口方式2,要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。初始化程序可补充完整如下。MOVAL,0C4HOUTCTRL_PORT,AL;设置工作方式MOVAL,09HOUTCTRL_PORT,AL;PC4置位,A口输入允许中断MOVAL,ODHOUTCTRL_PORT,AL;PC6置位,A口输出允许中断MOVAL,05HOUTCTRL_PORT,AL;PC2置位;B口输出允许中断一个控制字、三个C口复位置位控制字2/6/202353【例3】在8086系统中,采用8255完成并行通信,8255口地址为200H~206H(8255的A1、A0和8086的A2、A1相连),将A组和B组设置成方式0,A口、B口为输入,C口为输出。请写出8255的A、B、C、控制口地址,8255芯片的工作方式控制字及其初始化程序。解:控制字:10010010B(92H)A口的地址为200HB口的地址为202HC口的地址为204H控制口地址为206H初始化程序MOVDX,206HMOVAL,92HOUTDX,AL

2/6/2023543、工作方式--工作方式08255相当于三个独立的8位简单接口。各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口。设置为输出口时有锁存能力,设置为输入口时无锁存能力。属于无条件传输方式2/6/202355INAL,PORT

;PORT是端口号输入输入缓冲器译码器数据DBAB外设8n①外设将数据送到8255输入缓冲器中;②CPU给出有效的8255地址;③CPU发读命令,将8255A输入缓冲器中数据读入CPU的AL寄存器中。2/6/2023568255A的工作方式——方式0(输出方式)OUTPORT,AL输出锁存器译码器数据DBAB外设8n2/6/202357这是一种选通的输入/输出方式。在这种工作方式下,数据的输入输出操作要在选通信号控制下完成。端口A和端口B仍作为数据的输入、输出口;端口C的某些位作为端口A和端口B的选通控制信号---称作联络信号特点:

1、A口、B口在作为输入和输出时的选通信号不同。方式1的应用:主要用于中断控制方式下的输入输出。方式1需借用端口C用做联络信号同时还具有中断请求和屏蔽功能联络方式3、工作方式----工作方式1(选通工作方式)2/6/2023588255A方式1工作过程(输入)111外设产生数据数据出现在外部数据总线外设发选通信号数据进入8255A的A口1通知外设缓冲区已满,表示已经接受数据1向C口写P4位置1,开放中断向CPU发中断请求信号CPU发读信号注意:此工作是8255A初始化时完成的!!!2/6/202359C口的联络信号(方式1输入)STB#(Strobe闸门)——选通输入信号,低电平有效。它是外设供给的输入信号,当其有效时将外设来的数据送入8255的输入锁存器。A组对应(接到)PC4;B组对应PC2。IBF(inputbufferfull)——输入锁存器满,高电平有效。这是一个8255输给外设的联络信号。当其有效时,通知外设输入的数据已写入缓冲器,此时不能送下一个数据。CPU用IN指令取走数据后,此信号被清除。A组对应PC5;B组对应PC1。如图这两个信号(引脚)是8255与外设间的联络引脚2/6/202360C口的联络信号(方式1输入)INTR(interruptrequest)——中断请求信号,高电平有效。是由8255A输出的一个信号。用于向CPU请求中断,让CPU读走输入锁存器中的数据。A组对应PC3;B组对应PC0INTE(interruptenable)——端口中断允许信号,可由用户通过对PC4位置位来实现。INTE=1,允许发出INTR请求。该信号没有外接引脚如图和CPU联络的引脚C口置位复位控制字来设置2/6/202361注意:INTE的状态可利用C口的位控方式来设置:输入:A口的INTE:写入PC4B口的INTE:写入PC2输出:A口的INTE:写入PC6B口的INTE:写入PC2例如:方式1输入允许A口中断,则应按如下方法设置INTEA。

MOVDX,控制寄存器地址

MOVAL,0xxx1001B;1=允许中断,0=禁止中断

OUTDX,AL2/6/2023628255A方式1工作过程(输出)CPU发写信号1111向C口写PC4位置1,开放中断1CPU产生数据后,输出到数据总线数据进入8255A通知外部设备取走数据外部设备取走数据外设取走数据后的应答信号高电平告诉外设数据缓冲区为空02/6/202363OBF*(outputbufferfull)——输出缓冲器满信号,8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK*(Acknowledge)——响应确认信号。是一个外设的响应信号,指示CPU输给8255A的数据已由外设接受。INTR——中断请求信号,高有效。当输出设备已接受了CPU输出的数据后,8255A输出此信号向CPU提出新的中断请求,要求CPU继续输出数据INTE(interruptenable)——端口中断允许信号,可由用户通过对PC6(INTEA)和PC2(INTEB)位置位来实现。INTE=1,允许发出INTR请求。该信号没有外接引脚C口的联络信号(方式1输出)2/6/2023648255A应用举例[例8-1]打印机接口。为某应用系统配置一个并行打印机接口,并且通过接口CPU采用查询方式打印。已知欲打印数据存放在数据段中有效地址位2000H的单元中。8255的口地址位80H、81H、82H、83H。分析:由于打印接口直接面向的对象是打印机接口标准,而不是打印机本身,因此打印机接口要按照接口标准的要求进行设计,主要是8位并行数据线DATA0~DATA7,2条握手联络线STB#、ACK#和1条忙线BUSY。有关打印机接口工作时序见下图。DATA0~DATA7STBBUSYACK2/6/202365从图可见,当CPU通过接口要求打印机打印数据时,先要查看BUSY信号,BUSY=0时,才能向打印机输出数据。DATA0~DATA7STBBUSYACK它的工作流程:①主机将要打印的数据送上数据线,然后发选通信号STB#=0信号通知打印机;②打印机将数据读入,同时使BUSY线为高,通知主机停止送数。③这时,打印机内部对读入的数据进行处理。处理完以后送出ACK#=0信号(使ACK有效),同时使BUSY=0(失效),通知主机可以发下一个数据。2/6/2023668255A应用举例

CPU

PA0~7PC6PC2地

地BUSYSTBDATA0~71112~98255A打印机插座结束8255A初始化BUSY=0?送数送STB#开始YN图中用8255A的PA口作为输出打印数据口,工作于方式0,PC口高4位工作于输出方式,PC6产生STB#信号;PC口低4位工作于输入方式,PC2接收打印机的BUSY信号。程序流程如右示。

2/6/2023678255A应用举例

MOVAL,81H ;工作方式字10000××1B OUT83H,AL MOVAL,0DH;置/复位字0×××1101BPC6位置高,使STB#=1 OUT83H,ALTESBY:INAL,82H;查BUSY=0?(PC2=0)

TESTAL,04H;00000100B JNZTESBY;忙,则等待;不忙,则向A口送数

MOVAL,[2000H];从内存取数

OUT80H,AL;送数据到A口

MOVAL,0CH;00001100B置STB#信号为低(PC6=0)

OUT83H,AL NOP ;负脉冲宽度(延时)

NOP INCAL

温馨提示

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

评论

0/150

提交评论