单片机原理及接口技术课件_第1页
单片机原理及接口技术课件_第2页
单片机原理及接口技术课件_第3页
单片机原理及接口技术课件_第4页
单片机原理及接口技术课件_第5页
已阅读5页,还剩723页未读 继续免费阅读

下载本文档

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

文档简介

参考资料1,《单片机实用教程》

----胡健兵器工业出版社20012,《单片机应用程序设计基础》

----周行慈北京航空航天大学出版社19913,《单片机基础》----李广弟北京航空航天大学出版社20014,《单片机原理及接口技术》----李朝青北京航空航天大学出版社1999第1页/共364页参考资料1,《单片机实用教程》第1页/共364页1本课主要内容及课时安排

总讲课课时学时第一章:计算机基础知识(1课时)主要讲述计算机的基础知识,包括各种数制相互转换、带符号二进制的编码机器运算;单片机的概念、发展状况、应用领域及嵌入式系统的概念第二章:MCS-51单片机结构和原理(3课时)

介绍51单片机内部结构,重点介绍单片机的存储组织、并行IO接口、时钟电路及典型CPU时序,最后介绍单片机的工作方式第三章:MCS-51单片机的指令系统和C51语言(4课时)

51单片机的111条指令的分类、寻址方式、伪指令及使用中的注意事项第四章:汇编语言程序设计基础(0课时)介绍汇编语言程序结构,汇编语言的编辑与汇编第2页/共364页本课主要内容及课时安排总讲课2第五章:MCS-51中断系统(2课时)主要介绍单片机中的中断控制、中断处理过程以及外部中断的应用第六章:MCS-51单片机的定时/计数器(2课时)

介绍单片机内部的定时与计数功能、相关寄存器以及定时器的4种工作方式;最后介绍定时器的综合应用第七章:MCS-51单片机系统扩展(2课时)先对51单片机系统扩展进行概述,然后分别介绍程序存储器的扩展、数据存储器的扩展、IO接口的扩展并举例说明第八章:人-机通道配置与接口技术(0课时) 介绍单片机的显示接口技术(LED)和键盘扫描/动态显示接口电路。第3页/共364页第五章:MCS-51中断系统(2课时)第3页/共3643第九章:系统前向、后向通道配置及接口技术(0课时)主要对51单片机中的A/D、D/A转换器的原理、技术指标及应用进行设计举例第十章:串行接口技术(2课时)介绍单片机与外界进行通信的串口技术,主要说明其串行口工作方式,单片机与PC通信的方法。最后举实例进行说明第十一章:单片机应用系统设计(8课时)主要是从应用系统的设计过程、硬件抗干扰技术、故障及自恢复程序设计等三方面来介绍单片机应用系统设计第4页/共364页第4页/共364页4第1章计算机基础知识1.1数制与编码1.2单片机与嵌入式系统第5页/共364页第1章计算机基础知识1.1数制与编码第5页/共3651.2单片机与嵌入式系统1.2.1单片机的概念单片机(SingleChip-Microcomputer)又称为微控制器(Microcomputer),其最基本的结构是将CPU和计算机外围功能单元,如存储器、IO口、定时器/计数器、中断系统等集成在一个芯片上构成的。虽然单片机只是一个芯片,但无论从组成还是功能上看,它都具有了微机系统的特征。第6页/共364页1.2单片机与嵌入式系统1.2.1单片机的概念第6页61.2.2单片机的发展

1971年微处理器研制成功。1974年,美国FairChild公司研制出世界上第一台单片机微型计算机F8。该机由两块集成电路芯片组成,具有与众不同的指令系统,深受民用电器及仪器仪表领域的欢迎和重视。从此,单片机开始了迅速发展,应用领域也在不断扩大。

1976年INTEL公司推出了MCS-48系列的8位单片微型计算机,它以体积小、功能全、价格低等优点,赢得了广泛的应用,为单片机的发展奠定了基础。成为单片机发展过程中的一个重要阶段。代表产品有INTLEL公司的MCS-51系列单片机,MOTOROLA公司的MC6801,MC6802系列机,zilog公司的Z-8系列机,TI公司的TMS7000系列等。此后,又在8位单片机的基础上,发展了16位单片机。目前,单片机正朝着高性能和多品种方向发展那,但以MCS-51为主的8位单片机仍然占单片机的主导地位。单片机的应用从根本上改变了传统的控制系统的设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已经使用单片机通过软件的方式实现了。这种由软件取代硬件的并能提高系统性能的控制技术,称之为微控制技术。随着单片机应用的推广和普及,微控制技术必将不断发展,日益完善,更加充实。第7页/共364页1.2.2单片机的发展第7页/共364页71.2.3单片机的应用领域

单片机具有体积小、可靠性高、功能强、灵活方便等优点,故可以广泛用于国民经济的各个领域,对各行各业的技术改造和产品更新换代起到了推动作用。从应用规模来分,单片机应用系统常分为简单应用系统、常规应用系统和高级应用系统三类。其中,简单应用系统是指它在家用电器或仪器仪表中的应用,其特点是没有人机对话功能,程序和运行参数均可以固化在ROM中。常规应用系统作用于过程控制,通常配有一个键盘和若干个IO端口,用以实现对被控对象进行监视和控制;高级应用系统是指单片机在分布式计算机系统或计算机网络中的应用;在这类应用系统中,单片机通常用作前置(下位)机,而后台(上位)机一般是一台系统机或网络工作站。第8页/共364页1.2.3单片机的应用领域第8页/共364页8(1)单片机在直接数字控制系统中的应用人工监督给定值测量值反多路开关生产过程多路开关A/D检测元件单片机D/A

…第9页/共364页(1)单片机在直接数字控制系统中的应用人工监督反多路开关生产9(2)单片机在分布式控制系统中的应用厂级管理计算机商品信息市场信息生产信息

车间监督计算机(scc)

车间监督计算机(scc)

设备控制级DDC

设备控制级DDC

设备控制级DDC

设备控制级DDC

过程A

过程N

过程A

过程N……………MIS级SCC级DDC级第10页/共364页(2)单片机在分布式控制系统中的应用厂级管理计算机商品信息市101.2.4嵌入式系统

所谓嵌入式系统,就是以嵌入式应用为目的的计算机系统。由于被嵌入对象的体系结构、应用环境要求不同,因此嵌入式系统也有很多类型。主要分为两类:一类是独立使用的计算机系统;另一类是嵌入式计算机系统。第11页/共364页1.2.4嵌入式系统第11页/共364页11第2章MCS-51单片机结构和原理2.1单片机内部组成及引脚功能2.2布尔处理机2.3存储器组织2.4并口IO口电路结构及应用特性2.5时钟电路与CPU时序2.6MCS-51单片机工作方式第12页/共364页第2章MCS-51单片机结构和原理2.1单片机内部组122.1单片机内部组成及引脚功能

MCS-51系列单片机有三种基本产品:8051、8751和8031,它们具有相同结构和性能,唯一差别就是内部程序存储器有所不同。其中8051是ROM型单片机,内涵4KB掩膜ROM;8751片内含有4KB的EPROM;而8031片内无程序程序存储器。MCS-51的典型产品是8051,所以本章将以8051为例对单片机的结构和原理进行介绍。第13页/共364页2.1单片机内部组成及引脚功能第132.1MCS-51单片机内部结构

时钟电路4KROM程序存储器256BRAM数据存储器2X16位定时/计数器CPU处理器并行接口串行接口中断系统T0T1内总线/INT0/INT1P0P1P2P3TXDRXD图2-1MCS-51单片机结构框图第14页/共364页2.1MCS-51单片机内部结构14MCS-51单片机的主要性能和特点微处理器:一个8位的微处理器。包括以下两部分:

(1)运算器ALU:进行算术或逻辑运算的部件;(2)控制器:用来控制计算机工作的部件;内部数据存储器RAM:256B(128B的RAM+21B的SFR);内部程序存储器ROM(以8051为例):4K的存储容量;定时/计数器:2个16位的定时/计数器;8位并行输入输出端口:P0、P1、P2和P3均可作输入输出口;串行口:全双工的端口(RXD:接收端,TXD发送端);中断控制系统:设有5个中断源(/INT0,/INT1,T0,T1,串行口中断);时钟电路:内部有时钟电路,但需要外接石英晶体和微调电容,时钟电路为单片机时钟脉冲序列;第15页/共364页MCS-51单片机的主要性能和特点微处理器:一个8位的微处152.1.2MCS-51的引脚功能MCS-51采用40引脚DIP封装形式VCCRSTXTAL1

XTAL2/EA/PSENALEP3口RXDTXD/INT0/INT1T0T1/WR/RDGND8051P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD/P3.010TXD/P3.111/INT0/P3.212/INT1/P3.313T0/P3.414T1/P3.515/WR/P3.616/RD/P3.717XTAL218XTAL119VSS2040VCC39P0.0/A0/D038P0.1/A1/D137P0.2/A2/D236P0.3/A3/D335P0.4/A4/D434P0.5/A5/D533P0.6/A6/D632P0.7/A7/D731/EA30ALE29/PSEN28P2.7/A1527P2.6/A1426P2.5/A1325P2.4/A1224P2.3/A1123P2.2/A1022P2.1/A921P2.0/A830pF30pFXTAL1XTAL2P0P1P210uF8.2KRST/VPDVCCVSS图2-2MCS-51单片机引脚图及逻辑图第16页/共364页2.1.2MCS-51的引脚功能MCS-51采用40引脚D16MCS-51单片机的引脚定义1,主电源引脚:Vcc(+5V---40脚)和Vss(GND20脚);2,外接晶体引脚:XTAL1(19脚)、XTAL2(18脚),只要在这两脚之间接入一个晶体震荡器,单片机就可以以此晶体的频率开始工作。常用的晶体频率有0-24M,频率越高,单片机的工作速度就越快,但单片机的功耗就要增加。3,控制或与电源复用引脚:RST/Vpd(9脚):在系统上电震荡器开始工作时,在内部加在此引脚上有一个两个时钟周期的高电平使单片机复位。但为了使系统复位可靠,建议外加一个上电复位电路,延长复位的时间。当单片机掉点时,此引脚可以接入备用电源向单片机内部的RAM供电,以防止RAM中的数据丢失。第17页/共364页MCS-51单片机的引脚定义第17页/共364页17ALE/PROG(30脚):低8位地址锁存器使能输出端。当CPU访问外部存储器时,ALE可向低8位地址锁存器输出所存控制信号;当不访问外部存储器时,ALE端仍以时钟振荡频率的1/6固定的输出正脉冲。对于EPROM型的单片机,此脚还是用于写程序时,输入编程脉冲。/PSEN(29脚):外部程序程序存储器的选通信号。当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲。注意,访问外部数据存储器时,此信号无效。/EA/Vdd(31脚):外部程序存储器的选择端控制端:当此脚加入“1”电平是,单片机使用内部的程序存储器;当EA加入低电平时,系统只使用外部的程序存储器。但要特别注意:如果EA=1既使用单片机内部的程序存储器时,如果程序计数器PC的值超过0FFFH时,单片机将自动转向外部程序存储器1000H开始的单元。第18页/共364页ALE/PROG(30脚):低8位地址锁存器使能输出端。当C184,并行输入输出端口引脚(P0-P3)P0.0-P0.7P0端口线(39-32脚):输出能力最强的端口,可以带动8个TTL负载。驱动一个MOS负载时,应接一个10K左右的上拉电阻。如果系统使用外接存储器时,该口还作为地址(低八位)总线和数据总线,注意在这种情况下,P0口就不能通用的I/O端口。P1.0-P1.7P1端口线(1–8脚):是一个带内部上拉电阻的8位准双向IO端口。P2.0–P2.7P2端口线(21–28脚):是一个带内部上拉电阻的8位准双向IO端口。除了做通用I/O端口外,当系统使用外接存储器时,该口还作为地址(高八位)总线,在这种情况下,P0口就不能通用的I/O端口。负载能力为4个TTL。第19页/共364页4,并行输入输出端口引脚(P0-P3)第19页/共364页19P3.0–P3.7P3端口线(10–17脚):

P3口除了做通用的I/O端口外,同时它还有第二功能,负载能力为4个TTL。

P3口第二功能表端口定义说明端口定义说明P3.0RXD串行数据输入口P3.4T0计数器0外部输入信号P3.1TXD串行数据输出口P3.5T1计数器1外部输入信号P3.2INT0外部中断0输入口P3.6/WR外部数据存储器写信号P3.3INT1外部中断1输入口P3.7/RD外部数据存储器读信号表2-1P3口功能表第20页/共364页P3.0–P3.7P3端口线(10–17脚):端202.2布尔处理机

前面已经讲到,单片机主要用于各种控制,而开关量控制又是单片机控制的主要对象,作为不同计算机CPU只能按字或字节进行操作,对于简单的个别开关量进行控制却显得不那么方便,而让MCS-51骄傲的正是它能够有效的解决了位的控制。

MCS-51片内还有一个性能优异的位处理器,也就是说MCS-51实际上又是一个完整而独立的1位单片机,即布尔处理机。它有自己的CPU、位寄存器、位累加器、IO口和指令系统。MCS-51单片机对于位操作(布尔处理),有置位、复位、取反、测试转移、传送、逻辑与和逻辑或运算等。把8位微型机和布尔处理机结合在一起是微机技术上的一个突破。布尔处理机在开关量决策、逻辑电路仿真和实时控制方面非常有效、而8位微型机在数据采集及处理、数值运算方面有明显的优势。在MCS-51单片机中,8位微型机和布尔处理机的硬件资源是复合在一起的,二者相辅相成。第21页/共364页2.2布尔处理机前面已经讲到,单212.3存储器组织MCS-51存储器组织结构与一般的微机不同。一般微机通常是程序和数据共用一个存储空间,属于“冯诺依曼”结构。而MCS-51单片机则把程序存储空间和数据存储空间严格区分开来,属于“哈佛”结构。2.3.1MCS-51存储器特点存储器中物理结构上分成四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。从用户使用的角度看,即从逻辑上考虑,则有三个存储空间:片内外统一编址的64K程序存储地址空间、256B的片内数据存储器地址空间及片外数据存储器地址空间。第22页/共364页2.3存储器组织MCS-51存22外部ROM(4KB)/EA=0内部ROM(4KB)/EA=1特殊功能寄存器SFR内部128RAM外部RAM64KBFFFFH0000HFFH80H7FH00HFFFFH1000H外部ROM(60KB)/EA=0/10FFFH0000H0FFFH0000H/PSEN/WR/RD

(a)内、外程序存储器(b)内部数据存储器

(c)外部数据存储器图2-38051单片机存储组织CPU在访问三个不同的逻辑空间时,通过采用不同的形式的指令(访问程序存储器使用MOVC指令、访问片内数据存储器使用MOV指令、访问片外数据存储器使用MOVX指令),来产生相应的存储器选通信号。第23页/共364页外部内部特殊功能内部外部FFFFH0000HFFH80H7F232.3.2片内数据存储器

数据存储器用于存放各种运算的中间结果,用作缓冲和数据暂存,以及设置特征标志等。8051的片内数据存储器空间较小,仅用8位地址寻址,最大寻址范围为256个单元,按使用情况不同可以分为低128B单元和高128B单元。其中低128B单元为真正的RAM存储器,高128B单元是特殊功能寄存器区。第24页/共364页2.3.2片内数据存储器第24页/共364页24位寻址区3区2区1区0区堆栈区08H07H00H7FH30H2FH20H1FH18H17H10H0FH四个工作寄存器区每个区中有R0-R7八个工作寄存器通用的RAM区地址:30H-7FH位寻址区16个单元20H-2FH,共有128可寻址位个位。位地址:00H-7FH注意:位地址与字节地址的区别整个片内RAM分布如下图:

低128B单元图2-4片内RAM低128位存储器的配置第25页/共364页位寻址区3区2区1区0区堆栈区08H7FH30H20H18H25高128B单元SFR高128B低128B0FFH80H7FH00H特殊功能寄存器SFR在片内RAM中的位置BACCPSWIPP3IEP2SBUFSCONP1TH1TH0TL1TL0TMODTCONPCONDPHDPLSPP0FFHF0HE0HD0HB8HB0HA8HA0H99H98H90H8DH8CH8BH89H8AH88H87H83H82H81H80H图2-5片内RAM高128位存储器的配置第26页/共364页高128B单元SFR低128B0FFH80H00H特殊功能寄261.在低128B的RAM存储单元中又可划分为:通用寄存器区、可位寻址区、用户存储数据堆栈区。(1)通用寄存器区

00H-1FH共32个单元为通用寄存器区,分四组,每组有8个8位的寄存器R0-R7。

CPU当前使用的工作寄存器是由程序状态字(PSW)的RS1和RS0设置决定的。表2-2通用寄存器R0-R7的地址表0区(RS1=0,RS0=0)1区(RS1=0,RS0=1)2区(RS1=1,RS0=0)3区(RS1=1,RS0=1)对应RAM地址寄存器对应RAM地址寄存器对应RAM地址寄存器对应RAM地址寄存器00HR008HR010HR018HR001HR109HR111HR119HR102HR20AHR212HR21AHR203HR30BHR313HR31BHR304HR40CHR414HR41CHR405HR50DHR515HR51DHR506HR60EHR616HR61EHR607HR70FHR717HR71FHR7第27页/共364页1.在低128B的RAM存储单元中又可划分为:通用寄存器区27(2)位寻址区内部的RAM的20H-2FH为位寻址区。这16个单元的每一位都有一个地址,称为位地址。它们占据位地址空间的00H-7FH,这每一位都可以作为一个软件触发器,用于存放各种程序标志、位控制变量。7F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837262524232221202F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002FH20H字节地址表2-3RAM区位地址分配表第28页/共364页(2)位寻址区7F7E7D7C7B7A7978777675728(3)用户RAM区

30H-7FH为真正的数据缓冲区,可以用来暂存用户数据或当作堆栈使用。在微型机中,堆栈是在内存RAM中开辟一个特定的存储区,专门用来暂时存放数据或断点地址,并按照“先进后出,后进先出”的原则进行操作。

MCS-51单片机的堆栈,是在片内RAM低128B中开辟的一个专用区(一般选择30H-7FH作为栈区)。堆栈的一端是固定的,称为栈底;另一端是浮动的,称为栈顶。当堆栈中没有数据时,栈顶与栈底相重合。当数据进栈时,栈顶会自动地向地址递增的方向变化。一般把堆栈中的数据称为元素,最后进栈的那个元素所在地就是栈顶。由于堆栈元素的存入和取出必须遵循FILO和LIFO的原则,因此堆栈的操作总是对栈顶进行的。RAM08H07H栈顶7FH栈底…………图2-6堆栈示意图第29页/共364页(3)用户RAM区RAM08H栈顶7FH栈底…………图2-6292.片内高128B数据存储器

单片机内部的I/O口锁存器、串行口数据缓冲器、定时器/计数器以及各种控制寄存器和状态寄存器等统称为特殊功能寄存器SFR(SpecialFunctionRegister)它共有21个SFR,它们离散地分布在片内RAM地址为80H-FFH的高地址区域,且每一个SFR都有一个字节地址,并定义了符号名,其地址分布见表:第30页/共364页2.片内高128B数据存储器单片机内部的30表2-4特殊功能寄存器SFR地址表第31页/共364页表2-4特殊功能寄存器SFR地址表第31页/共364页31

下面简单介绍部分SFR的功能,其余的SFR将在后续章节中陆续介绍:(1)累加器ACC

累加器ACC是8位寄存器,是最重要的特殊功能寄存器,许多指令的操作数取自ACC,大部分运算结果也存放在ACC中。在指令系统中,ACC是助记符是A。(2)寄存器B寄存器B是8位的寄存器。主要用于乘法和除法操作指令。对于其他指令,寄存器B可以作为一般的数据寄存器使用。(3)堆栈指针SP堆栈指针SP是一个8位的寄存器,用它存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指向的单元;出栈时,则将SP所指向单元的内容弹出,然后SP自动减1.因此,SP总是指向栈顶。(4)程序状态字PSWPSW是8位寄存器,用于寄存程序运行的状态信息。其中有些位(如CY,AC,OV等)的状态是根据程序执行结果由硬件自动设置的,而有些位(如RS1,RS0等)的状态则是由软件设置的。第32页/共364页下面简单介绍部分SFR的功能,其余的SFR将在后续章节中陆32CY(PSW.7)进位标志:在加减法运算中,累加器A的最高位A7有进位,则CY=1,否则CY=0.同理,在减法运算中,如果A7有借位,则CY=1.因此CY往往作为无符号数运算是否有溢出的标志。AC(PSW.6):辅助进位位:用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位).往往用来判断压缩的BCD码的运算处理.F0(PSW.5),F1(PSW.1)用户标志位:完全由用户来定义和使用。RS1,RS0工作寄存器区选择位:确定工作寄存器R0-R7在哪个区中.单片机在上电或复位后RS1、RS0=00。当需要人为的修改RS1,RS0的值来改变工作寄存器区的位置(后表将详细介绍)。CYACF0RS1RS0OVF1P

程序状态字PSW:8位寄存器.表征程序执行的状态信息。具体格式如下:第33页/共364页CY(PSW.7)进位标志:在加减法运算中,累加器A的33OV(PSW.2)溢出标志位:判断符号数加减法运算时是否有溢出.OV的结果可以用一个算法来表示:OV=CP异或CS

其中:CP为A7的进位,CS为A6的进位OV=1表明有溢出。P(PSW.0)奇偶标志位:用来标志累加器A中运算后1的个数。当P=1时,表明A中1的个数为奇数个,反之为偶数个。

【举例】:有两个数0FH和F8H,试将两数相加

MOVA,#0FH;将立即数0fh送累加器AADDA,#0F8H;A的内容与立即数0f8h相加,结果送A00001111运算结果:A=07H,CY=1(既CP=1),

+11111000CS=1,OV=0(因为CP=1,CS=1)

Cy→100000111AC=1,P=1如何根据PSW来分析运算结果是否正确?是否有溢出?1,若数据为无符号数。既15+248=263=107H既CY=1,A=07H。2,若数据为有符号数。既+15加-8=+7=07H,OV=0表明无溢出。第34页/共364页OV(PSW.2)溢出标志位:判断符号数加减法运算时是否34RS1RS0寄存器组R0-R7所对应的RAM单元地址00000H-07H01108H-0FH10210H-17H11318H-1FH表2-5RS1,RS0与寄存器组的关系(5)DPTR

数据指针DPTR是一个16位的特殊功能寄存器,编程时,DPTR既可以作为一个16位的寄存器使用,也可以作为两个独立的8位寄存器分开使用,此时用DPH表示DPTR的高字节,用DPL表示DPTR的低字节。一般编程时,常用DPTR来存放外RAM单元(或外部I/O接口)的16位地址,作间接寄存器使用,它可以指向外RAM64KB范围内的任一存储单元。(6)程序计数器PC

程序计数器PC是16位专用寄存器,其内容就是下一条要执行的指令的首地址。CPU总是把PC的内容送往地址总线,作为选择存储单元的地址,以便从指定的存储单元中取出指令,译码和执行。第35页/共364页RS1RS0寄存器组R0-R7所对应的RAM单元地址000035

程序存储器用于存放程序代码和表格常数。其所支持的最大程序存储器空间为64KB,地址指针就是16位的程序计数器PC。在程序存储器中,有六个特殊的单元需要注意,编程者是不能随便使用的:0000H-0002H单元:上电时,程序计数器PC所指向的单元0003H-000AH单元:外部中断/INT0的入口地址;000BH-0012H单元:定时器T0的溢出中断入口地址;0013H-001AH单元:外部中断/INT1的入口地址;001BH-0022H单元:定时器T1的溢出中断入口地址;0023H-002AH单元:串行口接收、传送的中断入口地址。

中断响应后,按中断种类由硬件控制PC自动转到各中断区的首地址去执行程序。但每个中断入口地址区只有8个单元,无法放置完整的中断处理子程序,因此,程序员在编程时必须在中断入口区放置一条无条件转移指令,将程序引导到真正的中断处理程序的实际入口位置。2.3.3片内程序存储器第36页/共364页程序存储器用于存放程序代码和表格常数。其所支持362.4并行IO端口电路结构及应用特性

在MCS-51单片机的四个端口P0,P1,P2,P3都是具有输出锁存功能的双向端口,他们都由锁存器、输出驱动器和输入缓冲器组成。这些锁存器的位置都在SFR中,其地址分别为:80H、90H、A0H、B0H.出于系统的考虑,在硬件设计上对每一个端口都有不同的要求,所以每一个端口又具有不同的特点.其中,在需要扩展外部存储器的系统中,P2口作为访问外部存储器的高8位地址线,P0口分时作为低8位地址线和双向数据总线。此外,P3口具有双功能。第37页/共364页2.4并行IO端口电路结构及应用特性372.4.1P0口特点:“通用数据I/O端口”和“地址、数据复用总线”端口.1,在作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),与MOS负载连接时,需要外接一个上拉电阻。

2,作为“地址、数据复用总线”使用时,P0口首先输出外部存储器的低八位地址,然后再变为数据总线进行数据的输入或输出.此时,P0口不能再作为通用I/O口。第38页/共364页2.4.1P0口特点:“通用数据I/O端口”和“地址、数38DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)硬件组成:1,一个输出锁存器(D型触发器);2,二个三态门(控制读引脚或读锁存器);3,与门和MUX等元件组成的输出控制电路;4,一对场效应晶体管FET构成的输出电路.Vcc图2-7P0端口的结构图第39页/共364页DQP0.xVcc地址/数据控制(=0时)读锁存391,P0口的I/O操作(通用I/O端口)在P0口作为通用I/O端口时,控制电路中的“控制”为“0”电平,多路开关MUX接入下方的锁存器的/Q端。由于与门的一个输入端为“0”,所以它使上端的FET截止.这就是P0口在做I/O口时输出为“漏极开路”的结构原因.输出操作:在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极.如:送“1”时,/Q=“0”,使下端的FET截止.这样出现输出极的两个FET全部截止.在这种情况下必须在端口线上外加上拉电阻.这样在上拉电阻的作用下,使端口为高电平.同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平.第40页/共364页1,P0口的I/O操作(通用I/O端口)在P0口作为通用I/40输入操作(读引脚,读锁存,输入前写一)a,读引脚:读外部送到端口引脚的电平,即通常所说的输入操作(如:MOVA,P0).此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线.b,读锁存器:将进行读锁存器并进行处理,最后再写回锁存器的操作称之为:“读—修改—写”操作。在这种情况下,读入的数据不是来自引脚,而是端口内部的锁存器的内容。 当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出,在MCS-51的指令系统中这种“读—修改—写”的操作有:ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOVPx,y、CLRPx,y和SETPx,y。如:ORLP0,A;P0∨A→P0

P0.X第41页/共364页输入操作(读引脚,读锁存,输入前写一)P0.X第41页/共41c,输入时应先写“1”:在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入.例如:原来锁存器的状态为“0”态,既输出极的下端FET是饱和状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入.要解决的方法就是让下端的FET截止,既事先向端口写一个“1”.第42页/共364页c,输入时应先写“1”:在端口电路中,可以发现一个问题:端口422,P0口的总线方式

控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号.在这种情况下,输出极的两个FET都处于正常的工作状态。访问外部存储器的指令movx、movc

,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。可以从:访问外部程序存储器ROM的时序;

读外部数据存储器RAM的指令时序中来清楚的观察P0口作为“地址/数据复用”总线的工作特点。在进行单片机的硬件系统的设计中,如果使用了外部存储器(或使用movx指令来访问外部接口电路)时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口的形式直接与外部连接。第43页/共364页2,P0口的总线方式控制电路的“控制”=1,此431,

做通用数据I/O端口时,输出级上端的FET处于截止状态,所以与MOS器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平;2,在输入操作前,为了保证输入正确,必须先向端口“写1”;3,“读引脚”与“读锁存器”是不同的两个数据通道。凡是“读—修改—写”的操作,CPU读的都是端口锁存器中的数据。4,为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻.5,在总线方式时,P0口不能再做通用的I/O端口。它分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。P0口特点小结:第44页/共364页1,做通用数据I/O端口时,输出级上端的FET处于截止状态44特点:单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。2.4.2P1口的位结构图DQ

锁存器CL/QP1.x引脚Vcc读锁存器读引脚内部总线写锁存器内部上拉电阻图2-8P1端口的结构图

由于P1口只能当作通用I/O口使用,所以在电路结构上与P0口不同,首先,它不需要多路转换器,其次为通用输出功能提供了上拉电阻。

P1口的每一位可以分别定义为输入或输出,其功能同P0口通用功能。

P1口的每一位可以驱动4个LSTTL负载。第45页/共364页特点:单纯的通用I/O端口,负载能力为3个TTL输入。与P0452.4.3P2口

特点:“通用数据I/O端口”和“高八位地址总线”端口DQ

锁存器CL/QP2.x引脚Vcc地址/数据1/0控制读锁存器读引脚内部总线写锁存器MUX(地址/数据=0)内部上拉电阻图2-9P2端口的结构图第46页/共364页2.4.3P2口

特点:“通用数据I/O端口”和“46与P0口一样,P2口在系统使用外部存储器时,做高八位的地址总线。当P2口当作通用I/O口时,多路开关使输出锁存器的Q端与驱动器的栅极相连构成一个双向口,其功能同P0口的通用功能。同样,P2口作为输入时,也必须使锁存器预先置1.应当注意的是:仅使用外部数据存储器时,P2口分两种情况:

1,仅仅使用256B的外部RAM时,既使用movxa,@r0指令访问外部RAM,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,所以在这种情况下,P2口仍然可以做通用I/O端口。

2,如果访问外部ROM或使用大于256BRAM时,P2口必须作为外存储器的高八位地址总线。如:movxa,@dptr;访问外部数据存储器

movca,@a+dptr;访问外部程序存储器这里使用了16位的寄存器DPTR第47页/共364页与P0口一样,P2口在系统使用外部存储器时,做高八位的地址总472.4.4P3口

特点:通用I/O端口、多用途端口在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。在通用I/O模式下,“替代输出功能”端为“1”电平,以保证与门打开。DQ

锁存器CL/QP3.x引脚替代输出功能读锁存器读引脚内部总线写锁存器MUX(地址/数据=0)Vcc图2-10P3端口的结构图第48页/共364页2.4.4P3口

特点:通用I/O端口、多用途端口在48并行端口在使用时应注意的几个问题“拉电流”还是“灌电流”----与大电流负载的连接

(我们以美国ATMEL公司生产的AT89C51为例)

1,

使用灌电流的方式与电流较大的负载直接连接时,端口可以吸收约20mA的电流而保证端口电平不高于0.45V(见右上图)。

2,采用拉电流方式连接负载时,AT89C51所能提供“拉电流”仅仅为80μA,否则输出的高电平会急剧下降.如果我们采用右下图的方式,向端口输出一个高电平去点亮LED,会发现,端口输出的电平不是“1”而是“0”!

当然,不是所有的单片机都是这样,PIC单片机就可以提供30mA的拉电流和灌电流。单对于大多数IC电路,最好还是使用“灌电流”去推动负载。Px.yVddPx.yVddVdd灌电流方式输出”0”点亮LED拉电流方式输出高电平点亮LED第49页/共364页并行端口在使用时应注意的几个问题“拉电流”还是“灌电流”--49单片机与继电器等大电流负载的接口我们知道:AT89C51的端口可以吸收约20mA的电流.对于继电器等大于20mA的负载,单片机可以采用右图的接法,用一个三极管来承担负载所需的大电流.若于负载电流易造成干扰单片机的环境,应采用右下图”光电隔离”的方式.其中:A、

B两处没有任何电的联系.Px.yJVccVdd负载VccPx.yAB第50页/共364页单片机与继电器等大电流负载的接口我们知道:AT89C51的端502.5.1时钟电路

1.内部时钟方式内部方式的时钟电路如下图2-14所示。利用MCS-51内部的高增益反向放大器,在XTAL1和XTAL2引脚上外界定时元件,内部振荡器电路便产生自激振荡。定时元件一般采用石英晶体和电容组成的并联谐振回路。晶体可以在1.2-12MHZ直接任选,电容可以在5-30pF之间选择,电容C1和C2的大小可以起到频率微调的作用,电容大小要和晶体的容性负载阻抗相匹配,否则不易起振。内部时钟方式如下图:2.5时钟电路与CPU时序30pF30pFXTAL1XTAL28051图2-11单片机内部时钟方式第51页/共364页2.5.1时钟电路2.5时钟电路与CPU时序30pF30512.外部时钟方式外部时钟方式常用于多机系统,以便各个单片机能够同步工作。对外部振荡信号无特殊要求,但需要保证脉冲宽度不小于20ns,且频率应低于单片机所支持的最高频率。对于8051单片机,外部脉冲由XTAL2引入内部电路,XTAL1接地;对于80C51单片机,外部脉冲由XTAL1引入,XTAL2悬空。外部时钟信号VSSXTAL1XTAL280511Vcc外部时钟信号VSSXTAL1XTAL280C511悬空5.1k图2-12单片机的外部时钟方式(a)8051外部时钟方式(b)80C51外部时钟方式第52页/共364页2.外部时钟方式外部时钟信号VSSXTAL1XTAL28052S1S1S6S5S4S3机器周期2.5.2时序定时单位

单片机的工作过程就是不断的执行指令的过程。CPU每执行一条指令,都要经过取指(取操作码)、取操作数和执行等几个过程。CPU执行一条指令的各个微操作所对应时间顺序称为CPU时序。为了直观的展现CPU的时序,把执行一条指令时相应信号线上有关信息的变化,按时间序列特定的波形展示出来,这就是时序图。由于指令的字节数不同,执行的操作也不同,因而执行不同的指令所需要的时间差别较大。为了便于说明,人们按指令的执行过程定义了几种时序定时单位,及振荡周期、时钟周期和指令周期,它们的相互关系如下图所示状态周期或时钟周期振荡周期P1P2指令周期….图2-13MCS-51各周期的关系第53页/共364页S1S1S6S5S4S3机器周期2.5.2时序定时单位531.振荡周期:时振荡周期也称为节拍,它是单片机最基本的定时单位。前面介绍的时钟振荡器的周期就是振荡周期。2.时钟周期

:又称状态周期,是由振荡器周期经2分频后获得的。所以时钟周期是振荡周期的2倍。时钟周期被分为P1和P2拍节。在每个时钟周期代码前板周期内,P1信号有效,这时通常完成算术逻辑操作;而在后半周期内,P2信号有效,完成内部寄存器直接的传送操作。时序中最小的时间单位.其值由外接晶体或外输入时钟来决定,其值石英振荡器频率的倒数。 例如:在单片机外接1MH的晶体,则单片机的系统时钟的频率为1M,时钟周期为1us.3.机器周期:MCS-51采用定时控制方式,因此它有固定的机器周期。完成特定功能所需要的时间,在MCS-51单片机中机器周期由12个时钟周期构成,并分为6个状态(S1-S6),每个状态又分为P1和P2两拍.这样一个机器周期的12个震荡周期可以表示为:

S1P1,S1P2,S2P1,S2P2,S3P1,S3P2…S6P1,S6P2

将12个震荡周期用6个状态和2拍来替代。第54页/共364页1.振荡周期:时振荡周期也称为节拍,它是单片机最基本的定时单544.指令周期:这是时序图中最大的时间单位,既执行一条指令所需要的时间.在MCS-51系统中,不同的指令它所包含的机器周期数不同.它们分别是:1,单机器周期指令;2,双机器周期指令;3,四机器周期指令

我们知道:一个机器周期包含了12个震荡周期.如果我们使用一个12M的晶体震荡器,那么:

一个机器周期为1us,

两个机器周期为2us,

四个机器周期为4us.

可见一条指令的运算速度与它所包含的机器周期数有关.机器周期数越少,执行的速度就越快.在MCS-51单片机的指令系统中,除了乘、除法指令为四个机器周期外,其余都是单周期和双周期指令.第55页/共364页4.指令周期:这是时序图中最大的时间单位,既执行一条指令所需552.5.3典型指令的取指、执行时序

在MCS-51单片机的指令系统中有: 单字节; 双字节; 三字节指令。在MCS-51的111条指令中,可以分为六种基本的时序:

1,单字节单周期指令;4,双字节单周期指令;2,单字节双周期指令;5,双字节双周期指令;3,单字节四周期指令;6,三字节双周期指令.第56页/共364页2.5.3典型指令的取指、执行时序 第56页/共364页56

指令特点:在程序存储器ROM中仅占一个存储单元。 在ALE第一次有效(S2P1)时,从ROM中读取指令的操作码,送入指令寄存器IR中.并译码执行,在ALE第二次有效时,封锁PC加一,使第二次读数无效.可见:1,ALE信号对应这从ROM中读指令,所以在一个机器周期中CPU可以读两次指令;2,对于单字节单周期的指令,CPU通过译码后封死PC,实际上指令的后半部不做任何工作.单字节单周期指令的时序:机器周期读操作码一读操作无效ALES1S2S6S5S4S3图2-14单字节单周期指令的时序第57页/共364页指令特点:在程序存储器ROM中仅占一个存储单元。单字57

指令特点:一条指令长度为两个字节,并存储在ROM相邻的两个单元中。要想完整的将这样的指令执行完,必须从ROM中读两次操作码.

在ALE第一次有效时,CPU从ROM的n单元中取出指令的第一个字节OP1-1,并送入IR译码,通过译码CPU知道这是一条双字节指令,所以使PC加一,并在ALE第二次有效时,从ROM的n+1单元取出指令的第二个字节OP1-2送入IR进行译码,并产生对应的操作.最后在S6P2时完成本条指令的运行.S1S2S6S5S4S3机器周期读操作码一读操作码二OP1-2OP1-1n+1n程序ROMPC双字节单周期指令时序ALE图2-15双字节单周期指令的时序第58页/共364页指令特点:一条指令长度为两个字节,并存储在ROM相邻58指令特点:单字节,需要两个机器周期运行.如:INCDPTR

DPTR为两个8位的寄存器,加一时,必须分两步完成.既第一步DPL加一,如果DPL加一有进位则还要进行第二步对DPH加一.

在指令周期的第一个ALE时,将ROM中的操作码OP取出,经IR译码后得知为单字节双周期指令,所以一面执行该指令,同时封锁后面三次ALE有效时的PC+1,在第二个机器周期的S6P2时,完成操作.S1S2S6S5S4S3机器周期1读操作码读无效S1S2S6S5S4S3读无效读无效机器周期2单字节双周期指令的时序ALE图2-16单字节双周期指令的时序第59页/共364页指令特点:单字节,需要两个机器周期运行.如:INCDP59设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU

执行外部ROM中的指令:MOVXA,@DPTR;将外RAM的x送A中/WR

/RD

P2口MCS-51

P1口

ALED7∶D0/CP/WR/RDA15∶A8

A7∶A064KRAMD0~D7S1S2S6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令A7-A0数据RDP2口P0口选中外部RAM读外部数据存储器RAM的指令时序图2-17读外部数据存储器RAM的指令时序第60页/共364页设外部RAM2000H单元中有一个数x,且DPTR中已存有该601,在S2P2时,ALE的第一个下降沿将P0口输出的外程序ROM的低八位地址锁存到74LS373锁存器中;2,在S3P2的Psen为低电平时,选中外ROM,并根据单片机P0、P2口输出的16位地址选中movx指令(单字节),通过P0口送至单片机内部IR中译码.经译码后产生下列的一系列操作;3,CPU将DPTR中的高8位(20H)送P2口输出,低八位(00H)经P0口输出,节在S5P1时ALE第二次下降沿时,将P0口的低八位地址锁存;4,在第二个机器周期的S1-S3中单片机输出/RD信号(低电平),选中外部RAM,并根据单片机提供的2000H这16位地址中取出数据x.5,CPU在S2-S3期间,将外部RAM2000H单元送到P0口上的数据送入累加器A中.第61页/共364页1,在S2P2时,ALE的第一个下降沿将P0口输出的外程61上述过程可以分成两个指行的阶段:1,根据PC所指定的程序存储器的地址,将movx指令从片外ROM中取出; 2,经译码后将DPTR提供的外数据存储器RAM中的数据地址取出数据,经P0口送累加器A.

在第一阶段CPU产生/Psen信号用来选通外部程序存储器ROM;

在第二阶段CPU输出/RD信号(低电平),用来选通并读取外部数据存储器RAM的数据.第62页/共364页上述过程可以分成两个指行的阶段:第62页/共364页622.6MCS-51单片机工作方式MCS-51单片机的工作方式有多种,如复位、程序执行、单步执行、低功耗、EPROM编程与校验等。2.6.1复位方式及复位电路1.复位方式

单片机复位后不会影响内部RAM中的数据,仅将PC指向0000H,SP指向07H,保证单片机复位信号撤出后CPU能够从起始地址0000H开始执行程序。但单片机由于外界干扰等原因造成程序跑飞或进入死循环时,可用复位信号重新启动程序。复位操作还对单片机的个别引脚有影响,使P0-P3置位输入方式,使ALE=1,/PSEN=1.寄存器内容寄存器内容PC0000HTMOD00HACC00HTCON00HB00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXXX00000BSBUF00HIE0XX000000BPCON0XXXXXXXB表2-6复位后内部寄存器的状态第63页/共364页2.6MCS-51单片机工作方式M632.复位电路

RST端的尾部复位电路有两种复位形式:上电自动复位和按键手动复位。(1)上电自动复位电路只要在RST复位端接一个电容至VCC和一个电阻至VSS,就能够实现上电自动复位。在家电瞬间,电容通过电阻充电,就在RST端出现一定宽度的高电平,只要高电平时间足够长,就可以使单片机有效复位。(2)按键手动复位按键手动复位有电平方式和脉冲方式两种。按键电平复位时通过使复位端经过电阻与VCC接通而实现的。按键脉冲复位则是通过利用RC微分电路产生的正脉冲来实现的。8051Vcc8051Vcc8051Vcc(a)上电自动复位(b)手动电平复位(c)手动脉冲复位图2-17MCS-51复位电路第64页/共364页2.复位电路8051Vcc8051Vcc8051Vcc(a64(3)系统复位

在单片机的应用中,除单片机身体需复位以外,外部扩展I/O接口电路等也需要复位,因此需要一个系统的同步复位信号.即单片机复位后,CPU开始工作时,外部的电路一定要准备好,以保证CPU有效的对外部电路进行初始化编程.如上所述,MCS-51的复位端RST是一个施密特触发器,高电平有效,而I/O接口电路的复位端一般为TTL电平输入,通常也是高电平有效,但这两种复位输入端复位有效的电平不完全相同.若将单片机的复位不同步,CPU对I/O初始化编程无效,使系统不能够正常工作.解决的办法就是通过延时一段时间后,再对外部电路进行初始化编程.有效的系统复位电路如下图2-18所示:8051Vcc8051Vcc(b)至外部IO电路复位端1(a)至外部IO电路复位端图2-18系统复位电路第65页/共364页(3)系统复位8051Vcc8051Vcc(b)至外部IO电652.6.2程序执行方式

程序执行方式是单片机的最基本工作方式。所执行的程序可以在内部ROM、外部ROM或者同时放在内外ROM中。若程序放在外部ROM中,则应使/EA=0;否则,可令/EA=1。由于复位之后PC=0000H,所以程序的执行总是从地址0000H开始的。但真正的程序一般不一定从0000H开始存放,此时需要在0000H单元存放一条转移指令,使程序跳转到真正的程序入口处。2.6.3单步执行方式

在单片机应用系统的开发调试阶段,有时需要观察每条指令执行后的结果,此时就需要用到单步执行方式。单步执行方式是使程序执行处于外加脉冲的控制下,一条指令以条指令地执行,即按一次键,执行一条指令。单步执行方式可以利用MCS-51的外部中断来实现.MCS-51中断系统规定:从中断服务程序返回以后至少要执行一条指令后才能够重新响应新的中断请求.据此,如果将外加脉冲从/INT0引脚输入,平时保证/INT0为低电平,并通过初始化设定外部中断0为高优先级和低电平触发方式,就能保证单片机平时处于中断响应状态.在中断服务子程序中配合使用下面的指令就能够时下按压一次只执行一条指令的单步操作.JNBP3.2,$;若/INT0=0,不往下执行

JBP3.2,$;若/INT0=1,往下执行

RETI;返回主程序执行一条指令第66页/共364页2.6.2程序执行方式程序执行方式是单662.6.4低功耗操作模式CHMOS型的80C51单片机有两种低功耗操作方式:待机操作方式和掉电操作方式。在待机方式时,CPU停止工作,而RAM、定时器、串行口和中断系统继续工作。在掉电方式时,仅给片内RAM供电,片内所有其他的电路均不工作。HMOS的8051单片机只有一种低功耗方式:掉电操作方式。HMOS型单片机的掉电操作方式正常操作时,8051的内部RAM由VCC供电,当RST/VPD端的电压超过VCC时,内部RAM将改为由RST/VPD端的电源供电。若RST/VPD端接有备用电源,则当VCC掉电时,次备用电源就可保护内部RAM的数据不丢失。2.CHMOS型单片机的低功耗方式

80C51单片机用软件来选择低功耗,主要由电源控制寄存器PCON中的相关位控制,PCON寄存器格式如下:位序D7D6D5D4D3D2D1D0位名SMOD///GF1GF0PDIDL表2-7PCON寄存器格式第67页/共364页2.6.4低功耗操作模式CHMOS型的80C51单片机有67IDL:待机方式位当IDL=1时,激活待机工作方式

PD:掉电工作方式当PD=1时,激活掉电工作方式

GF1GF0:通用标志位

SMOD:串行波特率倍增位(1)待机方式执行一条置位I

温馨提示

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

评论

0/150

提交评论