第4章-80C51单片机指ppt课件(全)_第1页
第4章-80C51单片机指ppt课件(全)_第2页
第4章-80C51单片机指ppt课件(全)_第3页
第4章-80C51单片机指ppt课件(全)_第4页
第4章-80C51单片机指ppt课件(全)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第4章80C51单片机指令系统上海电子信息职业技术学院何永艳主编4.1位及位操作指令图2.1用单片机控制单个LED的电路原理图接在P1.0上的二极管要么亮,要么不亮,只有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。二极管的亮和灭只是一种物理现象,可告诉单片机时,二极管的亮和灭就代表数字了。实际上这就是一个二进制位,因此把一根线(P1.0)称之为一“位”,用BIT表示。4.1.1位寻址区位地址:00H—7FH分布在:20H—2FH单元这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置1、清0或判1、判0等,可用作软件标志位或用于位(布尔)处理。这是一般微机所不具备的,这种位寻址能力是8051所独有的。20H~2FH:既可以字节操作,又可以位操作,但是要用不同的指令来区分;位地址3AH的另一种表达形式为27H.2

mov20h,a setb00h setb20.04.1.2可以位寻址的特殊功能寄存器80C51中有一些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除,1.累加器ACC(E0H)

累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,许多指令的操作数取自于ACC,许多运算结果也存放于ACC中。在指令系统中采用A作为累加器ACC的助记符。2.寄存器B(F0H)在乘、除指令中,用到了8位B寄存器。乘法指令的两个操作数分别取自A和B,乘积存于B、A两个8位寄存器中。除法指令中,A中存放被除数,B中放除数,商存放于A中,B中存放余数。在其它指令中,B可作为一般通用寄存器或一个RAM单元使用3.程序状态寄存器PSW(D0H)PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供程序查询或判别之用。1)CY(PSW.7)进位标志位。2)AC(PSW.6)半进位标志位,也称辅助进位标志。3)F0、F1(PSW.5,PSW.1)用户标志位。4)RSO和RSl(PSW.4和PSW.5)工作寄存器组选择控制位。5)OV(PSW.2)溢出标志位。6)P(PSW.0)奇偶检验标志位。4.1.3

位操作指令1.位传送指令 MOVC,BIT MOVBIT,C 这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。 如: MOVP1.0,CY;将CY中的状态送到P1.0引脚上去(如果是做算术运算,就可以通过观察知道现在CY是多少)。MOVCY,P1.0;将P1.0的状态送给CY。2.位修正指令1)位清0指令 CLRC;使CY=0 CLRbit;使指令的位地址等于0。 如:CLRP1.0;即使P1.0变为02)位置1指令 SETBC;使CY=1 SETBbit;使指定的位地址等于1。 如:SETBP1.0;使P.0变为13)位取反指令 CPLC;使CY等于原来的相反的值,由1变为0,由0变为1。 CPLbit;使指定位的值等于原来相反的值,由0变为1,由1变为0。 如:CPLP1.0;如图2.1所示,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。3.位逻辑运算指令1)位“与”指令 ANLC,bit;CY与指定的位地址的值相与,结果送回CY ANLC,/bit;先将指定的位地址中的值取出后取反,再和CY相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。可用下列程序验证图2.1的程序: ORG0000H AJMPSTART ORG0030HSTART:MOVSP,#5FH ;指出堆栈首地址 MOVP1,#0FFH ;P1口的8位初始状态全为1 SETBC ;C置1 ANLC,/P1.0 ;(C)=0 MOVP1.0,C ;(P1.0)=0,结果应当是P1.0上的灯亮 END2)位“或”指令 ORLC,bit;CY与指定的位地址的值相或,结果送回CY ORLC,/bit;先将指定的位地址中的值取出后取反,再和CY相或,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。4.位条件转移指令1)判CY转移指令 JCrel JNCrel2)判位变量转移指令 JBbit,rel JNBbit,rel3)判位变量且清0转移指令 JBCbit,rel这组指令的功能是分别判进位CY或直接寻址位是1还是0,条件符合则转移;否则继续执行程序。当直接位地址是端口的某一位时,作“读-改-写”操作。一般采用标号来表示待转移的位置。用开关控制LED的电路如图4.1所示。接通电源,LED灭,当开关往上拨时,LED亮,开关往下拨LED即灭。图4.1用开关控制LED的电路原理图4.1.4用开关控制LED源程序文件如下: ORG0040H;该源程序从0040H地址开始存放。 SETBP1.7;P1.7作为输入口,应先写入“1”。L2:JBP1.7,L1;判P1.7等于“1”即开关往上拨了吗?是的,转向标号为L1的指令执行;否则继续往下执行程序。 CLRP1.0;P1.7等于“0”即开关往下拨时,P1.0等于“0”,即LED灭。 AJMPL2;循环上去再判别P1.7的状态。L1:SETBP1.0;P1.7等于“1”即开关往上拨时,P1.0等于“1”,即LED亮。 AJMPL2;循环上去再判别P1.7的状态。 END;程序结束。4.1.5用位操作指令实现交流电机控制1.用位操作指令实现电机控制的特点程序设计简单:将电气控制图转化为逻辑图,以指令的形式实现。串联使用“ANLC,bit”指令,并联使用“ORLC,bit”指令,类似于PLC的写法。容易除错:所使用的指令少,因而便于除错速度较快:程序较短,占用的字节较少,所有执行速度比较快。效率高:使用的位操作指令采用直接寻址方式,执行效率较高2.电动机起动与停止的基本控制1)控制功能(1)接上电源时,电动机无动作。(2)按下起动按钮SB2时,电动机开始运转。(3)超载时,热继电器FR跳脱,电动机停止运转,此时需将FR复位后,按下按钮SB2才有效图4.2电动机起停电气控制图(4)按下停止按钮SB1时,电动机立刻停止运转(5)输入/输出口的控制2)电气控制图电动机起动与停止的电气控制图如图4.2所示。3)单片机引脚功能分配(1)P1.0:接起动按钮SB2,当按钮按下时P1.0=1(2)P1.1:接停止按钮SB1,当按钮按下时P1.1=0(3)P1.2:接热继电器FR的常闭触点,当电机超载时FR断开,P1.2=0(4)P2.0:接交流接触器KM的线圈,当线圈KM有电时,P2.0=0图4.2电动机起停电气控制图3.程序设计此电气控制图的等效逻辑电路如图4.3所示,源程序如下。 ORG0000H CLRP2.0 ;先把P2.0口初始化为“0”START: MOVC,P1.0 ;暂存输入信号P1.0ORLC,/P2.0 ;P1.0和/P2.0的内容相或,结果暂存C中ANLC,/P1.1 ;或完的结果C与/P1.1相与,结果暂存C中ANLC,/P1.2 ;再次把与完的结果C与/P1.2相与,结果暂存C中MOVP2.0,C ;把最终的结果存放到P2.0AJMPSTART ;不断循环,采集输入信号,及时在P2.0上更新结果END4.2数据传送指令及应用

上一节中让P1.0的LED亮灭,用位操作的方法实现,那能不能在P1口上接8个LED让它们同时亮灭呢。如图4.4所示,如果根据以前所学的知识,8个LED亮,就要用8条位操作指令实现,如表4.3所示。而如果用数据传送指令只需一条即可实现,方便简单很多。图4.48个LED亮灭电路原理图4.2.18个LED亮灭表4.38个LED亮的指令对照表一根线可以表示0和1,两根线可以表达00,01,10,11四种状态,也就是可以表于0到3,而三根可以表达0~7,单片机中通常用8根线(P1.0~P1.7)放在一起,表示一个8位的并行口P1,同时计数,就可以表达0~255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。4.2.2内部RAM数据传送指令MOVP1,#0FFH;指令功能:把数据0FFH送给P1,P1中的值是0FFH,即把111111118位二进制数分别送入到P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.78根线上,也就是让8个LED亮。

传送指令通用格式为:MOV<目的操作数>,<源操作数>1.立即数传送指令(5条)1)8位立即数传送指令MOVA,#data ;data→A,(A)=dataMOVdirect,#data ;data→direct,(direct)=dataMOVRn,#data ;data→Rn,(Rn)=data(n=0~7)MOV@Ri,#data ;data→(Ri),((Ri))=data(i=0~1)说明:箭头左边是要传送的数,箭头右边是送达的目的地。等号左边是地址或寄存器,等号右边是一个具体的数。A,Rn代表寄存器名;direct代表地;()代表寄存器或地址中地内容。(4)((Ri))代表以Ri中的内容为地址,再去找这地址中的数。这4条指令均是立即寻址方式。2)16位立即数传送指令MOVDPTR,#data16;data16→DPTR,(DPTR)=data16 80C51是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的地址数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。如:MOVDPTR,#1234H;则执行完了之后DPH中的值为12H,DPL中的值为34H。反之,如果我们分别向DPH,DPL送数,则结果也一样。如:MOVDPH,#35HMOVDPL,#12H;则就相当于执行了MOVDPTR,#3512H。2.内部RAM单元之间的数据传送指令内部RAM单元之间的数据传送指令共有5条:MOVdirect2,direct1;(direct2)=(direct1),直接寻址方式MOVdirect,Rn ;(direct)=(Rn),寄存器寻址方式MOVRn,direct ;(Rn)=(direct),直接寻址方式MOVdirect,@Ri ;(direct)=((Ri)),寄存器间接寻址方式MOV@Ri,direct ;((Ri))=(direct),直接寻址方式3.通过累加器的数据传送指令 与累加器有关的数据传送指令共有6条:

MOVA,Rn ;(A)=(Rn) MOVRn,A ;(Rn)=(A) MOVA,direct ;(A)=(direct) MOVdirect,A ;(direct)=(A) MOVA,@Ri ;(A)=((Ri)) MOV@Ri,A ;((Ri))=(A) 这6条指令用于实现累加器与不同寻址方式的内部RAM单元之间的数据传送。

4.2.3外部RAM数据传送指令单片机有内部RAM数据传送指令了,为什么还要有外部RAM数据传送指令呢?因为当单片机的内部RAM不够用时,就要扩充RAM空间,而80C51单片机能扩展64K的外部RAM,即从0000H~FFFFH。 那么,CPU是如何区分内外、部RAM的?已知的内部RAM的操作码是MOV,而外部RAM的操作码则是MOVX,CPU就是根据不同的指令来自动区分读写内、外部RAM的。 内部RAM间可以直接进行数据的传递,而外部RAM单元只能使用间接寻址方法,可以分别使用DPTR和Ri作间址寄存器。1.使用Ri进行间接寻址MOVXA,@Ri;((Ri))→A,(A)=((Ri))MOVX@Ri,A;(A)→(Ri),((Ri))=(A)2.使用DPTR进行间接寻址MOVXA,@DPTR;((DPTR))→A,(A)=((DPTR))MOVX@DPTR,A;(A)→(DPTR),((DPTR))=(A)要读写或写入外部RAM,还必须知道外部RAM的地址,如果外部RAM的地址是8位的,一般使用Ri进行间接寻址,如果外部RAM的地址是16位的,则只能使用DPTR进行间接寻址。所以不同的应用场合就要使用不同的读写指令。【例4.5】按下列要求分别写出传送数据1.将内部RAM中20H单元中的内容送入外部RAM中30H单元中 MOVA,20H MOVR0,#30H MOVX@R0,A4.2.4程序存储器数据传送指令MOVCA,@A+PC ;((A)+(PC))→A,(A)=((A)+(PC))MOVCA,@A+DPTR;((A)+(DPTR))→A,(A)=((A)+(DPTR))本组指令也被称为查表指令,常用来查一个已做好在ROM中的表格.此条指令的寻址方式是变址寻址

【例4.6】有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是0~5) MOVDPTR,#TABLE MOVA,R0 MOVCA,@A+DPTR..TABLE:DB0,1,4,9,16,25如(R0)=2,则执行指令MOVCA,@A+DPTR后,(A)+(DPTR)=TABLE+2,查表得44.2.5堆栈指令 PUSHdirect;SP(SP)+1,(SP)(direct) POPdirect;(direct)((SP)),SP(SP)-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。2.2.6交换指令 内外部RAM数据传送指令属复制性质,例MOVA,30H;如30H单元地址中的数为57H,则执行完此条指令后A中的内容即为30H地址单元中的57H这个数,而30H单元地址中的数是不变的。而数据交换指令与内外部RAM数据传送指令不同,执行完指令后会修改两个操作数中的内容。同时数据交换主要是内部RAM单元与累加器A之间进行,有整字节和半字节两种交换。1.整字节交换指令 字节单元与累加器A进行8位数据交换,共有3条指令:1)XCHA,Rn ;(A)←→(Rn),n=0~7,即累加器A与寄存器Rn中的数据实现互换。2)XCHA,@Ri;(A)←→((Ri)),i=0、1,3)XCHA,direct;(A)←→(direct)2.半字节交换指令 字节单元与累加器A进行低4位的半字节数据交换,只有一条指令:XCHDA,@Ri;A3~0←→(Ri)3~0高4位不变,i=0、1。3.累加器高低四位互换 SWAPA;A7~4←→A3~0 十六进制数和十进制数的BCD码都是以4位二进制数表示,因此XCHD和SWAP指令主要用于实现十六进制数或十进制数的低位交换:4.3控制转移类指令及应用【例4.11】如图4.4所示,现在让这8个LED循环点亮,先让LED1亮1S,再让LED2亮1S,依次下去,循环工作。(晶振频率为6MHZ)4.3.18个LED循环点亮源程序如下 ORG0040H START:MOVA,#00000001 LOOP: MOVP1,A ;先让LED1亮,之后轮流亮 LCALLDEL1S;亮一段时间(调用延时1S子程序) RLA ;换另一个LED AJMPLOOP ;不断循环;以下是延时1S子程序 DEL1S: MOVR5,#4 D2: MOVR7,#250 D1: MOVR6,#250 DJNZR6,$ DJNZR7,D1 DJNZR5,D2 RET END4.3.2

控制转移类指令1.无条件转移指令 不规定转移条件的程序转移称为无条件转移。80C51共有4条无条件转移指令。1)长转移指令LJMPaddr16 2)短转移指令AJMPaddr11 3)相对转移指令 SJMPrel4)间接转移指令(散转指令)JMP@A+DPTR2.

条件转移指令 条件转移指令是指当某种条件满足时转移才进行,条件不满足时程序就顺序执行。1)判A转移指令(2条) JZrel;若(A)=0,则转移若(A)0,则程序顺序执行 JNZrel;若(A)0,则转移若(A)=0,则程序顺序执行2)减1非0转移指令(2条) DJNZRn,rel;若(Rn)=0,则程序顺序执行 ;若(Rn)0,则转移 DJNZdirect,rel ;若(direct)=0,则程序顺序执行 ;若(direct)0,则转移3)比较转移指令(4条)CJNEA,direct,rel ;若(A)=(direct),则程序顺序执行;若(A)≠(direct),则转移,且若(A)≥(direct),Cy=0若(A)<(direct),Cy=1CJNEA,#data,rel ;若(A)=data,则程序顺序执行;若(A)≠(direct),则转移,且若(A)≥(direct),Cy=0若(A)<(direct),Cy=1CJNERn,#data,rel ;若(Rn)=data,则程序顺序执行 ;若(Rn)≠data,则转移,且若(Rn)≥data,Cy=0若(Rn)<data,Cy=1CJNE@Ri,#data,rel;若((Ri))=data,则程序顺序执行 ;若((Ri))≠data,则转移,且若((Ri))≥data,Cy=0若((Ri))<data,Cy=13.子程序调用和返回指令8个LED循环点亮源程序如下: ORG0040H START:MOVA,#00000001 LOOP: MOVP1,A ;先让LED1亮,之后轮流亮 LCALLDEL1S;亮一段时间(调用延时1S子程序) RLA ;换另一个LED AJMPLOOP ;不断循环;以下是延时1S子程序 DEL1S: MOVR5,#4 D2: MOVR7,#250 D1: MOVR6,#250 DJNZR6,$ DJNZR7,D1 DJNZR5,D2 RET END

1)子程序调用指令 LCALLaddr16 ;长调用指令 ACALLaddr11 ;短调用指令 上面两条指令都是在主程序中调用子程序,两者有一定的区别,但在初学时,可以不加以区分,而且可以用LCALL标号、ACALL标号来理解,即调用子程序。2)返回指令 返回指令有子程序返回和中断返回两种: RET ;子程序返回 子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了,即执行RET指令 RETI ;中断返回如果子程序执行的过程中,还要再次调用其他的子程序,这种现象称为子程序的嵌套。 在进入子程序之前,将要使用的累加器和寄存器中的内容预先转移到安全的地方保存起来,这叫现场保护;当子程序执行完即将返回主程序之前,还要将这些内容先取出来,送回到累加器和原来的工作寄存器中,这个过程叫恢复现场。 保护现场和恢复现场通常使用堆栈,4.空操作指令 NOP NOP为单机周指令,在时间上占用一个机器周期, 空操作,就是什么事也不干,停一个周期,一般用作短时间的延时即作为时间“微调”。4.3.3延时程序设计通过指令实现定时的程序叫软件定时程序。软件定时程序是典型的循环程序,它通过执行一个具有固定延时时间的循环程序来实现延时,因此也把定时程序称为延时程序.循环程序一般包括以下几个部分:(1)循环初值。(2)循环体。(3)循环修改。(4)循环控制。循环程序可以缩短程序,减少程序所占的内存空间。1.单循环定时程序 下面是一个最简单的单循环定时程序

MOVR5,#250 ;置循环次数(指令为1个机器周期)LOOP:DJNZR5,LOOP;循环体,2机周×250×2us /机周=1000us=1ms RET

;(指令为2个机器周期)

总的定时时间=总的机器周期数×机周时间,上述子程序实际延时1000us+(2+1)×2us=1006us≈1ms 可见,单循环定时程序的时间延时比较小。

2.较长时间的定时程序为了延长定时时间,通常采用多重循环的方法,如:这个程序总的机器周期数为:1×1+1×20+2×250×20+2×20+2×1=10063 所以总的定时时间为10063×2us=20126us=20ms 适当选择外循环次数可以编制延时10ms,100ms等延时子程序。3.提高定时精度 单片机是按照严格的固定时序执行指令的,因此,定时程序的延时时间总是执行循环程序段所需时间的整数倍。对循环程序段通过增减NOP指令的办法,对时间进行微调,以提高定时精度。4.一个基本的延时程序满足不同的定时要求 如果一个系统中有多个定时需要,则可以设计一个基本的延时程序,使其延迟时间为各定时时间的最大公约数,然后就可以以此基本程序作为子程序,通过调用的方法实现所需要的不同定时。4.4逻辑运算指令及应用【例4.16】如图4.5所示,要求实现:1.S0单独按下,红灯亮,其余灯灭;2.S1单独按下,绿灯亮,其余灯灭;3.其余情况,黄灯亮。图4.5用开关控制红绿灯4.4.1用开关控制红绿灯源程序如下:SGNL: ANLP1,#11100011B;红绿黄灯灭 ORLP1,#00000011B ;置P1.0、~P1.7保持状态不变SL0: JNBP1.0#00000011B ;P1.0=0,S0未按下,转判S1 JNBP1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮YELW: SETBP1.4 ;黄灯亮 CLRP1.3 ;绿灯灭 CLRP1.2 ;红灯灭 SJMPSL0 ;转循环SL1: JNBP1.1,YELW ;P1.0=0,S0未按下;且P1.1=0,S1未按下,转黄灯亮GREN: SETBP1.3 ;绿灯亮 CLRP1.4 ;黄灯灭 CLRP1.2 ;红灯灭 SJMPSL0 ;转循环RED: SETBP1.2 ;红灯亮图4.5用开关控制红绿灯

CLRP1.3 ;绿灯灭 CLRP1.4 ;黄灯灭 SJMPSL0 ;转循环 END ;结束4.4.2逻辑运算类指令1.逻辑“与”运算指令ANLA,Rn ;(A)∧(Rn)→AANLA,@Ri ;(A)∧((Ri))→AANLA,#data ;(A)∧data→AANLA,direct ;(A)∧(direct)→AANLdirect,A ;(direct)∧(A)→directANLdirect,#data ;(direct)∧data→direct 逻辑“与”运算也称逻辑乘,运算结果是“有0出0,全1出1”。“与”运算通常用于将1个字节中的指定位清0,其余位保持不变。如:ANLA,#00H ;累加器A中内容清0 ANLA,#0FFH ;累加器A中内容不变2.逻辑“或”运算指令

ORLA,Rn ;(A)∨(Rn)→AORLA,@Ri ;(A)∨((Ri))→ORLA,#data ;(A)∨data→AORLA,direct ;(A)∨(direct)→AORLdirect,A ;(direct)∨(A)→directORLdirect,#data ;(direct)∨data→direct

逻辑“或”运算也称逻辑加,运算结果是“有1出1,全0出0”。“或”运算通常用于将1个字节中的指定位置1,其余位保持不变。如:ORLA,#00H ;累加器A中内容不变 ORLA,#0FFH ;累加器A中内容置13.逻辑“异或”运算指令(6条)XRLA,Rn ;(A)(Rn)→AXRLA,@Ri ;(A)((Ri))→AXRLA,#data ;(A)data→AXRLA,direct ;(A)(direct)→AXRLdirect,A ;(direct)(A)→directXRLdirect,#data ;(direct)data→direct 逻辑“异或”运算用符号“”表示,运算结果是“相同出0,相异出1”。“异或”运算通常用于将1个字节中的指定位取反,其余位保持不变。如:XRLA,#00H ;累加器A中内容不变 XRLA,#0FFH ;累加器A中内容取反4.清零和取反指令 CLRA ;0→A 累加器A清零。效果同MOVA,#00H是一样的,只不过它是单周期指令,而MOVA,#00H是双周期指令。 CPLA ;(A)→A 将累加器A逐位取反。相当于数字电路中的“非”逻辑。5.循环移位指令 RLA ;循环左移,每次执行一次此指令,就将累加器A的值逻辑左移 RLCA ;带Cy循环左移,如(CY)=0,执行指令后相当于(A)乘2后送回到A RRA ;循环右移 RRCA;带Cy循环右移,如(CY)=0,执行指令后相当于(A)除2后送回到A4.5算术运算类指令

算术运算类指令有24条,也是单片机中极为重要的指令系统。1.不带进位位的加法指令 ADDA,#DATA ADDA,direct ADDA,Rn ADDA,@Ri

指令分析如下:将A中的值与其后面的值相加,最终结果送回到A中。

2.带进位位的加法指令 ADDCA,Rn ADDCA,direct ADDCA,@Ri ADDCA,#data 指令分析如下:将A中的值和其后面的值相加,并且加上进位位C中的值。3.带借位的减法指令 SUBBA,Rn SUBBA,direct SUBBA,@Ri SUBBA,#data 指令分析如下:将A中的值和其后面的值相减,同时减去进位位C中的值。4.乘法指令 MULAB

此指令的功能是将A和B中的两个8位无符号数相乘,最终结果用1个16位数来表达,其中高8位放在B中,低8位放在A中。在乘积大

温馨提示

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

评论

0/150

提交评论