单片机原理及应用课件_第1页
单片机原理及应用课件_第2页
单片机原理及应用课件_第3页
单片机原理及应用课件_第4页
单片机原理及应用课件_第5页
已阅读5页,还剩271页未读, 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用1单片机原理及应用1目录

单片机概述

单片机芯片的硬件结构

MCS-51单片机指令系统

MCS-51汇编语言程序设计

单片机存储器扩展

单片机的中断与定时系统

单片机I/O扩展与应用

单片机串行数据通信

MCS-51单片机应用与开发技术2目录单片机概述2第一章单片机概述单片机的概念单片机的发展单片机的应用3第一章单片机概述单片机的概念3什么是单片机?

单片机--将计算机的五大部件集中在同一块集成电路硅片上的计算机。第一节单片机的概念单片机的名称:

单片微型计算机(SCMC)微控制器(MCU)嵌入式控制器(EMCU)单片机与一般微机最根本的不同之处:单片机的五大部件集成在一块集成电路硅片上。4什么是单片机?第一节单片机的概念单片机的名称:单片机与一般什么是通用单片机和专用单片机?

通用单片机是一种基本芯片。

专用单片机是针对一种产品或一种控制应用专门设计的单片机与单片机系统:

单片机系统是在单片机芯片的基础上扩展其它电路或芯片构成的具有一定应用功能的计算机系统。5什么是通用单片机和专用单片机?单片机与单片机系统:5单片机应用系统与单片机开发系统:

单片机开发系统即是单片机系统开发调试的工具。仿真器、编程器等机器语言:基本的的语言形式,多出现在应用系统中汇编语言:单片机开发中最常用的程序设计语言高级语言:很具发展潜力。单片机的程序设计语言和软件

常用单片机语言:汇编语言、高级语言c51。6单片机应用系统与单片机开发系统:机器语言:基本的的语言形式单片机的分类:

4位单片机特点:一次处理4位二进制数代表产品:COP4XX系列(NS公司)TMP47XXX系列(Toshiba公司)用途:计算器、家用电器等

8位单片机特点:一次处理8位二进制数代表产品:MCS-51系列(Intel公司)M6805系列(Motorola公司)用途:工业控制、智能仪表、家用电器和办公自动化系统7单片机的分类:7

16位单片机特点:一次处理16位二进制数代表产品:MCS-96系列(Intel公司)M68HC16系列(Motorola公司)用途:过程控制、智能仪表、家用电器和计算机外设等

32位单片机特点:一次处理32位二进制数代表产品:M68300系列(Motorola公司)SH系列(日立公司)用途:多媒体、蜂窝电话、光驱等计算机外设816位单片机8第二节单片机的发展单片机的发展历史

第一阶段:4位单片机阶段。主要特点是:价格便宜,具有一定的控制功能。主要代表系列有:日本NEC公司的uMOS40系列、松下公司的MN1400系列,夏普公司的SM系列,富士通的MB88系列等等。第二阶段:(1976-1978年)低、中档8位单片机阶段。以Intel公司的MCS-48为代表。这个系列的单片机片内集成有8位CPU。并行I/O口,8位定时器/计数器,寻址范围不大于4K,无串行口。9第二节单片机的发展单片机的发展历史第二阶段:(1976-1

第三阶段:(1978至1982)高档8位单片机阶段。这阶段推出的普遍带有串行I/O口,有多种中断处理系统,多个16位定时器/计数器。片内RAM、ROM容量较大,寻址范围可达64K,有的片内还带有A/D转换接口。主要代表系列有Intel公司的MCS-51,Motorola公司的6801,Zilog公司的Z8等。第四阶段:(1982至今)8位单片机完善发展和16位、32位单片机推出阶段。这阶段的主要特征是一方面发展16位单片机及专用单片机,另一方面同时不断完善高栏8位单片机,改善其结构,以满足不同的用户需要。10第三阶段:(1978至1982)高档8位单片机阶段。108位单片机的市场前景8位单片机用途广泛(美国)每家226个办公室42个每汽车35个注意:基于Internet、无线数字传输的嵌入式应用将会是32位机最广泛的市场。118位单片机的市场前景8位单片机用途广泛(美国)注意:基于In8位单片机的新发展为了减小体积,增强功能,提高灵活性和可靠性,8位单片机的新发展体现在下面4个方面:

CPU功能增强

内部资源增多

引脚的多功能化

低电压和低功耗128位单片机的新发展为了减小体积,增强功能,提高灵活性和可8位单片机的新发展为了减小体积,增强功能,提高灵活性和可靠性,8位单片机的新发展体现在下面4个方面:

CPU功能增强采用亚微米的CMOS工艺提高运算速度,计划把80C51设计成1/3时钟周期执行一条指令,并可在33MHZ时钟下运行。

内部资源增多

引脚的多功能化

低电压和低功耗138位单片机的新发展为了减小体积,增强功能,提高灵活性和可8位单片机的新发展为了减小体积,增强功能,提高灵活性和可靠性,8位单片机的新发展体现在下面4个方面:

CPU功能增强

内部资源增多增加了A/D和D/A转换器、DMA通道、总线接口、晶振和LCD驱动电路。

引脚的多功能化

低电压和低功耗148位单片机的新发展为了减小体积,增强功能,提高灵活性和可8位单片机的新发展为了减小体积,增强功能,提高灵活性和可靠性,8位单片机的新发展体现在下面4个方面:

CPU功能增强

内部资源增多

引脚的多功能化采用一脚多用设计方案,减少引脚数量,提高应用灵活性。

低电压和低功耗158位单片机的新发展为了减小体积,增强功能,提高灵活性和可

8位单片机的新发展为了减小体积,增强功能,提高灵活性和可靠性,8位单片机的新发展体现在下面4个方面:

CPU功能增强

内部资源增多

引脚的多功能化

低电压和低功耗制造成+3V电源的单片机;采用CMOS工艺,设立掉电和空闲两种工作方式。168位单片机的新发展为了减小体积,增强功能,提高灵活几种8位单片机的性能概况

(1)Intel公司的MCS-51系列(2)Philips公司的80C51系列(3)Microchip公司的PIC系列(4)Atmel公司的AT89、AT90、AT91和智能IC卡四个系列(5)Motorola公司的M68HC05、M68HC11系列17几种8位单片机的性能概况17MCS-51系列单片机特性18MCS-51系列单片机特性18除了Intel公司外,Siemens、Philips和Fujitsu等公司都在80C51基础上推出与Intel公司的80C51兼容的新型单片机,统称为80C51系列。Philips公司的80C51系列单片机性能卓著,产品最齐全,最具有代表性。它以80C51为内核,新增功能电路有:A/D转换器捕捉输入/定时输出PWM(PulseWidthModulator)脉冲宽度调制器I2C总线接口视频显示控制器监视定时器E2PROM19除了Intel公司外,Siemens、Philips和Fuj80C51系列单片机主要性能特点2080C51系列单片机主要性能特点20PIC系列单片机分低档、中档和高档三个层次。1、产品特点:价格低:率先采用RISC(精简指令系统计算机)技术速度高:两级指令流水线结构采用哈佛双总线结构可靠性好:采用OTP(一次性程序)技术,比熔丝式EPROM更为可靠2、主要应用:嵌入式单片机的主流产品之一。21PIC系列单片机分低档、中档和高档三个层次。21PIC系列中档单片机性能表22PIC系列中档单片机性能表22Atmel公司是世界上著名的高性能、低功耗、非易失性存储器和数字集成电路的一流半导体制造公司。单片机产品分为AT89、AT90、AT91和智能IC卡等四个系列。1、产品特点:E2PROM存储器技术FLASH闪速存储器技术2、主要应用:计算机外部设备、通信设备、自动化工业控制航空航天仪表、雷达系统、导弹机器人、各类武器系统23Atmel公司是世界上著名的高性能、低功耗、非易失性存储器和AT90系列单片机选型表24AT90系列单片机选型表24Motorola公司是世界最具影响力的单片机厂商,其8位机约占8位机市场的30%份额。该公司共分为M6805、M68HC05、M68HC08、M68HC11等几个系列。25Motorola公司是世界最具影响力的单片机厂商,其8位机M6805系列单片机主要性能表26M6805系列单片机主要性能表26M68HC05系列单片机主要性能表27M68HC05系列单片机主要性能表27M68HC11系列单片机主要性能表28M68HC11系列单片机主要性能表28第三节单片机的应用单片机应用的特点

1、控制系统的在线应用2、软硬件结合(1)计算机在控制系统中的离线应用。由微型机或小型机实现(2)计算机在控制系统中的在线应用。由单片机实现

要求:设计人员既要掌握汇编语句编程技术,又要具备较扎实的硬件理论和实践知识。29第三节单片机的应用单片机应用的特点2、软硬件结合(1)广泛性:微电子时代的必然发展趋势意义:有利于产品的小型化、多功能化和智能化;改变了的传统的控制系统设计思想传统:控制设计思想硬件电路实现控制现代:控制设计思想软件程序输入单片机实现控制4、应用的广泛性及其重要意义3、应用现场环境恶劣

注意:使用时,应根据环境的温度情况选择合适的芯片。30(1)广泛性:微电子时代的必然发展趋势意义:有利于产品的小型单片机的应用领域1、工业自动化方面2、仪器仪表方面3、家用电器方面4、信息和通信产品方面5、军事装备方面31单片机的应用领域31参考书《单片机原理及实用技术》张振荣北京人民邮电出版社《MCS-51系列单片机系统原理与设计》苏凯冶金工业出版社《单片机原理及其接口技术》胡汉才清华大学出版社32参考书《单片机原理及实用技术》张振荣32第二章单片机芯片的硬件结构MCS-51单片机的逻辑结构及信号引脚MCS-51单片机的内部存储器MCS-51单片机并行输入/输出口电路MCS-51单片机时钟电路与时序MCS-51单片机工作方式33第二章单片机芯片的硬件结构MCS-51单片机的逻辑结构及信第一节逻辑结构及信号引脚MCS-51单片机结构框图34第一节逻辑结构及信号引脚MCS-51单片机结构框图34MCS-51单片机芯片内部逻辑结构中央处理器内部数据存储器内部程序存储器定时器/计数器并行I/O口串行口中断控制系统时钟电路位处理器总线35MCS-51单片机芯片内部逻辑结构中央处理器351.中央处理器注意:控制器的时钟脉冲由振荡器OSC电路提供。PC:存放将要执行的指令地址。IR:存放正在执行的指令地址。ID:存放指令码。定时与控制电路:产生时序输出信号和微操作控制信号

控制器:PC、PC加1寄存器、指令寄存器(IR)、指令译码器(ID)、定时与控制电路。ALU:用于进行算术、逻辑运算。ACC:用于存放操作数或操作结果。B:用于存放操作数。PSW:用于存放指令执行后的状态信息。TMP:用于存放中间操作数(对用户不开放)。

运算器:ALU、ACC、B、PSW、TMP1、TMP2。361.中央处理器注意:控制器的时钟脉冲由振荡器OSC电路提供2.内部数据存储器由RAM和RAM地址寄存器组成。用于存放可读写的数据。根据片内ROM的结构,单片机可分为:无ROM型ROM型EPROM型E2PROM型FLASH型3.内部程序存储器由ROM和ROM地址寄存器组成。用于存放程序和原始数据。372.内部数据存储器根据片内ROM的结构,单片机可分为:374.定时器/计数器2个16位(80C51、8051)用于将其定时或计数的结果对单片机进行控制。5.并行I/O口4个8位(P0、P1、P2、P3)用于使单片机和存储器或外设之间并行传送8位数据。6.串行口1个全双工串行口用于单片机和其它数据设备之间的串行数据传送。384.定时器/计数器5.并行I/O口6.串行口387.中断控制系统5个中断源、2级中断

10.总线9.位处理器即布尔处理器。特别适用于控制目的和解决逻辑问题8.时钟电路典型的晶振频率为12MHZ397.中断控制系统10.总线9.位处理器8.时钟电路3MCS-51单片机的信号引脚1.信号引脚介绍40MCS-51单片机的信号引脚1.信号引脚介绍40(1)主电源及时钟引脚(2)控制引脚(3)输入/输出引脚VCC(40脚)、VSS(20脚)XTAL1(19脚)、XTAL2(18脚)RST/VPD(9脚):复位信号/备用电源ALE/PROG(30脚):地址锁存控制信号/编程脉冲PSEN(29脚):外部程序存储器读选通信号EA/VPP(31脚):访问程序存储器控制信号/编程电源P0:8位三态双向I/O口,可驱动8个LSTTL负载P1:8位准双向I/O口,可驱动4个LSTTL负载P2:8位准双向I/O口,可驱动4个LSTTL负载P3:8位准双向I/O口,可驱动4个LSTTL负载41(1)主电源及时钟引脚VCC(40脚)、VSS(22.信号引脚的第二功能-----引脚“复用”可概况为:“一组与三个”一组:P3口三个:9脚—RST/VPD30脚---ALE/PROG31脚----EA/VPP422.信号引脚的第二功能-----引脚“复用”可概况为:第二节内部存储器MCS-51单片机的存储器结构特点(1)数据存储区与程序存储区完全分开,且各有自己的一套系统(2)分为内外存储器43第二节内部存储器MCS-51单片机的存储器结构特点(1)数存储器的配置情况:物理上:片内程序存储器、片外程序存储器片内数据存储器、片外数据存储器逻辑上:片内外统一的64KB的程序存储器片内数据存储器64KB片外数据存储器44存储器的配置情况:逻辑上:片内外统一的64KB的程序存储内部数据存储器物理上分为3块:00H-7FH(0-127)低128字节RAM;80H-FFH(128-255)高128字节RAM同上128字节专用寄存器(SFR)块SFRRAMRAM0FFH80H7FH00H0FFH80H45内部数据存储器SFRRAMRAM0FFH80H7FH00H(1)寄存器区内部数据存储器低128单元按用途可分为3个区域:(2)位寻址区(3)用户RAM区46(1)寄存器区内部数据存储器低128单元(2)位寻(1)寄存器区内部数据存储器低128单元按用途可分为3个区域:4组寄存器组(R0-R7)由PSW中的RS1和RS0位确定当前工作寄存器组两种访问通用寄存器的形式:MOVR0,#09HMOV08H,#09H47(1)寄存器区内部数据存储器低128单元4组寄存器组(3)用户RAM区(2)位寻址区16个RAM单元、128位既可进行字节操作,也可进行位操作两种访问位的形式:SETB0FHSETB21H.7用于存放用户数据或作为堆栈区使用。48(3)用户RAM区(2)位寻址区1内部数据存储器高128单元(SFR)1.专用寄存器简介(1)程序计数器PC16位程序地址寄存器存放下一条要执行的指令地址具有自动加1功能没有地址,不可寻址(2)累加器A8位寄存器存放操作数或结果数据传送中转站作为变址寄存器49内部数据存储器高128单元(SFR)1.专用寄存器简介(3)B寄存器(4)程序状态字PSW8位寄存器主要用于乘除运算A*B=BAA/B=A…B例如:MOVA,#05HMOVB,#03HMULABDIVABAC、OV、P的状态在指令执行过程中自动形成;CY的状态在执行算术和逻辑指令时,可以被硬件或软件置位或清除;F0、RS1、RS0由软件设置。位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OV/P50(3)B寄存器(4)程序状态字PSW8位寄存器例如:MOCY---进位标志位AC---辅助进位标志位F0---用户标志位由用户根据程序执行的需要通过传送指令确定。在位操作中,充当累加器。

如:RLCA在某些逻辑运算中也会影响到进位标志位。

如:ANLC,bit51CY---进位标志位AC---辅助进位标志位F0OV---溢出标志位带符号数加减运算:超出(-128--+127)范围,置位乘法运算:乘积超过255,置位除法运算:除数为0,置位

RS1、RS0---寄存器组选择位用于选择当前工作通用寄存器组有利于程序中保护现场。

例如:MOVPSW,#08HMOVR0,#43H52OV---溢出标志位RS1、RS0---寄存器组选择例:设程序执行前F0=0,RS1RS0=00B,请问机器执行如下程序后MOVA,#0FHADDA,#F8HPSW中各位的状态是什么?答:PSW=C1H

P---奇偶标志位表明累加器中1的个数的奇偶性。=01的个数为偶数;=11的个数为奇数;53例:设程序执行前F0=0,RS1RS0=00B,请问机器执行(5)数据指针DPTR唯一供用户使用的16位寄存器由DPH、DPL拼成可用来存放片内ROM、片外ROM和片外RAM的地址访问外部数据存储器时作地址指针使用

MOVXA,@DPTR访问程序存储器时作为基址寄存器使用

MOVCA,@A+DPTR例如:将片外RAM2000H单元中的数据X,取入累加器。MOVDPTR,#2000HMOVXA,@DPTR54(5)数据指针DPTR唯一供用户使用的16位寄存器例如:2、专用寄存器的字节寻址根据不同的型号,可字节寻址的专用寄存器个数不同。8051、80C51、8031等有21个;8052等有26个。分布不连续。PC不可寻址。只能使用直接寻址方式。552、专用寄存器的字节寻址根据不同的型号,可字节寻址的专用3、专用寄存器的位寻址80C51的位寻址空间:位寻址区(128位)+专用寄存器可位寻址区(83位)=211位563、专用寄存器的位寻址80C51的位寻址空间:56MCS-51的堆栈操作堆栈本身是数据结构范畴内的一种线性表结构在物理上表现为一个特定的存储区域采用LIFO(FILO)的存取规则(1)堆栈的功用现场保护和断点保护数据的临时存放,常用在编程过程中(2)堆栈的开辟堆栈只能开辟在内部数据存储器中的低128字节中。最好设置在用户RAM区(30H-7FH)注意:在编程中尽量少的运用多级子程序嵌套和多重中断57MCS-51的堆栈操作堆栈本身是数据结构范畴内的一种线性表(3)堆栈指示器(SP)功能:用于存放堆栈的栈顶地址。(4)堆栈类型(5)堆栈使用方式自动方式指令方式58(3)堆栈指示器(SP)功能:用于存放堆栈的栈顶地址。(4内部程序存储器80C51中含有4KB的ROM单元作为程序存储器。地址为0000H-0FFFH其中位于存储区前部的43个单元为系统保留区,分为6个特殊功能区。地址为0000H-002AH0000H-0002H为系统启动单元0003H-000AH为外部中断0中断地址区000BH-0012H为定时器/计数器0中断地址区0013H-001AH为外部中断1中断地址区001BH-0022H为定时器/计数器1中断地址区0023H-002AH为串行中断地址区59内部程序存储器80C51中含有4KB的ROM单元作为程序第三节并行输入/输出口电路MCS-51系列共有4个8位并行双向口。分别表示为P0、P1、P2、P3。每个I/O端口内部都有一个8位数据输出锁存器和一个8位数据输入缓冲器。其中四个数据输出锁存器和端口号同名,且为SFR中的一个。60第三节并行输入/输出口电路MCS-51系列共有4个8位1、P0口字节地址80H,位地址80H-87H,可作为地址/数据线,也可作为通用I/O口。A1A2611、P0口字节地址80H,位地址80H-87H,可作为地2、P1口字节地址90H,位地址90H-97H,只可作为通用I/O口。622、P1口字节地址90H,位地址90H-97H,只可作为通用3、P2口字节地址0A0H,位地址0A0H-0A7H,既可作为高8位地址线使用,又可作为通用I/O口使用。一般不作数据传送工作。633、P2口字节地址0A0H,位地址0A0H-0A7H,既4、P3口字节地址0B0H,位地址0B0H-0B7H,只可作为通用I/O口。主要用于第二功能控制逻辑。644、P3口字节地址0B0H,位地址0B0H-0B7H第四节时钟电路与时序(1)振荡脉冲信号的产生什么是时钟电路?

时钟电路就是用来产生单片机工作所需要的时钟信号的电路。1、时钟信号的产生65第四节时钟电路与时序(1)振荡脉冲信号的产生什么是时钟电路(2)MCS-51各时钟信号的产生2、外部脉冲信号的引入注意:振荡电路产生的振荡脉冲并不是直接拿来使用的,而是经分频后再为系统所用的!原因:在多片单片机系统中,为了使单片机之间时钟信号同步。注意:外时钟信号电平持续时间应大于20ns,且脉冲频率应低于12MHZ!66(2)MCS-51各时钟信号的产生2、外部脉冲信号的引入注4个:节拍(P)、状态(S)、机器周期、指令周期MCS-51共有111条指令。按长度分为单字节指令、双字节指令和三字节指令。不同的指令可以在不同的机器周期内完成。时序定时单位

典型指令时序

节拍(P)--振荡脉冲的周期。状态(S)--振荡周期的2倍。机器周期--振荡周期的12倍。指令周期--执行一条指令需要的时间。时序关系:1个机器周期=6个状态=12个振荡周期(节拍)674个:节拍(P)、状态(S)、机器周期、指令周期MCS-516868第五节工作方式1、复位方式和复位电路(1)复位操作功能:

初始化单片机,使其进行工作状态系统重新启动

程序计数器和特殊功能寄存器复位状态注意:复位后,ALE变为低电平,PSEN变为高电平!69第五节工作方式1、复位方式和复位电路(1)复位操作功能:(2)复位信号及其产生片内复位电路在每个机器周期的S5P2时刻对施密特触发器进行采样,以确定是否有复位操作发生。(3)复位方式上电自动复位手动复位70(2)复位信号及其产生片内复位电路在每个机器周期的S52、程序执行方式2个方式:单步执行工作方式

连续执行工作方式(1)单步执行工作方式单片机在控制面板上的单步执行键控制下一条一条地执行用户程序中的指令。利用单片机外部中断功能实现主要用于用户程序调试(2)连续执行工作方式所有单片机都需要的一种工作方式。712、程序执行方式2个方式:单步执行工作方式(1)单步执行工3、低功耗方式(1)待机方式PCON.0-----IDL标志位“1”有效振荡器保持工作,保证中断逻辑、串行口和定时器/计数器电路时钟中断方式退出(2)掉电保护方式PCON.1-----PD标志位“1”有效只保证内部RAM数据不丢失数据转存------“掉电中断”接通备用电源------支持内部RAM数据现实方法:硬件复位方式退出723、低功耗方式(1)待机方式PCON.0--4、EPROM的编程和校验方式EPROM编程:利用特殊的手段将用户程序写入单片机内部的EPROM。校验:对写入的程序代码连续读出校验的过程。8751H片内含有4KB的EPROM,具有编程、校验和保密编程等工作方式。方式RSTPSENEA/VPPALE/PROGP2.7P2.6P2.5P2.4编程10VPP01000禁止10X110XX校验10110000保密位编程10VPP01100734、EPROM的编程和校验方式EPROM编程:利用特殊的手段(1)编程方式(2)程序校验方式(3)加密方式8751一旦完成保密编程以后,用户可以让它自由执行EPROM中的程序,但不能以任何形式读出和对它进行局部修改。74(1)编程方式(2)程序校验方式(3)加密方式87第三章MCS-51单片机指令系统MCS-51单片机指令格式和寻址方式MCS-51单片机指令分类介绍75第三章MCS-51单片机指令系统MCS-51单片机指令格式第一节指令格式和寻址方式1、指令系统概述指令--计算机适用于控制各功能部件完成某一指定动作的指示和命令。指令系统--指令的集合,因机器而异。如:Z80有150条基本指令Intel8080有70条基本指令MCS-51有111条基本指令指令的三种表示形式:二进制形式--直接为CPU执行16进制形式--阅读和书写汇编形式--编写程序76第一节指令格式和寻址方式1、指令系统概述指令--计算机适2、MCS-51单片机指令格式操作码操作数或操作数地址(1)一字节指令(49)

(2)二字节指令(45)(3)三字节指令(17)如:INCDPTR和MOVA,Rn如:MOVA,#data如:MOVDPTR,#data16和MOVdirect,#data[标号:]操作码[操作数1],[操作数2],[操作数3];[注释]772、MCS-51单片机指令格式操作码操作数或操作数地址(1(1)寄存器寻址特点:指令码中含有操作数所在的寄存器号。MCS-51根据该寄存器可找到操作数。范围:通用寄存器R0-R7部分专用寄存器(A、B、DPTR等)(2)直接寻址范围:只限于内部RAM和专用寄存器3、MCS-51单片机寻址方式寻址方式:如何指定操作数的所在单元特点:指令码中含有操作数地址。机器通过该地址寻找操作数。78(1)寄存器寻址特点:指令码中含有操作数所在的寄存器号。M(4)立即寻址特点:指令码中含有操作数。(3)寄存器间接寻址特点:指令码中含有操作数地址所在的寄存器号。机器通过寄存器可找到操作数地址,再根据该地址可找到操作数。范围:内部RAM低128单元(只能使用R0和R1)外部RAM(使用DPTR、R0或R1)例:MOVA,@R079(4)立即寻址特点:指令码中含有操作数。(3)寄存器间接(5)变址寻址特点:操作数地址=基地址+地址偏移量;指令码中隐含存放基地址的寄存器号(PC/DPTR);DPTR/PC中的基地址常常是表格始地址,A中存放偏移量rel。功能:主要用于访问程序存储器中的数据表格。例:MOVA,@A+DPTR80(5)变址寻址特点:操作数地址=基地址+地址偏移量;功能:(6)位寻址特点:操作数是可寻址位,指令码中含有位地址。范围:内部RAM中的20H-2FH位寻址区高128单元中的可位寻址专用寄存器表示方法:直接使用位地址位名称表示方法单元地址加位数表示方法专用寄存器符号加位数的表示方法(7)相对寻址功能:主要用于解决程序中的转移问题特点:目的地址=转移指令地址+转移指令字节数+REL注意:在程序中,相对地址偏移量常用符号表示。81(6)位寻址特点:操作数是可寻址位,指令码中含有位地址。范4、MCS-51单片机寻址方式小结对片内外程序存储器只能使用变址寻址方式内部数据存储器寻址方式灵活外部数据存储器只能使用寄存器间接寻址方式824、MCS-51单片机寻址方式小结对片内外程序存储器只能第二节指令分类介绍指令格式中符号意义说明通用格式:MOV<目的操作数>,<源操作数>;<注释>特点:源操作数和目的操作数都在内部RAM中。1、内部RAM数据传送指令组(16条)(1)立即数传送指令(2)直接型数据传送指令(3)寄存器寻址型数据传送指令(4)寄存器间址型数据传送指令数据传送类指令83第二节指令分类介绍指令格式中符号意义说明通用格式:MOV指令通式:MOVA,#dataMOVRn,#dataMOV@Ri,#dataMOVdirect,#dataMOVDPTR,#data16例如:请编程完成将数据X送到20H单元的操作1.MOVR0,#20HMOV@R0,#X2.MOV20H,#X84指令通式:例如:请编程完成将数据X送到20H单元的操作1.指令通式:MOVA,directMOVdirect,AMOV@Ri,directMOVRn,directMOVdirect2,direct1例如:已知(40H)=X,编程完成将X送到50H单元。1.MOVR0,#50HMOV@R0,40H2.MOV50H,40H85指令通式:例如:已知(40H)=X,编程完成将X送到50H单指令通式:MOVA,RnMOVRn,AMOVdirect,Rn特点:指令码中含有Rn的寄存器号例如:已知R7=X,编程完成将X送到20H单元。1.MOVA,R7MOV20H,A2.MOV20H,R786指令通式:例如:已知R7=X,编程完成将X送到20H单元。1指令通式:MOVA,@RiMOV@Ri,AMOVdirect,@Ri特点:指令码中含有Ri的寄存器号;Ri中应预先放有8位二进制地址。例如:编程完成将20H单元中的数据与30H单元中的数据之间的交换。MOVA,20HMOV20H,30HMOV30H,A87指令通式:例如:编程完成将20H单元中的数据与30H单元中的2、外部RAM数据传送指令组(4条)特点:只能使用间接寻址。助记符为MOVX,且须以累加器A为中介。说明:第1、2条指令可在外部RAM的64K范围内寻址;第3、4条指令能对外部RAM0000H—00FFH范围寻址。指令通式:

MOVXA,@DPTR

MOVX@DPTR,A

MOVXA,@Ri

MOVX@Ri,A882、外部RAM数据传送指令组(4条)特点:只能使用间接寻址。例如:已知外部RAM的88H单元中有一数据X,试编写程序将X传送到外部RAM的1818H单元。MOVR0,#88HMOVDPTR,#1818HMOVXA,@R0MOVX@DPTR,A89例如:已知外部RAM的88H单元中有一数据X,试编写程序将X3、程序存储器数据传送指令组(2条)特点:使用变址寻址。助记符MOVC,也须以累加器A为中介。单向传送。指令通式:

MOVCA,@A+DPTR

MOVCA,@A+PC说明:两条指令均为单字节查表指令;DPTR/PC中存放被查表的初始地址,A中存放被查表的项数。903、程序存储器数据传送指令组(2条)特点:使用变址寻址。助记[例3.1]以查表方法把累加器中的十六进制数转换为ASCII码,并送回累加器中。其查表程序如下:

2000H

HBA:INCA

2001HMOVCA,@A+PC2002HRET2003HDB30H2004HDB31H2005HDB32H……200CHDB39H200DHDB41H200EHDB42H……2012HDB46H91[例3.1]以查表方法把累加器中的十六进制数转换为ASCII例:已知累加器A中有一个0-9范围内的数,试用查表指令编出能查找出该数平方值表的程序。[方法一]以DPTR为基址寄存器查表。MOVDPTR,#2000H

MOVCA,@A+DPTRORG2000HDB0DB1DB4DB9……DB81END92例:已知累加器A中有一个0-9范围内的数,试用查表指令编出能[方法二]以PC为基址寄存器查表。单元地址指令码ORG1FFBH1FFBH2402HADDA,#data

1FFDH83HMOVCA,@A+PC1FFEH80FEHSJMP$2000H00HDB001HDB1DB4DB9……DB81END起始地址=PC当前值+data93[方法二]以PC为基址寄存器查表。起始地址=PC当前值+d4、数据交换指令组(4条)指令通式:XCHA,RnXCHA,directXCHA,@RiXCHDA,@Ri说明:只有累加器A可作目的操作数。这几条指令执行后会影响PSW中的P标志位。最后一条指令用作代码转换。944、数据交换指令组(4条)指令通式:说明:94例二:已知50H中有一个0-9的数,请编程把它变为相应的ASCII码程序。MOVR0,#50HMOVA,#30HXCHDA,@R0MOV@R0,A例一:已知外部RAM的20H单元中有一个数X,内部RAM20H单元中有一个数Y,试编写可以使它们互相交换的程序。MOVR1,#20HMOVXA,@R1XCHA,@R1MOVX@R0,A95例二:已知50H中有一个0-9的数,请编程把它变为相应的AS5、堆栈操作指令组指令通式:说明:均为双字节指令;A和Rn不可直接出现在指令中,

A必须用ACC或它的物理地址(E0H),

Rn必须用它的物理地址(00H-1FH)。PUSHdirectPOPdirect例:利用堆栈作为转存介质编写30H和40H单元中内容的互换。MOVSP,#50HPUSH30HPUSH40HPOP30HPOP40H965、堆栈操作指令组指令通式:说明:PUSH算术运算类指令1、加法指令组(不带CY位加法指令)ADDA,RnADDA,directADDA,@RiADDA,#data注意:(1)目的操作数只能是累加器A。(2)参加运算的两个操作数必须是8位二进制数;操作结果也是一个8位二进制数,且会对PSW中标志位产生影响。(3)若将两个操作数看作带符号数,则根据OV位判断结果是否溢出。97算术运算类指令1、加法指令组(不带CY位加法指令)ADD例一:(A)=0C2H,(R0)=0A9H,执行ADDA,R0指令后,A和PSW中的值是多少?例二:执行下列指令后,A和PSW中的值是多少?MOVA,#5AHADDA,#6BH(A)=6BH,(PSW)=85H(A)=C5H,(PSW)=44H98例一:(A)=0C2H,(R0)=0A9H,执行ADDA,2、带进位加法指令组ADDCA,RnADDCA,directADDCA,@RiADDCA,#data注意:(1)目的操作数只能是累加器A。(2)主要用于多字节加法运算。(3)其中所加的CY中的值是指令执行前的CY值,不是执行中形成的CY值。例一:(A)=85H,(R0)=30H,(31H)=FFH,CY=1,试问CPU执行如下指令后累加器A和CY中的值是多少?(1)ADDCA,R0(2)ADDCA,31H992、带进位加法指令组ADDCA,Rn注意:例一:(A)=例二:两个三字节无符号数相加,被加数放在内部RAM20H-22H单元(低位在前),加数放在内部RAM2AH-2CH单元(低位在前)。编程序实现,将它们计算的结果放在被加数单元中。MOVR0,#20HMOVR1,#2AHMOVR7,#03HCLRCLOOP:MOVA,@R0ADDCA,@R1MOV@R0,AINCR0INCR1DJNZR7,LOOPCLRAADDCA,#00HMOV@R0,A100例二:两个三字节无符号数相加,被加数放在内部RAM20H-23、带借位减法指令组SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#data注意:(1)在单片机内部,减法操作是在控制器控制下采用补码加法来实现的。在实际应用中,可按二进制减法法则进行。(2)MCS-51中没有不带借位的减法指令。(3)进行不带借位减法运算时,可结合“CLRC”指令应用。(4)若将两个操作数看作带符号数,则根据OV位判断结果是否溢出。1013、带借位减法指令组SUBBA,Rn注意:101例二:判断执行如下程序后累加器A和PSW中的值是多少?CLRCMOVA,#52HSUBBA,#0B4H例一:(A)=0C9H,(R2)=54H,(CY)=1。试问CPU执行指令SUBBA,R2后累加器A和PSW中的值是多少?(A)=74H,(PSW)=04H(A)=9EH,(PSW)=C5H102例二:判断执行如下程序后累加器A和PSW中的值是多少?例一:4、加1指令组INCAINCRnINCdirectINC@RiINCDPTR例一:(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。执行下列指令后,各寄存器及单元中的结果是多少?是否改变了PSW的状态?INCAINCR3INC30HINC@R0注意:只有INCA指令可以影响PSW中的奇偶标志位P,其它指令不会影响标志位。1034、加1指令组INCA例一:(A)=0FFH,(R3)5、减1指令组DECADECRnDECdirectDEC@Ri注意:只有DECA指令可以影响PSW中的奇偶标志位P,其它指令不会影响标志位。1045、减1指令组DECA注意:1046、乘除指令组MULABDIVAB注意:执行这两条指令,进位标志CY总是被清“0”例一:已知两个8位无符号乘数分别放在30H和31H单元中,试编出令它们相乘并把积的低8位放入32H单元,高8位放入33H单元的程序。MOVR0,#30HMOVA,@R0INCR0MOVB,@R0MULABINCR0MOV@R0,AINCR0MOV@R0,B1056、乘除指令组MULAB注意:例一:已知两个8位无符号7、十进制调整指令DAA功能:用于对BCD码十进制数加法运算的结果进行修正。注意:(1)DA指令不影响溢出标志。(2)使用中通常紧跟在加法指令之后,不能跟在减法指令之后。(3)借助进位标志可实现多位BCD数加法结果的调整。例一:试写出能完成85+59的BCD加法程序,并对其工作过程进行分析。MOVA,#85HADDA,#59HDAAEND1067、十进制调整指令DAA功能:用于对BCD码十进制数加例二:已知R0和R1中分别存有BCD被减数91和BCD减数36,试编程求它们的BCD差,并存入R3中。CLRCMOVA,#9AHSUBBA,R1ADDA,R0DAAMOVR3,ACLRCEND步骤:(1)求BCD减数的补数;(2)BCD被减数加减数的补数;(3)对和进行十进制加法调整。107例二:已知R0和R1中分别存有BCD被减数91和BCD减数3例三:4位压缩BCD数的相加程序。设一个加数存放在30H、31H单元,另一个加数存放在32H、33H单元,试编程序将和存放到30H、31H单元。MOVR0,#30HMOVR1,#32HMOVA,@R0ADDA,@R1DAAMOV@R0,AINCR0INCR1MOVA,@R0ADDCA,@R1DAAMOV@R0,A108例三:4位压缩BCD数的相加程序。设一个加数存放在30H、3逻辑运算及移位类指令1、逻辑与运算指令组ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data功能:主要用于将某存储单元或累加器A中某几位清“0”。例:已知R0中有一个ASCII码,试通过编程把它变为BCD码。MOVA,R0ANLA,#0FHMOVR0,A109逻辑运算及移位类指令1、逻辑与运算指令组ANLA,Rn功2、逻辑或运算指令组ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data功能:主要用于将某存储单元或累加器A中某几位置“1”。例:设(A)=0AAH,P1=0FFH,试通过编程把累加器A中的低4位送入P1口低4位,而P1口高4位不变。MOVR0,AANLA,#0FHANLP1,#0F0HORLP1,AMOVA,R01102、逻辑或运算指令组ORLA,Rn功能:例:设(A)=03、逻辑异或运算指令组XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data功能:主要用于将某存储单元或累加器A中某几位置取反。例:已知外部RAM30H中有一数6EH,试编写程序令其高4位不变,低4位取反。MOVR0,#30HMOVXA,@R0XRLA,#0FHMOVX@P0,A1113、逻辑异或运算指令组XRLA,Rn功能:例:已知外部R4、累加器清零和取反指令组CLRACPLA注意:其中CPLA取反指令常用于对某个存储单元或某个存储区域中带符号数的求补。例:已知30H单元中有一负数X,试写出求X的补码的程序。MOVA,#30HCPLAINCAMOV30H,A1124、累加器清零和取反指令组CLRA注意:例:已知30H单5、移位指令组RLARRARLCARRCASWAPAA7A0A7A0A7A0CYA7A0CYA7-A4A3-A01135、移位指令组RLAA7A例一:已知30H、31单元中有一个16位的二进制数(30H单元为低8位),请通过编程令其扩大二倍。CPLCMOVR1,#30HMOVA,@R1RLCAMOV@R1,AINCR1MOVA,@R1RLCAMOV@R1,A114例一:已知30H、31单元中有一个16位的二进制数(30H单例二:在43H、44H单元中有两个BCD数,请通过编程将它们紧缩成一个字节并放入43H单元中(其中43H单元中的BCD数做为紧缩BCD数的高位)。MOVR1,#43HMOVA,@R1SWAPAINCR1ORLA,@R1MOV43H,A115例二:在43H、44H单元中有两个BCD数,请通过编程将它们控制转移类指令1、无条件转移指令组2、条件转移指令组3、子程序调用与返回指令组4、空操作指令116控制转移类指令1、无条件转移指令组2、条件转移指令组3、子程控制转移类指令LJMPaddr16AJMPaddr11SJMPrelJMP@A+DPTR1、无条件转移指令组特点:(1)不会影响PSW中的标志位。(2)指令的操作对象是PC的地址。(3)第2、3条指令是相对转移指令,在子程序中很有用。117控制转移类指令LJMPaddr161、无条件转移指令长转移指令

LJMPaddr16;(PC)addr16例:已知某单片机监控程序起始地址为A080H,试问用什么办法可使单片机开机后自动执行监控程序。答:为使开机后能自动转入A080H处执行,应在0000H处存放一条如下指令:LJMP0A080H说明:(1)把指令码中的addr16送入PC,使机器执行下条指令时无条件转移到addr16处执行程序。(2)可以在64KB范围内转移。(3)一般情况,addr16可用符号地址表示。118长转移指令LJMPaddr16;(PC)a绝对转移指令

AJMPaddr11;(PC)(PC)+2,(PC10-0)addr11例:已知指令KWR:AJMPaddr11中,KWR=3100H,addr11=10110100101B,则转移的目标地址是多少?答:程序转移到35A5H处执行。注意:AJMP指令的目标转移地址不是与AJMP指令地址在同一个2KB区域,而是应与AJMP指令取出后的PC地址在同一个2KB区域。说明:(1)(PC)(PC)+2,确定程序转移的页面地址。(2)(PC10-0)addr11,确定程序转移的页内地址。119绝对转移指令AJMPaddr11;(PC)短转移指令

SJMPrel;(PC)(PC)+2,(PC)(PC)+rel1、根据偏移量计算转移的目标地址:

例一:835AHSJMP35H

例二:835AHSJMP0E7H答:目标地址=835AH+02H+35H=8391H答:目标地址=835AH+02H-19H=8343H说明:(1)rel是一个8位的带符号偏移字节。(2)rel的取值范围是-128到+127。(3)目的地址=(PC)+2+rel。120短转移指令SJMPrel;(PC)(PC)2、根据目标地址计算偏移量:(向高地址转移)rel=目标地址-源地址-2(向低地址转移)rel=(目标地址-源地址-2)补=FEH-(源地址-目标地址)1000H7401HSTAR:MOVA,#01H1002HF8HMOVR0,A1003H90CF01HLOOP:MOVDPTR,#0CF01H…1017H80relSJMPSTART…END答:rel=E7H。目标地址的转移范围是F99H-1098H例:有下列程序,请计算SJMPSTAR指令码中的rel,并分析目标地址的转移范围。1212、根据目标地址计算偏移量:1000H7401H变址转移指令

JMP@A+DPTR;(PC)((A)+(DPTR))说明:(1)DPTR中存放目标转移地址的基地址,常常是一张转移指令表的起始地址。(2)A中存放表的偏移量。(3)主要用于程序的多分支转移。122变址转移指令JMP@A+DPTR;(PC)例:已知累加器A中放有待处理命令,编号0-4,程序存储器中放有起始地址为PMTB的三字节长转移指令表。试编一程序能使机器按照累加器A中的命令编号转去执行相应的命令程序。CM:MOVR1,ARLAADDA,R1MOVDPTR,#PMTBJMP@A+DPTRPMTB:LJMPPM0LJMPPM1LJMPPM2LJMPPM3LJMPPM4…PM0:…PM4:…123例:已知累加器A中放有待处理命令,编号0-4,程序存储器中放控制转移类指令2、条件转移指令组累加器判零转移指令数值比较转移指令减1条件转移指令124控制转移类指令2、条件转移指令组累加器判零转移指令124应用:(1)对于无符号数的比较,可直接根据执行后CY位来判断。(2)对于带符号数的比较,先要确定符号,再判断。指令操作情况:(1)若左操作数=右操作数,则程序顺序执行(即:(PC)(PC)+3);进位标志清“0”。(2)若左操作数>右操作数,则程序转移(即:(PC)(PC)+3+rel);进位标志清“0”。(3)若左操作数<右操作数,则程序转移(即:(PC)(PC)+3+rel);进位标志置“1”。125应用:指令操作情况:125控制转移类指令3、子程序调用与返回指令组绝对调用指令长调用指令返回指令126控制转移类指令3、子程序调用与返回指令组绝对调用指令126绝对调用指令

ACALLaddr11;(PC)(PC)+2(SP)(SP)+1,((SP))(PC7-0)(SP)(SP)+1,((SP))(PC15-8)(PC10-0)addr11说明:(1)与绝对转移指令类似,要求该指令的下一条指令的第一个字节与子程序的入口地址必须在同一个2KB存储区内。(2)指令操作过程可分为两部分:断点保护、构造目的地址。(3)addr11可用符号地址(标号)表示。127绝对调用指令ACALLaddr11;(PC)例一:8100HACALL48FH

先将PC加2:(PC)=8100H+2=1000000100000010B再替换低11位地址:(PC)=1000010010001111B=848FH48FH先将PC加2:(PC)=8F00H+2=1000111100000010B再替换低11位地址:(PC)=1000110010001111B=8C8FH48FH例二:8F00HACALL48FH128例一:8100HACALL48FH先将P长调用指令

LCALLaddr16;(PC)(PC)+3(SP)(SP)+1,((SP))(PC7-0)(SP)(SP)+1,((SP))(PC15-8)(PC)addr16说明:(1)主程序和被调用的子程序可以任意地放在64KB范围内。(2)指令操作过程可分为两部分:断点保护、构造目的地址。(3)addr16可用符号地址(标号)表示。129长调用指令LCALLaddr16;(PC)(例:已知:MA=0500H。试问执行如下指令MOVSP,#70HMA:LCALL8192HSP中数据为多少?堆栈中数据如何变化?PC中的内容是什么?答:(SP)=72H,(71H)=03H,(72H)=05H,(PC)=8192H130例:已知:MA=0500H。试问执行如下指令答:(SP)=7返回指令

RET;(PC15-8)((SP)),(SP)(SP)-1(PC7-0)((SP)),(SP)(SP)-1RETI;(PC15-8)((SP)),(SP)(SP)-1(PC7-0)((SP)),(SP)(SP)-1说明:(1)第1条指令用于子程序返回,只能用于子程序末尾。(2)第2条指令用于中断服务程序返回,只能用于中断服务程序的末尾。(3)机器执行RETI指令后,还将清除相应中断优先级状态位,以允许单片机响应低优先级的中断。131返回指令RET;(PC15-8)((SP))例:试利用子程序技术编出令20H-2AH、30H-3EH和40H-4FH三个子域清零的程序。MOVSP,#30HMOVR0,#20HMOVR2,#0BHACALLZEROMOVR0,#30HMOVR2,#0FHACALLZEROMOVR0,#40HMOVR2,#10HACALLZEROSJMP$ZERO:MOV@R0,#00HINCR0DJNZR2,ZERORETEND132例:试利用子程序技术编出令20H-2AH、30H-3EH和4控制转移类指令4、空操作指令NOP;(PC)(PC)+1说明:用于程序的等待或时间的延迟。133控制转移类指令4、空操作指令NOP;(PC)(P位操作类指令1、位传送指令组MOVC,bitMOVbit,C说明:不能进行位地址与位地址值之间的传送。例:将20H位的内容与5AH位相交换,并不改变CY的值。MOV10H,CMOVC,20HMOV21H,CMOVC,5AHMOV20H,CMOVC,21HMOV5AH,C134位操作类指令1、位传送指令组MOVC,bit说明:不能2、位置位复位指令组SETBCSETBbitCLRCCLRbit说明:置位指令是位操作独有的。3、位运算指令组ANLC,bitANLC,/bitORLC,bitORLC,/bitCPLCCPLbit1352、位置位复位指令组SETBC说明:置位指令是位操作独例:试编程完成位地址为10H、11H中的位异或操作,结果存入12H位。MOVC,11HANLC,/10HMOV12H,CMOVC,10HANLC,/11HORLC,12HMOV12H,C136例:试编程完成位地址为10H、11H中的位异或操作,结果存入JCrel;CY位为1转移JNCrel;CY位为0转移JBbit,rel;bit位为1转移JNBbit,rel;bit位为0转移JBCbit,rel;bit位为1转移,并将bit清零4、位控制转移转移指令组例一:已知内部RAM的50H和51H单元中各有一个无符号8位二进制,且两数不同。试编程比较它们的大小,并把大数送到52H单元。MOVA,50HCJNEA,51H,LOOPLOOP:JNCLOOP1MOVA,51HLOOP1:MOV52H,A137JCrel;CY位为1转移4、位控制转例二:已知外部RAM的2000H开始有一个输入数据缓冲区,该缓冲区的数据以回车符CR(ASCII码为0DH)为结束标志,试编写一个程序能把正数送入从30H(片内RAM)开始的正数区,并把负数送入40H开始的负数区。(数据指针及跳转指令应用)MOVDPTR,#2000HMOVR0,#30HMOVR1,#40HNEXT:MOVXA,@DPTRCJNEA,#0DH,COMPSJMPDONECOMP:JBACC.7,LOOPMOV@R0,AINCR0INCDPTRSJMPNEXTLOOP:MOV@R1,AINCR1INCDPTRSJMPNEXTDONE:RETEND138例二:已知外部RAM的2000H开始有一个输入数据缓冲区,该I/O访问指令使用说明对P0-P3口的访问特点:用“MOV”指令既可以进行字节访问,又可以进行位访问。1、读引脚数据口或口线输入指令均属于读引脚的操作。…ORLP1,#03HMOVC,P1.0…MOVC,P1.2例:利用P1口的P1.0和P1.1进行外界信号的输入。注意:在使用输入指令前应先用指令把口线引脚设置为高电平。139I/O访问指令使用说明对P0-P3口的访问特点:用“MOV”2、读锁存器数据对口或口线执行“读-修改-

温馨提示

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

评论

0/150

提交评论