微机原理课程设计报告书.doc_第1页
微机原理课程设计报告书.doc_第2页
微机原理课程设计报告书.doc_第3页
微机原理课程设计报告书.doc_第4页
微机原理课程设计报告书.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

课程名称: 微机接口技术 姓名: 邓 有 强 学号: 092113010005 院系部: 职业技术学院 专业: 计算机应用技术 指导教师: 马 慧 2010年12月31日前 言微机原理与接口技术是计算机应用专业必修的一门课程,通过这门课我们能够知道计算机内部的工作原理,各部件的作用;各部件间的联系;学习了汇编语言和指令系统能让我们进行简单的程序设计;但是我们在课堂上学习的都是些理论方面的知识,没有进行过真正的实际接触。正所谓,“实践是检验真理的唯一标准”,只有通过真正的接触,实际的操作,我们才能将理论知识和实际应用联系在一起,真正的将理论实际化;这才将学院的职业教育与我们的课程紧密的联系在一起,符合我们专科层次的教学目标。因此,学校组织我们进行了为期两个星期的课程设计,让我们能够有机会接触真正的硬件,这不仅丰富巩固了我们在课堂上学的知识,而且还为我们日后步入社会打下了基础。本次课程设计我们小组设计的是双机的串行通信,本书中包含了此实验硬件方面的电路接线情况,硬件实现代码和软件实现的代码;总结成书,日后自己真正走上工作岗位时回关看看也是一段美好的回忆目 录一、设计目的4二、设计题目及要求4三、电路及连线设计41、8251A的基本性能42、8251A的内部结构53、实验接线图64、实践操作接线图6四、使用说明91、硬件操作过程92、软件操作过程9五、流程图设计14六、程序设计如下151、硬件实现代码152、软件实现代码19七、总结25一、 设计任务及要求:设计一个双机串行通信系统,用软件编程和硬件实验来实现。具体要求:1) 用二台8086K通过8251进行双机通讯,一台作为发送,另一台作为接收,发送方读入按键值,并发送给接收方,接收方收到数数据后在数码管上显示。2) 8251A的发送/接收时钟信号由8253分频提供,波特率可选择9600或其他;数码管和LED分别通过8255A接入。3) 硬件操作用DICE-8086K微机接口原理实验器材来实现;软件操作可用汇编语言、VB、C语言等来实现。4) 采用中断法方案实现。指导教师签名: 年 月 日 二、 指导教师评语:指导教师签名: 年 月 日 三、 成绩:验收盖章: 年 月 日 一、 设计目的1. 了解串行通讯的一般原理和8251A的工作原理。2. 初步了解RS232串行接口标准及TTL电路的连接方法。3. 掌握825lA编程方法。4. 通过课程设计加深理解课堂教学内容,掌握计算机接口技术的基本应用方法。5. 掌握常用接口电路的设计,掌握8255A、8253、8259A、8251A、ADC0809等接口芯片的应用和编程方法,做到理论联系实际。二、 设计题目及要求1. 课题名称:双机串行通信系统设计2. 课题要求:设计一个双机串行通信系统,用软件编程和硬件实验来实现。具体要求:1) 用二台8086K通过8251进行双机通讯,一台作为发送,另一台作为接收,发送方读入按键值,并发送给接收方,接收方收到数数据后在数码管上显示。2) 8251A的发送/接收时钟信号由8253分频提供,波特率可选择9600(供参考)或其他;数码管和LED分别通过8255A接入。3) 硬件操作用DICE-8086K微机接口原理实验器材来实现;软件操作可用汇编语言、VB、C语言等来实现。4) 采用中断法方案实现。3. 分组情况8人1组(自由搭配)4. 任务分配硬件代码:(李旭东、邓有强)软件实现:(谭开群、张於)流 程 图:(施章玲 、詹沙丽)硬件操作:(李益宇、吴江华)报告设计:(杨巍巍)三、 电路及连线设计1、 8251A的基本性能 8251A是可编程的串行通信接口芯片,基本性能:1) 两种工作方式:同步方式,异步方式。同步方式下,波特率为0.64K,异步方式下,波特率为019.2K。2) 同步方式下的格式每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。3) 异步方式下的格式每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。4) 全双工的工作方式其内部提供具有双缓冲器的发送器和接收器。5) 提供出错检测具有奇偶、溢出和帧错误三种校验电路。2、 8251A的内部结构1) 发送器发送器由发送缓冲器和发送控制电路两部分组成。采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据。2) 接收器接收器由接收缓冲器和接收控制电路两部分组成。接收移位寄存器从RXD引腿上接收串行数据转换成并行数据后存入接收缓冲器。3) 数据总线缓冲器数据总线缓冲器是CPU与8251A之间的数据接口。包含3个8位的缓冲寄存器:两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。一个寄存器用来存放CPU向8251A写入的数据或控制。8251A的各引脚功能及其硬件编程方式选择控制字、操作命令控制字和状态字由于大家已经相当熟悉,此处就不再赘余。3、 实验接线图电路图说明:1) TxC和RxC分别为8251A的发送时钟和接收时钟,由片外8253的OUT1 提供。2) 8251片选信号825l CS接译码输ntu出3F8H-3FFH(系统上已连接)。3) CTS 端必须接低电平(已接好),825lA才可向外发送数据,其它回答信号RTS、DTR、DSR不用。4) RxRDY、TxRDY为允许接收和允许发送信号,由于在本系统中使用查询方式进行通讯,这两个信号线不用,中断方式时,这两个信号分别作发送/接收时的中断申请信号。4、 实践操作接线图1) 两机接线图2) 二号机设置图3) 一号机设置图4) 双机通讯图5) 按下“MON”一号机显示“Good” 四、使用说明1、 硬件操作过程1) 准备2台8086K实验机,确定l号机为发送,2号机为接收。2) 连接:CLK11.8432M,GATE15V,OUT1T/RXC,JX0JX20。 1号机和2号机的RXD、TXD交叉相连,且两机共地。3) 先运行2号机,在2号机处于命令提示符“P.”状态下,按SCAL键,再输入13F0,按EXEC键,即进入等待接收状态,显示器显示825l-2。4) 注意:串行接收实验的有关内容详见实验九。5) 再运行1号机,在l号机处于命令提示符“P.”状态下,按SCAL键,再输入1510,按EXEC键,即可进入串行发送状态,显示器显示8251-1。6) 在l号机键盘上按动数字键,在2号机的显示器上应显示对应数字键值。当1号机上按“MON”键时,1号机即显示good,此时可按RST键退出。2、 软件操作过程操作步骤:1) 准备2台8086K实验机,确定l号机为发送,2号机为接收。2) 连接:CLK11.8432M,GATE15V,OUT1T/RXC,JX0JX20。 1号机和2号机的RXD、TXD交叉相连,且两机共地。3) 先运行2号机,在2号机处于命令提示符“P.”状态下,按SCAL键,再输入13F0,按EXEC键,即进入等待接收状态,显示器显示825l-2。4) 注意:串行接收实验的有关内容详见实验九。5) 再运行1号机,在l号机处于命令提示符“P.”状态下,按SCAL键,再输入1510,按EXEC键,即可进入串行发送状态,显示器显示8251-1。6) 在l号机键盘上按动数字键,在2号机的显示器上应显示对应数字键值。当1号机上按“MON”键时,1号机即显示good,此时可按RST键退出。操作过程中的界面图如下: 1)、初始状态界面2)、二号机和一号的设置界面3)、双机通讯界面五、流程图设计六、程序设计如下1、硬件实现代码CODE SEGMENT ;H8251T.ASM ASSUME CS:CODESECOPORT EQU 03F9HSEDAPORT EQU 03F8HPA EQU 0FF21H ;字位口PB EQU 0FF22H ;字形口PC EQU 0FF23H ;键入口WATTXD: MOV DX,SECOPORT IN AL,DX TEST AL,01H JZ WATTXD MOV AL,KZ MOV DX,SEDAPORT OUT DX,AL WATRXD: MOV DX,SECOPORT IN AL,DX TEST AL,02H JZ WATRXD MOV DX,SEDAPORT IN AL,DX CMP KZ,AL JZ seri2 CALL BUF3 ;DISP:err sererr: CALL DISP JMP sererr seri2: mov cx,0018h ser3: push cx call disp pop cx loop ser3 jmp redikey funckey: CMP KZ,1FH JNZ REDIKEY call buf2 ;good monit: CALL DISP JMP monit dispkey: call disp call key mov ah,al ;newkey mov bl,ltime ;ltime mov bh,lkey ;lkey mov al,01h mov dx,0ff21h out dx,al cmp ah,bh mov bh,ah ;bh=new key mov ah,bl ;al=time jz disk4 mov bl,88h mov ah,88h disk4: dec ah cmp ah,82h jz disk6 cmp ah,0eh jz disk6 cmp ah,00h jz disk5 mov ah,20h dec bl jmp disk7key: mov al,0ffh mov dx,0ff22h out dx,al mov bl,00h mov ah,0feh mov cx,08hkey1: mov al,ah mov dx,0ff21h out dx,al rol al,01h mov ah,al nop nop nop nop nop nop mov dx,0ff23h in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1 jmp nkeykey2 : test al,01h je key3 mov al,00h jmp key6key3: test al,02h je key4 mov al,08h jmp key6key4: test al,04h je key5 mov al,10h jmp key6key5: test al,08h je nkey mov al,18hkey6: add al,bl cmp al,10h jnc fkey mov bl,al mov bh,0h mov si,offset data2 mov al,bx+si retCODE SEGMENT ;H8251R.ASM ASSUME CS:CODEfor8251: call t8253 mov al,65h out dx,al mov dx,03f9h mov al,25h out dx,al mov dx,03f9h mov al,65h out dx,al mov dx,03f9h mov al,4eh out dx,al mov dx,03f9h mov al,25h out dx,al retT8253: MOV DX,43H MOV AL,76H out dx,al MOV DX,41H MOV AL,0CH out dx,al MOV DX,41H MOV AL,00H out dx,al mov dx,03F9H mov dx,03f9h RETBUF1: MOV BUF,08HMOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,01HMOV BUF+4,17HMOV BUF+5,02H RETcode ends END START2、软件实现代码Dim a As IntegerDim b As Integer Private Sub Command1_Click(Index As Integer) Timer1.Enabled = False Timer2.Enabled = False Static str As StringIf Label1(0).Caption = 8 And Label1(1).Caption = 2 And Label1(2).Caption = 5 And Label1(3).Caption = 1 And Label1(4).Caption = - And Label1(5).Caption = 1 And Label1(6).Caption = 8 And Label1(7).Caption = 2 And Label1(8).Caption = 5 And Label1(9).Caption = 1 And Label1(10).Caption = - And Label1(11).Caption = 2 Then For i = 0 To 11 Label1(i).Caption = Next i Label1(6).Caption = Command1(Index).CaptionElseIf Label1(6).Caption = str Then Label1(6).Caption = Command1(Index).CaptionElse Label1(a Mod 6).Caption = Command1(Index).Caption a = a + 1End If str = Command1(Index).CaptionEnd Sub Private Sub Command10_Click()Timer4.Enabled = TrueTimer5.Enabled = FalseTimer6.Enabled = FalseFor i = 7 To 11 Label1(i).Caption = Next iLabel1(6).Caption = P.For j = 0 To 15 Command3(j).Enabled = TrueNext jEnd Sub Private Sub Command11_Click()For j = 0 To 5Command2(j).Enabled = FalseNext jIf Command11.Caption = 开机 Then Command11.Caption = 关机 Frame1.Enabled = True Timer1.Enabled = TrueElseIf Command11.Caption = 关机 Then Command11.Caption = 开机 Frame1.Enabled = False Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False For i = 0 To 5 Label1(i).Caption = Next iEnd IfEnd Sub Private Sub Command12_Click()For j = 0 To 5Command4(j).Enabled = FalseNext jIf Command12.Caption = 开机 ThenCommand12.Caption = 关机 Frame2.Enabled = True Timer4.Enabled = TrueElseIf Command12.Caption = 关机 Then Command12.Caption = 开机 Frame2.Enabled = False Timer4.Enabled = False Timer5.Enabled = False Timer6.Enabled = False For i = 6 To 11 Label1(i).Caption = Next iEnd IfEnd Sub Private Sub Command2_Click(Index As Integer)For i = 6 To 11Label1(i).Caption = Next iLabel1(0).Caption = gLabel1(1).Caption = oLabel1(2).Caption = oLabel1(3).Caption = dLabel1(4).Caption = Label1(5).Caption = End Sub Private Sub Command3_Click(Index As Integer)Timer1.Enabled = FalseTimer2.Enabled = FalseLabel1(b Mod 6 + 6).Caption = Command3(Index).Captionb = b + 1End Sub Private Sub Command5_Click()counter = 0a = 0Timer1.Enabled = FalseTimer2.Enabled = TrueTimer3.Enabled = FalseLabel1(0).Caption = - Label1(1).Caption = - For i = 2 To 5 Label1(i).Caption = Next iEnd Sub Private Sub Command6_Click()If Label1(0).Caption = 1 And Label1(1).Caption = 3 And Label1(2).Caption = F And Label1(3).Caption = 0 And Label1(4).Caption = And Label1(5).Caption = ThenLabel1(0).Caption = 8Label1(1).Caption = 2Label1(2).Caption = 5Label1(3).Caption = 1Label1(4).Caption = - Label1(5).Caption = 1End IfEnd Sub Private Sub Command7_Click()If Label1(6).Caption = 1 And Label1(7).Caption = 5 And Label1(8).Caption = 1 And Label1(9).Caption = 0 And Label1(10).Caption = And Label1(11).Caption = ThenLabel1(6).Caption = 8: Label1(7).Caption = 2Label1(8).Caption = 5: Label1(9).Caption = 1Label1(10).Caption = - : Label1(11).Caption = 2End IfEnd Sub Private Sub Command8_Click()counter1 = 0b = 0Timer4.Enabled = FalseTimer5.Enabled = TrueTimer6.Enabled = FalseLabel1(6).Caption = - Label1(7).Caption = - For i = 8 To 11 Label1(i).Caption = Next iEnd Sub Private Sub Command9_Click()Timer1.Enabled = TrueTimer2.Enabled = FalseTimer3.Enabled = FalseFor i = 1 To 5 Label1(i).Caption = Next iLabel1(0).Caption = P.For j = 0 To 15Command1(j).Enabled = TrueNext jEnd Sub Private Sub Form_Load() Frame1.Enabled = False Frame2.Enabled = False End Sub Private Sub Timer1_Timer() If Label1(0).Caption = Then Label1(0).Caption = P. ElseIf Label1(0).Caption = P. Then Label1(0).Caption = End IfEnd Sub Private Sub Timer2_Timer()If Label1(0).Caption = - And Label1(1).Caption = - Then Label1(0).Caption = : Label1(1).Caption = ElseIf Label1(0).Caption = And Label1(1).Caption = Then Label1(0).Caption = - : Label1(1).Caption = - End IfFor j = 0 To 15Command1(j).Enabled = FalseNext jStatic counter As Integer counter = counter + 1 If counter = 14 Then Timer1.Enabled = True Timer2.Enabled = False For i = 0 To 5 Label1(i).Caption = Next i Label1(0).Caption = P. For j = 0 To 15 Command1(j).Enabled = True Next j End IfEnd Sub Private Sub Timer3_Timer()Label1(0).Caption = - Label1(1).Caption = - For Index = 0 To 15 Command1(Index).Enabled = FalseNext IndexEnd Sub Private Sub Timer4_Timer()If Label1(6).Caption = Then Label1(6).Caption = P.ElseIf Label1(6).Caption = P. Then Label1(6).Caption = End IfEnd Sub Private Sub Timer5_Timer()If Label1(6).Caption = - And Label1(7).Caption = - Then Label1(6).Caption = : Label1(7).Caption = ElseIf Label1(6).Caption = And Label1(7).Caption = Then Label1(6).Caption = - : Label1(7).Caption = - End IfFor i = 0 To 15 Command3(i).Enabled = FalseNext iStatic counter1 As Integercounter1 = counter1 + 1 If counter1 = 14 Then Label1(6).Caption = P. Timer4.Enabled = True Timer5.Enabled = False For i = 6 To 11 Label1(i).Caption = Next i For i = 0 To 15 Command3(i).Enabled = True Next i End IfEnd Sub Private Sub Timer7_Timer()If Label1(0).Caption = 8 And Label1(1).Caption = 2 And Label1(2).Caption = 5 And Label1(3).Caption = 1 And Label1(4).Caption = - And Label1(5).Caption = 1 And Label1(6).Caption = 8 And Label1(7).Caption = 2 And Label1(8).Caption = 5 And Label1(9).Caption = 1 And Label1(10).Caption = - And Label1(11).Caption = 2 ThenCommand2(1).Enabled = TrueTimer7.Enabled = FalseEnd IfEnd Sub七、总结本学期微机原理课程即将结束,关于微机课程的心得体会甚多。初学微机原理时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。微机原理课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。三者之间的关系如下图。微处理器、微型计算机和微型计算机系统在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。比如,最近闹得沸沸扬扬的珊瑚虫一案,其软件制作的核心人物就是使用汇编语言来创造闻名遐尔的QQ查IP软件珊瑚虫,并成立了有名的珊瑚虫工作室,其威力可见一斑。然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,还学习了可编程的计数/定时的8253,可编程的外围接口芯片8255A等。学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。我认为,在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。从微机应用系统的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能力才是最终目的!邓有强2010-12-31袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅

温馨提示

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

评论

0/150

提交评论