《微计算机与单片机原理及应用》第8章 可编程通用接口芯片及应用_第1页
《微计算机与单片机原理及应用》第8章 可编程通用接口芯片及应用_第2页
《微计算机与单片机原理及应用》第8章 可编程通用接口芯片及应用_第3页
《微计算机与单片机原理及应用》第8章 可编程通用接口芯片及应用_第4页
《微计算机与单片机原理及应用》第8章 可编程通用接口芯片及应用_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

第8章可编程通用接口芯片及应用本章重点:了解可编程接口芯片的一般结构熟练掌握可编程并行接口8255A的主要性能及应用熟练掌握可编程定时/计数器8253的主要性能及应用理解串行通信的基本概念,熟悉可编程串行接口8250的主要性能及应用本章难点:可编程并行接口8255A的工作方式、编程及综合应用可编程定时/计数器8253的工作方式、编程及综合应用可编程串行接口8250的工作方式、编程及典型应用8.1可编程通用并行接口8255A及其应用并行通信是计算机与I/O设备进行数据传送的一种方式。8.1.18255A的内部结构8255A内部逻辑结构图8255A的引脚特性

3.外设接口部分(端口A,B,C)

8255A有A,B和C三个输入/输出端口,用来与外部设备相连。4.内部逻辑(A组和B组控制电路)8.1.28255A控制字及工作方式

8255A可以通过指令往控制端口中设置控制字来决定它的工作。8255A有两个控制字,即方式选择控制字和端口C按位置位/复位控制字。为区分两个控制字,控制字的D7位被给予特殊的含义,D7位为1,表示方式选择控制字;D7位为0,表示对端口C按位置位/复位的控制字。1.8255A的方式选择控制字

2.8255A按位置位/复位的控制字方式0(Model0)——基本输入/输出方式方式1(Model1)——选通输入/输出方式方式2(Model2)——双向数据传送方式端口A可以在方式0,1,2这三种方式下工作,而端口B只能在方式0和方式1两种方式下工作。8255A端口C置位/复位控制字1.方式0(1)方式0的工作特点方式0是一种基本的输入或输出方式。这种方式通常不用联络信号(或不使用固定的联络信号),不使用中断。(2)方式0的应用方式0适用于同步I/O方式及查询方式两种场合。2.方式1方式1也叫做选通的输入/输出方式。8255A工作于方式1时,端口A和B仍作为数据的输入/输出端口,同时端口C的某些位被固定作为端口A,B的控制位或状态信息位。3.方式2方式2为双向传输方式。外设通过端口A既可以向CPU发送数据,又能从CPU接收数据。方式2只适用于端口A。端口A工作在方式2时,端口C的PC7~PC3自动配合端口A提供控制。8.1.38255A初始化编程和并行I/O控制程序8255A的初始化编程是指通过给8255A写入控制字来确定各端口的工作方式。例如:设8255A的A口工作于方式0,输出;B口工作于方式1,输入,并设定8255A的四个端口地址为FFE0H~FFE3H,试编写初始化程序。由题意可知,工作方式控制字为10000110B。初始化程序为:MOVAL,10000110BMOVDX,0FFE3HOUTDX,AL;写入控制字8.1.48255A在IBM-PC系统板上的应用例:利用8255A作为简单的输入/输出接口,实现同步传送。设在IBMPC机的扩展板上有一片8255A,其端口B接8位二进制开关,端口C接8位LED发光二极管。运行程序时,可观察到LED的显示将反映二进制开关的状态,并且,按下任意键时,可退出运行。设8255A的端口地址为端口A218H端口B219H端口C21AH控制端口21BH电路连接图源程序如下:DATASEGMENTMESSDB'ENTERANYKEYTOEXITTODOS!',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;-------------------------------------------------------------MOVAH,09H;显示提示信息MOVDX,OFFSETMESSINT21H;-----------------------------------------------------------------------INIT:MOVDX,21BH;写入控制字,使端口工作于方式0,且B组端口;输入,A组端口输出MOVAL,82HOUTDX,AL;-----------------------------------------------------------------------READ:MOVDX,219H;从端口B输入开关状态INAL,DX;-----------------------------------------------------------------------WRITE:MOVDX,21AH;从端口C输出,由LED显示INAL,DX;-----------------------------------------------------------------------MOVAH,06H;从键盘输入任意字符MOVDL,0FFHINT21HJNZQUITT;判断是否有键按下,有则转退出JMPREAD;否则,不退出继续读开关状态;-----------------------------------------------------------QUITT:MOVAX,4C00H;返回DOSINT21HCODEENDSENDSTART程序说明:该程序在有外接硬件电路的条件下,经汇编、链接后,在DOS状态下运行。运行后屏幕上显示“ENTERANYKEYTOEXITTODOS!”的提示,如用户从键盘上输入任意字符都可将程序退回到DOS状态。例:8255A作为连接打印机的接口,工作于方式0。8255A作为打印机接口示意图工作过程:现将端口A作为传送字符的通道,工作于方式0,输出方式;端口B未用。端口C也工作于方式0,PC2作为“BUSY”信号输入端,故PC3~PC0为输入方式,PC6作为STB(___)信号输出端,故PC7~PC4为输出方式。设8255A的端口地址为:端口A:00D0H端口B:00D2H端口C:00D4H控制端口:00D6H设要输出的字符已被放在CL寄存器中。解:程序段如下:INTI:MOVAL,81H;控制字设置,使A,B,C三个端口均工作于方式0,端口A输出,PC7~PC4输出,PC3~PC0输入

OUT0D6H,ALMOVAL,0DH

;用置0/置1方式选择字使PC6为1则STB为高电平

OUT0D6H,AL;------------------------------------------------------------LPST:INAL,0D4H;读端口C的值

ANDAL,04HJNZLPST;若不为0,说明忙信号(PC2)为1,即打印机处于忙状态,等待MOVAL,CLOUT0D0H,AL;否则,把CL中字符经端口A送打印机

MOVAL,0CHOUT0D6H,AL;使STB为0INCALOUT0D6H,AL;再使STB为1,得一个负脉冲输出;------------------------------------------------------------

;后续程序段8.2可编程定时/计数器8253及其应用

在8086/8088系统中采用的定时器/计数器是Intel8253,它是一片具有3个独立的16位计数器通道的可编程定时器/计数器芯片,为24脚双列直插式大规模集成电路,使用单+5伏电源。8.2.18253的基本功能及用途

1.8253芯片的主要特点(1)有3个独立的16位计数器;(2)每个计数器可按二进制或二~十进制计数;(3)每个计数器的计数频率可高达2.6MHz;(4)每个计数器都可以由程序确定按照6种不同方式工作;

2.8253的用途(1)在多任务的分时系统中作为中断信号实现程序切换;(2)可为I/O设备输出精确的定时信号;(3)可作为一个可编程的波特率发生器;(4)实现时间延迟。8253引脚特性

8.2.28253内部结构及工作原理1.数据总线缓冲器这是8253用于和CPU数据总线连接的8位双向三态缓冲器。2.读/写逻辑电路

定时器/计数器的基本原理图定时器/计数器的基本原理图

3.控制寄存器4.计数器0,1和2

这三个计数器互相独立,各自按不同的方式工作,其工作方式决定于控制字。8.2.38253的控制字

8253的控制字格式8.2.48253的工作方式

8253共有以下6种工作方式。

1.方式0——计数结束产生中断方式0的工作特点:(1)计数器只计一次。当计数器减至0后,不重新计数,输出OUT保持为高。(2)8253内部是在CPU写计数初值的WR信号上升沿将此值写入计数器的,但必须在有WR信号下一个时钟脉冲到来时,计数初值才送至计数执行部件。(3)门控GATE可以暂停计数器的计数过程。(4)计数过程中,如果有新的计数初值送至计数器,则在下一时钟脉冲到来时,新的初值送至计数执行部件。此后,计数器按新的初值重新计数。例8:设8253计数器0工作于方式0,用8位二进制计数,计数值为9(设该8253在系统中分配的地址为E0H~E3H),试写出其初始化程序段。解:8253的初始化编程包含两个方面的设置:(1)将控制字写入控制寄存器,以设置相应的计数器工作在预定的方式下;(2)写入计数初值。当计数初值写入后,8253的计数器0开始工作。初始化程序段如下:MOVAL,10H;设计数器0工作于方式0OUT0E3H,AL;写入控制寄存器;-------------------------------------------------MOVAL,9;设计数初值OUT0E0H,AL;初值写入计数器0的CR2.方式1—可重复触发的单稳态触发器

方式1的时序图例8:设计数器1工作于方式1,按BCD码计数,计数值为十进制数4000。设8253的端口地址为E0H~E3H。试写其初始化程序段。解:根据题意,控制字为63H,初始值为4000,因为控制字已经设定是按BCD码计数,所以初始值写入时直接写入4000H即可。另外,虽然是16位计数初始值,但由于计数值低8位为0,所以控制字设定操作控制段只写高8位格式,因此只设置CR高位初值,而CR低8位自动清0。初始化程序段为:MOVAL,63H;设控制字OUT0E3H,AL;---------------------------------------------------MOVAL,40H;设初值4000HMOV0E1H,AL

3.方式2——分频器当设置8253为方式2时,输出端OUT变高作为初始状态,计数初值N置入后的下一个CLK脉冲到来时计数执行部件CE开始减1计数,当减至“1”(注意,不是“0”),OUT变低,持续一个CLK脉冲后,OUT又变为高电平,开始一个新的计数过程。在新的初值置入前,保持每N个CLK脉冲OUT输出重复一次,即OUT输出波形为CLK脉冲的N分频。例:设8253计数器2工作于方式2,按二进制计数,计数初值为0304H,设8253端口地址为E0H~E3H。试编写初始化程序段。解:因为计数初值为十六位。且高低位字节均不为0值。因此,必须写两次,先写低位字节,再写高位字节。初始化程序段:MOVAL,0B4H;设控制字OUT0E3H,AL;----------------------------------------------------------MOVAL,04H;设置计数器2的低字节OUT0E2H,AL;----------------------------------------------------------MOVAL,03H;设置计数器2的高字节OUTOE2H,AL

4.方式3——可编程方波发生器方式3与方式2的工作类似,不同的是OUT的输出为方波或基本对称的矩形波。例:设8253计数器0工作于方式3,按二进制计数,计数初值为4。8253端口地址为E0H~E3H。试写出其初始化程序段。解:初始化程序段如下:MOVAL,16H;设计数器0工作于方式3OUT0E3H,AL;设置控制字;---------------------------------------------------MOVAL,4;设置计数初值OUT0E0H,AL

5.方式4——软件触发的选通信号发生器在方式4下,当方式控制字写入后,输出端OUT变高,作为初始电平。写入初始值后,再过一个时钟周期,计数执行部件获得计数初值,开始减1计数。当计数器减至“0”时,输出变为低电平,此低电平持续一个CLK时钟周期,然后又自动变高,并一直维持高。例:设8253计数器1工作于方式4,按二进制计数,计数初值为3。端口地址为E0H~E3H。试编写初始化程序段。解:初始化程序段为:MOVAL,58H;设控制字OUT0E3H,AL;---------------------------------------------------MOVAL,3;设置计数初值OUT0E1H,AL6.方式5——硬件触发的选通信号发生器方式5与方式1十分相似也是一种由GATE端引入的触发信号控制的计数或定时工作方式。但方式5输出是负选通脉冲。例:设8253的计数器2工作与方式5,按二进制计数,计数初值为3。端口地址为E0H~E3H。其初始化程序段为:MOVAL,9AH;设置控制字OUT0E3H,AL;----------------------------------------------------------MOVAL,3;设置计数初值OUT0E2H,AL8.2.58253在IBM-PC机的应用例:设在IBMPC机扩展板上有一8253定时器,其端口地址为200H~203H。它的CLK0与4.77MHz的系统时钟相连,定时器1的时钟输入CLK1与定时器0的输出OUT0相连。要求编程将定时器0设为方式3(方波发生器),其分频比为2000H;定时器1设为方式2(分频器),分频比为15,并用双踪示波器观测定时器0和定时器1的输出波形。解:由题可知,8253的控制端口地址为203H,定时器0端口地址为200H,定时器1端口地址为201H。8253作为定时器硬件连接图

程序流程图

程序段如下:DATASEGMENT;数据段TIM_CTLEQU203H;控制字寄存器端口地址TIMER0EQU200H;定时器0端口地址TIMER1EQU201H;定时器1端口地址DATAENDSCODESEGMENT;代码段

ASSUMECS:CODE,DS:DATAMAINPROCFAR;---------------------------------------------------------START:CLI;关中断

MOVDX,TIM_CTL;设置定时器0为工作方式3,计数初值只有高8MOVAL,26H;位,二进制计数

OUTDX,AL

MOVDX,TIMER0;定时器0端口地址

MOVAL,20H;设置定时器0计数器初值高8位

OUTDX,ALMOVDX,TIM_CTL;设置定时器1为工作方式2,计数初值只写低8MOVAL,54H;位,二进制计数

OUTDX,ALMOVDX,TIMER1;往定时器1送计数初值低8位0FH,高8位自动0MOVAL,0FHOUTDX,ALSTI;开中断

RET;返回DOSMAINENDPCODEENDSENDSTART例:已知PC微机系统板上8253-5接口电路如图。图中的PCLK是来自时钟发生器8248A的输出时钟,频率为2.38MHz,经74LS175二分频后,作为8253-5的3个计数器的时钟输入。8253-5的3个计数器的使用情况如下:(1)计数器0:方式3,二进制计数,GATE0固定接高电平,OUT0作为中断请求信号接至8259A中断控制器的IRQ0。此定时中断(约55ms)用于系统电子钟和磁盘驱动器的马达定时。(2)计数器1:方式2,GATE1固定接高电平,OUT1输出经74LS74后作为DMA控制器8237A通道0的DMA服务请求信号DREQ0,用于定时(约15μs)启动刷新动态RAM。(3)计数器2:方式3,输出的1kHz方波滤掉高频分量后送到扬声器。门控信号GATE2来自8255A的PB0,OUT2输出经与门74LS06控制,控制信号为8255A的PB1。可通过控制PB1,PB0同时为1来控制扬声器发声时间。长音时间为3s,短音时间为0.5s。IBM-PC系统板中8253-5的接口电路解:该8253-5的端口地址为40H~43H,3个计数器对应的初始化程序段分别如下(这些程序段已固化在ROM-BIOS中):(1)计数器0用于定时(约55ms)中断。MOVAL,00110110B;16位二进制计数,方式3OUT43H,AL;----------------------------------------------------------MOVAL,0;初值为0000,即为最大值OUT40H,AL;OUT两次变“高”之间的间隔OUT40H,AL;为840ns*65536=55ms

(2)计数器1用于定时(约15μs)DMA请求。MOVAL,01010100B;只装低8位,8位计数器,方式2OUT43H,AL;----------------------------------------------------------MOVAL,12H;初值18,OUT两次变高之间的间隔为OUT41H,AL;840ns*18=15μs,2ms内可刷新132次

(3)计数器2用于产生1KHz的方波送至扬声器发声,声响子程序为BEEP,入口地址为FFA08H。BEEPPROCNEARMOVAL,10110110B;16位二进制计数器,方式3OUT43H,AL;-----------------------------------------------------------------------MOVAX,0533H;初值为1331OUT42H,AL;先写低字节

MOVAL,AH;再写高字节

OUT42H,AL;-----------------------------------------------------------------------INAL,61H;读8255的B口原输出值

MOVAH,AL;存于AHORAL,03H;使PB1,PB0均为1OUT61H,AL;-------------------------------------------------------------SUBCX,CX;CX为循环计数,最大65536GT:LOOPGT;循环延时

DECBL;BL为发声长短的入口条件

JNZGT;BL=6发长声,BL=1发短声;-------------------------------------------------------------MOVAL,AH;取回AH中的8255A的B口输出值

OUT61H,AL;恢复8255A的B口,停止发声

RET;返回例:欲使8253-5的计数器产生600Hz的方波,经滤波后送至扬声器发音,当按下任一键时声音停止。试编写此程序。解:利用上述方法,编制的源程序如下:STACKSEGMENTPARASTACK‘STACK’DB256DUP(0)STACKENDSDATASEGMENTPARAPUBLIC‘DATA’FREDDW1983DATAENDS;----------------------------------------------------------------------CODESEGMENTPARAPUBLIC‘CODE’ASSUMECS:CODE,DS:DATA;----------------------------------------------------------------------STARTPROCFARPUSHDS;初始化

MOVAX,0PUSHAXMOVAX,DATAMOVDS,AX;----------------------------------------------------------------------INAL,61H;读PB口当前状态

ORAL,03H;使PB1,PB0均为1OUT61H,AL;写新PB口值,以使扬声器发声;----------------------------------------------------------------------MOVAL,0B6H;命令8253计数器2,16位写入,方式3,二进制

OUT43H,AL;命令写入8253控制寄存器;----------------------------------------------------------------------MOVBX,FRED;分频计数值

MOVAL,BL;先写低位字节

OUT42H,ALMOVAL,BH;再写高位字节

OUT42H,AL;8253-5输出600Hz方波;-----------------------------------------------------------MOVAH,0;调用BIOS的键盘I/O功能程序

INT16H;等待按入键值;---------------------------------------------------------INAL,61H;读PB口当前状态

ANDAL,0FCH;使PB1,PB0均为0OUT61H,AL;扬声器停止工作;---------------------------------------------------------RET;结束,返回DOSSTARTENDPCODEENDSENDSTART8.3可编程串行接口8250及其应用8.3.1串行通信的基本概念可编程串行接口的典型结构

1.串行接口的典型结构(1)数据总线收发器是并行的双向数据通道,负责将CPU送来的并行数据传送给串行接口,并将串行接口接收的外设数据送给CPU。(2)联络信号逻辑用于完成CPU与串行接口之间信息的联系。(3)控制总线CB(ControlBus)。它是串行接口与外设之间进行数传所必须的各种控制信息的通路。(4)串入/串出是串行接口与外设之间的数传通道,均为串行方式。(5)发送时钟和接收时钟是串行通信中数据传送的同步信号。(6)状态寄存器SR用来指示传送过程中可能发生的某种错误或当前的传输状态。

(7)控制寄存器CR接收来自CPU的各种控制信息,这些信息是由CPU执行初始化程序得到的,包括传输方式、数据格式等等。(8)数据输入寄存器DIR(DataInputRegister)与串入/并出移位寄存器相连。串入/并出移位寄存器完成串/并转换。(9)数据输出寄存器DOR(DataOutputRegister)与并入/串出移位寄存器相连。并入/串出移位寄存器的操作与串入/并出相反,完成并/串转换。(10)CS和A0。串行接口的各种操作是否有效,取决于CS,即片选信号;片选信号低有效时,当前对串口中哪个部件进行操作则取决于地址线A0和读/写信号。通常信号由CPU通过地址译码逻辑控制,而A0直接与CPU的地址线A0相连。2.串行通信的连接方式串行通信有单工(Simplex)、半双工(Half-Duplex)和全双工(Full-Duplex)3种连接方式。(1)单工方式(2)半双工方式(3)全双工方式串行通信的3种连接示意图8.3.2串行标准接口总线RS-232C

RS-232C采用负逻辑:空号(Space)和控制、状态信号的逻辑“0”对应于电平+3V~+25V;传号(Mark)和控制、状态信号的逻辑“1”对应于电平-3V~-25V。RS-232C标准规定了22条控制信号线,用25芯DB插座连接。8.3.3串行异步通信接口8250初始化编程和串行I/O控制程序

1.8250的主要功能

8250能实现数据串/并或并/串转换,支持异步通信规程,片内有时钟产生电路,波特率可变。它可为应用于远程通信系统中的调制解调器提供控制信号,接受并记录由调制解调器发送给CPU的状态信息。它还具有数据回送功能,为调试检测提供了方便。

2.8250的内部结构

3.8250的40引脚:8250有40条引脚中29脚未用,40脚为+5V电源输入,20脚为地,其余37条引脚分成4组。

4.8250内部寄存器及其寻址8250有10个可访问的寄存器,它们的地址由A2~A0这3条地址线的8种组合决定,因此有几个寄存器共用一个地址的情况。5.8250的控制字8250内部有多个寄存器,分为两组。一组用于工作方式以及通信参数的控制和设置。属于这一组的有波特率分频次数锁存器、传输线控制寄存器、Modem控制寄存器和中断允许寄存器。另一组寄存器用于实现通信传输,包括发送、接收缓冲寄存器、传输线状态寄存器和中断识别寄存器。(1)波特率因子寄存器为了设置波特率因子,必须先把传输线控制寄存器的DLAB置为1,然后分别将高、低字节的值送入对应的分频器中。(2)传输线控制寄存器LCR传输线控制寄存器LCR的控制字位功能(3)调制解调器控制寄存器MCR

Modem控制寄存器MCR控制字的位功能图(4)中断允许寄存器IER

中断允许寄存器IER控制字的位功能6.用8250进行通信(1)查询传输线状态寄存器LSR 如果要发送一个数据,必须首先读LSR并检查D5位,若为1,则表示发送数据缓冲器空,可以接收CPU新送来的数据。数据输入到8250后LSR的D5位将自动清0,表示缓冲

器已满,该状态一直持续到数据发送完毕、发送数据缓冲器变空为止。传输线状态寄存器LSR状态字的格式(2)查询Modem状态寄存器MSR

MSR主要用于在有Modem的系统中了解Modem的状态。Modem状态寄存器MSR状态字的格式(3)查询中断识别寄存器IIR

注意,通常查询中断识别寄存器是在有多个中断源的系统中才有用。8.3.48250在PC机的应用和仿终端程序例:已知在一台IBM-PC机的0号扩展槽内,插了一块以8250为核心的异步串行通信适配卡。试编写一程序,利用8250的循环回送特性,将IBM-PC作为发送和接收机,从键盘输入内容,经接收后在CRT上显示出来。设:数据传输速率为1200波特,通信格式为7位/字符,一个停止位、奇校验,数据发送和接收均采用查询方式;程序为循环结构,只要按下键,就显示。①流程图:程序流程图②程序:STACKSEGMENTPARASTACK‘STACK’DB256DUP(0)STACKENDSCODESEGMENTPARAPUBLIC‘CODE’;--------------------------------------------------------------------STARTPROCFARUSHDS;保存PSP段地址

XORAX,AXPUSHAX;-------------------------------------------------------------------;PART1:初始化8250为7位数据位,1位停止位,奇校验,波特率1200,并;设定为内部连接方式

MOVDX,3FBHMOVAL,80HOUTDX,AL;设传输线控制寄存器D7为1;--------------------------------------------------------------------MOVDX,3F8H;设波特率为1200MOVAL,60HOUTDX,AL

MOVDX,3F9HMOVAL,0OUTDX,AL;----------------------------------------------------------------------MOVDX,3FBH;设奇校验,1位停止位,7位数据位

MOVAL,0AHOUTDX,AL;---------------------------------------------------------------------MOVDX,3FCH;设Modem控制寄存器;发DTR(___)和RTS(___)MOVAL,13H;信号,内部输出输入反馈,中断禁止

OUTDX,AL;--------------------------------------------------------------------MOVDX,3F9H;设中断允许寄存器为0,

MOVAL,0;使4种中断被屏蔽

OUTDX,AL;---------------------------------------------------------------------;以上为初始化阶段;PART2:把接收到的字符显示出来,把键盘输入的发送出去;--------------------------------------------------------------------FOREVER:MOVDX,3FDH;输入线状态寄存器内容,

INAL,DX;测接收是否出错

TESTAL,1EHJNZERROR;--------------------------------------------------------------------

温馨提示

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

评论

0/150

提交评论