




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
At89S52快速入手屈召贵一、特性l 与MCS-51单片机产品兼容 l 8K字节在系统可编程Flash存储器 l 1000次擦写周期 l 全静态操作:0Hz33Hz l 三级加密程序存储器 l 32个可编程I/O口线 l 三个16位定时器/计数器 l 八个中断源 l 全双工UART串行通道 l 低功耗空闲和掉电模式 l 掉电后中断可唤醒 l 看门狗定时器 l 双数据指针 l 掉电标识符特性描述AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个6向量 2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。EA=1内部flash存储器8KEA=064KROMEA0000H1FFFH0000H1FFFH通用数据区特殊工能寄存器80HFFH80HFFH通用数据区位寻址区工作寄存器区00H1FH20H2FH30H7FH外部数据区0000HFFFFH片内二、C51中较特殊存储变量一般变量的定义。变量定义语句,与C语言一致但有扩展(注意行后的分号),一般格式是:存储种类 数据类型说明 存储器类型 变量名1=值,变量名2=值,;举例:auto unsigned char bdata flag0x45;存储种类: 存储类型是变量在程序过程中作用域和生存期属性的规定 数据类型说明符:是数据格式、取值范围、所占存储器空间大小属性的规定 存储器类型 : 是变量在单片机中所在的存储器区域的规定 ,和C语言一样,变量当然一定是由编译环境安排在一定的存储器中的(PC机也是这样),用户勿需知道,尤其不能干预。在C51中有些不同,C51编译器允许用户作必要和允许的安排,但不能是具体的安排,只能是某个区域的安排。这些区域是:存储位置存储器类型位数范围直接寻址片内RAMdata800H-7FH位寻址片内RAMbdata820H-2FH间接寻址片内RAMidata800H-FFH分页寻址片外RAMpdata800H-FFH寻址片外RAMxdata160000H-FFFFH寻址ROMcode160000H-FFFFH变量名1 =值:注:存储模式,解决变量的默认存储类型和参数传递区SMALLLARGECOMPACT默认情况的变量和参数传递片内128B片外256B,相当于pdata片外64KB,相当于xdata C51中两种位变量定义(特殊形式的变量定义):bit位变量的定义: bit bdata bflag; /在bdata区中定义位变量bflag,在哪个具体位地址?用户无权决定,由C51编译器安排。sbit位变量的定义:4条特殊位变量定义语句,用不同的位地址表达方式 sbit P03P03;/定义位变量P03,指定为可位寻址寄存器变量P0中的位3sbit P12=0x802; /定义位变量P12,指定为可位寻址字节地址中的位2sbit P13=0x93; /定义位变量P13,指定为直接位地址0x93位sbit S1=RS1;/定义位变量S1,指定为特殊功能位RS1bit和sbit都是表明位变量,有什么不同?我们认为bit是不可指定位地址的位变量关键字;sbit是必须指定位地址的位变量关键字,一般用于特殊功能位变量(special function)的定义,所以冠以“s”。 特殊功能寄存器变量的定义:单片机中的特殊功能寄存器对单片机的意义重大,在C51源程序中必须使用这些寄存器。同一个对象,在汇编语言和C语言中各有说法不同,C51中对这些寄存器的访问均以变量名义进行,为此,C51语言专门提供特殊功能寄存器变量的定义格式:sfr PSW0xd0;/定义特殊功能寄存器PSW是数据存储器中的0xd0单元sfr P00x80;/定义特殊功能寄存器变量P0是数据存储器中的0x80单元定义语句中,以扩展关键字“sfr”表明这是关于特殊功能寄存器变量的定义,并指明其直接地址。定义后,就可以以变量名义访问单片机的特殊功能寄存器PSW和P0了。sfr16 DPTR0x82;/定义“特殊功能寄存器对”变量DPTR是数据存储器中的0x82单元定义语句中,以扩展关键字“sfr16”表明这是关于特殊功能“寄存器对”变量DPTR的定义,DPTR不是一个八位寄存器,是由DPL(地址0x82)和DPH(地址0x83)两个寄存器组成的“寄存器对”。定义后,就可以以变量DPTR的名义访问特殊功能寄存器对DPTR了。51单片机共有21个特殊功能寄存器,89C52单片机共有26个特殊功能寄存器,AT89S52单片机共有32个特殊功能寄存器,同一个系列中的不同型号单片机的特殊功能寄存器是不同的,在进行特殊功能寄存器变量定义的时候,用户当然要照顾各种机型的不同,单片机生产厂家为了方便用户,已经预先为每一种型号单片机编写好了该机型的寄存器变量定义文件,只需要用户在预处理命令行“include xxxx.h”中的选取适当的头文件即可,而无需自己来定义了。 实现对绝对地址单元的访问。C51语言有时候需要以绝对地址对单片机存储器单元进行访问,这经常是对硬件操控的需要。为此,C51语言提供了多种方法:以“_at_”扩展标识符定义一个与绝对地址固定关联的变量:一般格式(这也是C51中特殊形式的变量定义)存储器类型 数据类型说明 变量名 _at_ 有效地址常数(与存储器类型相应的有效地址常数); 比如,首先以特殊格式定义变量:data unsigned char x _at_ 0x40;定义一个与单片机data区中地址为0x40的单元固定关联的无符号字符型变量x。一经以这样特殊格式定义了这个变量x,就建立了变量x与绝对地址单元的固定关联,这样一来,就可以以变量名义访问绝对地址单元了:yx;即,读取data区中地址为0x40的单元内容并赋值给变量y,x0x34;即,将常数0x34赋值给data区中地址为0x40的单元。利用指针变量定义,实现绝对地址访问举例:unsigned char data *point;定义一个指向data区中某无符号字符型目标变量的指针变量point。unsignedintcode *pcode;定义一个指向code区中某无符号整型目标变量的指针变量pcode。其中,point的内容应当是一个指向data区域的地址,即0x00xff的八位有效地址码。pcode的内容应当是一个指向code区域的地址,即0x00xffff的十六位有效地址码。point0x20; 给指针变量赋值0x20,就可以以“*point”名义对0x20单元进行访问了。*point=0x30;将常数0x30赋值给data区中的0x20单元。y*point;读取data区中的0x20单元的内容并赋值给变量y。 pcode0x1000;给指针变量pcode赋值0x1000,z*pcode;就可以以“*pcode”名义对程序存储器的0x1000开始的整型变量单元进行访问了说到绝对地址访问,C51语言还提供了一套带参数的标识符,可以很方便的进行绝对地址访问。C51运行库中准备了名为“absacc.h”的宏定义头文件,只要在程序中以“#include ”这样的预处理命令行引入了这个头文件,就引入了下列特殊的带参数的关键字:DBYTE有效地址PBYTE有效地址 XBYTE有效地址 CBYTE有效地址 DWORD有效地址PWORD有效地址XWORD有效地址CWORD有效地址注意所谓有效地址,必须是与关键字中的“Data”、“Pdata”、“Xdata”、“Code”这些存储器类型相应的地址。以宏名DBYTE区内有效地址值的名义访问data区中该地址所指的字节单元:比如:xDBYTE0X40; 读取data区中地址为0x40的byte(字节)单元内容并赋值给变量xDBYTE0X40x; 读取变量的值并赋值给(写入)xdata区中地址为0x40的byte(字节)单元以宏名XBYTE区内有效地址值的名义访问xdata区中该地址所指字节单元:比如:xXBYTE0X2000; 读取xdata区中地址为0x2000的字节单元内容并赋值给变量xXBYTE0X2000x; 读取变量的值并赋值给xdata区中地址为0x2000的字节单元以宏名XWORD区内有效地址值的名义访问xdata区中该字地址所指字单元(word):比如:xXWORD0x2000;读取xdata区中字地址为0x2000的字单元内容并赋值给变量x。XWORD0x2000x;读取变量x的值赋值给xdata区中字地址为0x2000的字单元。三、at89s52内部模块的应用(一)I/O的应用At89s52单片机有4个8位的并行输入/输出接口:P0、P1、P2、和P3口。这4组共计32位既可以并行输入或输出8位数据,又可以按位方式操作。应用举例:检测矩阵键盘按键号码,并将号码通过一位数码管显示器显示出来。电路如图所示。1、矩阵键盘操作分为两种:一种叫查询方式、一种叫中断方式以查询方式为例进行说明:横线:P1.0、P1.1、P1.2、P1.3列线:P1.4、P1.5、P1.6、P1.7方法是纵模两线取两次求交点:(1)先给P1=0x0F 高四位为0,低四位为1,检测P1的状态,看有没有变化,如果P10x0F,说明有按键按下,保存当前的P1口的值,因为还无法判断是哪个按键被按下去了。比如说P1.0为0了,也就是说P1=0x0E了,那只能说,P1.4-P1.7都可能有键按下,也就是说S1-S4中应该有一键按下。(2)再给P1的横、列两线数据交换,变成P1=0xF0,再读P1口的状态,比如说读回来的状态为P1=0xE0,那也只能说,P1.0-P1.3中的有一个键被按下了,也就是说S4、S8、S12、S16这几个键可能被按下。(3)把两次的结果求一下交集,就不一样了。就说明S4键被下中断方式说明:操作方式和查询完全一样,只不过,产生中断过后才开始进行判断,方式和查询一样操作。2、LED显示电路 LED操作注意两点:一,操作的笔段码,就是如何在LED上显示“0-9”这10个数字,一般在处理过程中,这样来计算,如下述举例采用共阳极的LED笔段码:端口P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0AHHGFEDCBA笔段码0C0H110000001F9H111110012A4H101001003B0H10110000499H10011001592H10010010682H100000107F8H11111000880H10000000990H10010000如果是带小数点的话,H位就应该为0,直接用上述段码与7FH或者减80H就可以。二、位码:多位LED显示的话,一般采用扫描的方式显示每一位显示的时间为10ms-20ms 之间,如图所示,八个三极管的集电极接到八个LED的阳极共公端,发射极连在一起加到电源VCC上。基极分别连到P2端口上,要把电源VCC加到LED的阳极的话,只有给三极管的基极加低电平才行。因此要当某一个LED显示器点亮的话,就必需给相应的P2端口加低电平。(二)中断的使用EX0EAPX001ET0PT001EX1PX101ET1PT101ESPS011RITISCONTCONIE0TF0IE1TF110101IT0IT1INT0INT1T0T1RXTXIEIP111111110硬件查询自然优先级自然优先级中断入口中断入口高级低级中断源中断源1TF2EXF2PT201ET21、 中断源TCON、SCON、T2CONTCON位D7D6D5D4D3D2D1D0功能TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器/计数器1的溢出标志,计满时,硬件置TF1=1,中断请求,进入中断后,硬件自动清除。TR1:启动定时器1。1:启动。0:定止。TF0:定时器/计数器0的溢出标志,计满时,硬件置TF0=1,中断请求,进入中断后,硬件自动清除。TR0:启动定时器0。1:启动。0:定止。IE1:外部中断1请求标志,电平触发时,当P3.3=0(低电平),IE1=1;边沿触发时,当产生下降沿,IE1=1,去请求中断。IT1:0为电平触发,1为边沿触发。IE0:外部中断0请求标志,电平触发时,当P3.2=0,IE0=1;边沿触发时,当产生下降沿,IE1=0,去请求中断。IT0:0为电平触发,1为边沿触发。SCON2、 中断允许寄存器IE3、 优先级控制寄存器IPD7D6D5D4D3D2D1D0PT2PSPT1PX1PT0PX0PX0优先级最高PT2优先级最低(三)、定时器的应用(T0、T1)一、 概述1、 80C51系列内部有2个16位的定时/计数器T0、T1 80C52系列内部有3个16位的定时/计数器T0、T1、T22、2个16位T/C分别由8位计数器TH0、TL0、TH1、TL1组成加“1”计数器;T0 : TH0 TL0 16位定时寄存器T1 : TH1 TL1 16位定时寄存器可以用于定时、延时、对外部脉冲进行计数二、 定时/计数器内部组成结构与工作原理INT0(P3.2)INT1(P3.3)系统时钟TFi外部引脚TX启动控制溢出标志中断12GATE&TRiC/T=1THxTLx计数器C/ T =0P3.4/P3.5内部时钟脉冲(定时)外部输入脉冲(计数)计数初值与定时/计数器0、1相关的寄存器有四个分别是:TCON、TMOD、TL0、TH0(1)TMOD模式寄存器(89H只能进行字节寻址)TMODT1T0(89H)D7D6D5D4D3D2D1D0位定义GATEC/TM1M0GATEC/TM1M0GATE门控信号:GATE=0:要启动定时/计数器,就只决定于TRxGATE=1:要启动定时/计数器,取决于外部中断信号和TRx信号才能完成。此种方式主要用于测量加在INTX脚上一个正脉冲的脉宽。C/T定时/计数选择位:C/T=0:为定时功能,主要是根据内部的12分频时钟脉冲宽度进行定时。C/T=1:为计数功能,主要是对外部输入的脉冲进行计数。M0、M1定时/计数器的工作方式选择位:M1 M0工作方式说明0 0013位定时/计数器(用TH的8位,TL的低5位)0 1116位定时/计数器1 028位定时/计数器(可自动重装入初值)1 13T0分成两个独立的8位定时/计数器,T1没有工作方式3(2)TCON控制寄存器(每一位都可以进行位寻址,因此都对应有相关的位地址)位地址8F8E8DH8CH8BH8AH89H88H位定义TF1TR1TF0TR0IE1IT1IE0IT0功能0:没有溢出1:溢出0:不启动1:启动0:没有溢出1:溢出0:不启动1:启动0:没有请求1:有请求0:低电平1:下降沿0:没有请求1:有请求0:低电平1:下降沿三、 定时/计数器的工作方式1、 方式0(M1M0=00,13位)OSC1/12TL0低(5位)TH08位TF0&1C/T=0C/T=1T0(P3.4)TR0GATEINT0 计数值:00001FFFH,也就是十进制的0-213(8192) 定时:Td=(213-n).Tcy例1:已知fOSC=6MHz,设定时器T0选择工作方式0,定时时间为 2ms,试确定T0初值(TH0=? TL0=?)。解:首先求出定时器T0初值。, t =M机器周期=(213N )TM又由于fOSC=6MHz 1TM=12TOSC=12/6MHz=2s 2000s =(213-T0初值)2s T0初值=7192=1110000011000B,其中将: 高8位11100000B =0E0H 赋给TH0, 低5位 11000B =00011000B=18H 赋给TL0。 TH0=0E0H,TL0=18H。2、 方式1(M1M0=01,16位)OSC1/12TL0低(8位)TH08位TF0&1C/T=0C/T=1T0(P3.4)TR0GATEINT0计数范围:165536(216)定时:Td=(213-n).Tcy例2:已知fOSC=6MHz,设定时器T0选择工作方式1,定时时间为 2ms,试确定T0初值(TH0=? TL0=?)。解:首先求出定时器T0初值。, t =M机器周期=(216N )TM又由于fOSC=6MHz 1TM=12TOSC=12/6MHz=2s 2000s =(216-T0初值)2s T0初值= 64536= 1111110000011000B,其中将: 高8位11111100B =0FCH 赋给TH0, 低8位 00011000B =18H 赋给TL0。 TH0=0FCH,TL0=18H。3、 方式2(M1M0=10,8位自动重装)OSC1/12TL0低(8位)TH08位TF0&1C/T=0C/T=1T0(P3.4)TR0GATEINT0方式2为自动重装初值的8位计数方式 ,由TL0(TL1)做计数器,TH0(TH1)做初值寄存器。工作前TL0、TH0分别预置相同的初值。计数器TL0工作时,每当溢出产生中断的同时, 将TH0中的初值自动重装。此模式主要用于做串行口波特率发生器使用。计数范围:1-256定时:Td=(28-n).Tcy4、 方式3(M1M0=11,主要由定时/计数器T0用)T0分成2个8位定时器:TL0定时/计数器和TH0定时器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位:TR1。注意:T1不能使用方式3工作OSC1/12TL0 (8位)TF0&1C/T=0C/T=1T0(P3.4)TR0GATEINT0TH0(8位)TF11/12FoscTR1在这种方式下,T1怎么工作呢,此时T1只能工作于方0、方式1、方式2,同时TR1、TF1已被占用,因此只能扰计数溢出直接送给串行口,作为串口的波特率发生器使用。四、 应用举例(四)定时/计数器T2的使用1、T2COND7D6D5D4D3D2D1D0TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2功能说明:符号功能TF2定时器2溢出标志位。必须软件清0。RCLK=1或TCLK=1时,TF2不用置位EXF2定时器 2 外部标志位。EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重载时,EXF2 会被硬件置位。定时器 2 打开,EXF2=1 时,将引导 CPU执行定时器 2 中断程序。EXF2 必须如见清“0”。在向下/向上技术模式(DCEN=1)下EXF2不能引起中断。RCLK串行口接收数据时钟标志位。若 RCLK=1,串行口将使用定时器 2 溢出脉冲作为串行口工作模式 1 和 3 的串口接收时钟;RCLK0,将使用定时器1计数溢出作为串口接收时钟。TCLK串行口发送数据时钟标志位。若 TCLK=1,串行口将使用定时器 2 溢出脉冲作为串行口工作模式 1 和 3 的串口发送时钟;TCLK0,将使用定时器1计数溢出作为串口发送时钟。EXEN2定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器 2 捕捉和重载。若 EXEN20,定时器2将视T2EX端的信号无效TR2开始/停止控制定时器2。TR2=1,定时器2开始工作C/T2定时器 2 定时/计数选择标志位。C/T20,定时;C/T21,外部事件计数(下降沿触发)CP/RL2捕捉/重载选择标志位。当EXEN2=1时,CP/RL21,T2EX出现负脉冲,会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都会出现自动重载操作。CP/RL20 将引起 T2EX 的负脉冲。当 RCKL=1或TCKL1时,此标志位无效,定时器2溢出时,强制做自动重载操作。2、T2MODD7D6D5D4D3D2D1D0T2OEDCEN功能说明:符号功能T2OE定时器2输出允许位DCEN置1后,定时器2可配置成向上/向下计数4、 定时器2的工作模式RCLK+TCLKCP/RL2TR2MODE00116位自动重载01116位捕捉1X1波特率发生器XX0(不用)5、 T2的操作方式(1)16位自动重载DCEN=0情况T2构成一个向上计数的过程,最大值为216(065535)当定时器 2 工作于 16 位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器 T2MOD(见表 4)中的 DCEN(向下计数允许位)来实现。通过复位,DCEN 被置为 0,因此,定时器 2 默认为向上计数。DCEN 设置后,定时器 2就可以取决于T2EX向上、向下计数。 如图所示,DCEN=0 时,定时器 2 自动计数。通过 T2CON 中的 EXEN2 位可以选择两种方式。如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从 RCAP2H 和 RCAP2L 中加载 16 位值。定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2=1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2中断标志位。 如图6所示,置位DCEN,允许定时器 2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。 T2EX 上的一个逻辑 0 使得定时器 2 向下计数。当 TH2 和 TL2 分别等于 RCAP2H 和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。 定时器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能触发中断。(2)捕捉方式在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果EXEN2=1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳变会引起 T2CON 中的 EXF2 置位。像 TF2 一样,T2EX 也会引起中断。捕捉模式如图5所示。捕捉模式主要是用来测量脉冲宽度。当T2EX Pin产一个下降沿的时候,就会将TH2、TL2里的数据装载到RCAP2H、RCAP2L。Tt1t2当t1时刻,外部管产生一个下降沿,此时,将TH2、TL2里的值装载到RCAP2H、RCAP2L中,并且由EXF2产生中断,T2继续工作;当t2时刻,外部管脚产生一个下降沿,此时,再将TH2、TL2里的值装载到RCAP2H、RCAP2L中,并且由EXF2产生中断,T2继续工作。两次测量的值相减,就是上述波的周期,即可测量出频率信息。(五)串口1、串口的结构SBUF(发)SBUF(收)发送控制器 TI接收控制器 RI移位寄存器波特率发生器T1T21A累加器(门)移位寄存器RxDTxD去申请中断引脚(P3.1)引脚(P3.0)CPU内部2、特殊功能寄存器串行口相关的SFR(SBUF、SCON,PCON)(1)串行口控制寄存器SCONSerial Port Control Register (98H)、M0、SM1:串行口工作方式选择位.可以确定串行口的四种方式之一(如下表);SM0 SM1工作方式功 能波特率0 008位同步移位寄存器方式,用于并行I/O扩展Fosc/12 0 1110位(1+8+1 )UART可变 1 0211位(1+9+1 ) UARTFosc/64或/32 1 1311位(1+9+1 ) UART可变、SM2 :多机通信使能位 1、模式0、1时: SM2不用,应设为0。此时RI才能被正常激活并引发中断。 2、模式2、3时: 若SM2=0时,无论RB8如何,RI都能被激活(RI=1)。但是RI=1并不能引发中断!所以只能用查询的方式接收数据。(重要!) 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活; 若SM2=1且RB8=1时,RI才能被激活=1并引发中断。、EN:允许串行接收位,由软件置位或清0 1:允许接收 0:不允许接收(允许发送)、TB8:发送数据的第9位。 在方式2、3时,其值由用户通过软件设置。在双机通信时,TB8一般作为奇偶效验位使用;在多机通信中,常以TB8位的状态表示主机发送的是地址帧还是数据帧,且一般约定:TB8 = 0为数据帧,TB8 = 1为地址帧。、RB8:接收数据第9位。 在方式2、3时,RB8存放接收到的第9位数据,它代表接收到数据的特征:可能是奇偶效验位,也可能是地址/数据的标志位。、TI 发送中断标志(必须由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 龙舟赛参赛人员合同6篇
- 有关技术开发(合作)合同2篇
- 加工水泥杆合同范本
- 转让协议转租合同范本
- 铺面联营协议合同范本
- 管道清洗报价合同范本
- 场地机器租赁合同范本2篇
- 微商操盘合同范本
- 债权抵押转让合同范本
- 对口学校租赁合同范本
- 中国阅兵仪式课件
- 2026年高考语文备考之必背补充教材篇目(原文+注释+翻译)
- 杭州银行薪资管理办法
- 肺结核的课件
- 海洋弧菌护理查房
- 2025-2030中国玉米脱粒机行业现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 生产精益培训
- GB/T 2820.5-2025往复式内燃机驱动的交流发电机组第5部分:发电机组
- 甲醛治理招标方案(3篇)
- 呼吸机管路设计与应用
- 2025-2030年中国黑胶唱片行业市场现状供需分析及投资评估规划分析研究报告
评论
0/150
提交评论