资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单片机原理及应用电子教案王,本书主要内容,单片机概述,MCS-51系列单片机的组成与工作原理,MCS-51 单片机的指令系统,汇编语言程序设计,MCS-51单片机的中断系统,定时/计数器,单片机的串行通信及接口,MCS-51单片机的系统扩展,第,1,章 单片机概述,本章知识点:,计算机的发展概况,计算机的特点和应用,计算机系统的组成,单片机概述,计算机中常用的数制与码制,本章重点:,微机系统的组成,不同数制间的相互转换,原码、反码、补码的概念既相互间的关系,电子计算机,定义:在程序的控制下自动进行信息处理的电子装置。,分类:数字计算机、模拟计算机、模/数混合计算机。,一、现代计算机的发展历史,第一代:19461957 电子管计算机(速度慢),第二代:19571964 晶体管计算机 (速度快,功耗低,性能更稳定),第三代:19641972 集成电路计算机(体积小,可靠性高),第四代:1972现在 大规模集成电路计算机,第五代:智能化,1.1 计算机的发展概况,二、计算机的发展方向,(1)大型化和巨型化,运算速度快,存储量大,体积大,价格高。,(2)微型化,体积小,重量轻,价格便宜,普及快,(3)网络化、智能化,软硬件资源共享,人工智能技术开发各种系统,1.1 计算机的发展概况,1.2 计算机的特点和应用,一、计算机的特点,(1)运算速度快,(2)计算精度高,字长:计算机处理的一组二进制数的位数,(3)存储能力极强,(4)在程序的控制下自动操作,(5)通用性强,不同行业的用户通过编制不同的程序解决不同的问题,而不需要改变硬件。,二、计算机的主要性能指标,(1),字长,:计算机能直接处理的二进制位数,代表实际的处理能力。,字长越长,计算精度越高,寻址范围越大。,(2),主存储量(内存):,按字长或字节计算。,主存储量越大,执行程序的速度越快。,(3),存取周期:,存储器进行一次完整的读写操作所需的时间。,(4),运算速度:,一般用每秒内所能执行的指令条数来衡量。,速度的单位:百万条指令/秒。,(5),主频:,计算机的时钟频率,一般用MHZ或GHZ表示。,主频越高,计算机的运行速度越快。,1.2 计算机的特点和应用,1.2 计算机的特点和应用,三、计算机的应用,(1)数值计算,(2)信息处理和事物管理,信息处理:,利用计算机对数据进行记录、合并、分类、传 递、存储、计算、检索等处理。,事务管理:,用计算机及时提供管理信息。如:财务管理、库存管理、销售管理等。,(3)自动控制,(4)计算机辅助应用:,CAD、CAM、CAI,(5)人工智能,(6)日常应用,1.3 计算机系统的组成,CPU,(ROM,、,RAM),1.3 计算机系统的组成,一、计算机的硬件,(1)运算器,作用:运算作用,可进行算术运算和逻辑运算,组成:加法器A (累加器)、寄存器B、状态标志寄存器F、通用寄存器等组成。,(2)控制器,作用:指挥全机工作的中心。用来产生表示节拍的时序电位和时序脉冲,并将指令规定的操作类别、条件组成各种相应的控制信号,按一定的时间和条件,把信号送到相应的线路中协调整机工作。,组成:指令寄存器、指令译码器、程序计数器、脉冲分配器、时钟电路、操作控制部件等组成。,1.3 计算机系统的组成,(3)存储器,作用:用来存储程序、数据等信息的物理介质。,分类:,(4)输入、输出设备,作用:辅助主机的工作,提供主机和外设之间交换信息的工具。,种类:键盘、鼠标、显示器、打印机等。,(5)外围设备,(6)总线,作用:系统中信息传送的公共通道,分类:,地址总线、数据总线、控制总线,内存储器(主存):,直接与,CPU,交换信息,速度快、容量小,外存储器:存储容量大,断电后不会丢失,1.3 计算机系统的组成,二、计算机的指令和指令系统,(1)指令,定义:计算机完成某个具体的操作所发出的指示或命令,并由计算机直接识别执行。,组成:操作码、操作数,操作码:,计算机执行何种工作。,操作数:,指出参加操作的数据或数据所在单元的地址。,类型:操作类指令、控制转移类指令,(2)指令系统(决定计算机的能力,影响 其体系结构),定义:所有指令的集合。,1.3 计算机系统的组成,三、计算机的软件,分类:系统软件、应用软件、程序设计语言,(1)系统软件,由制造者提供,包括监控程序、操作系统、汇编软件、解释程序、实用程序、诊断程序等。,(2)应用软件,定义:指用户的专业软件,是为解决某一专业领域的问题而编写的程序。,(3)程序设计语言,作用:编写程序所使用的语言。,分类:,机器语言、汇编语言、高级语言,单片机:,单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多种接口都集成到一块集成电路芯片、尖端武器、日常生活中最广泛使用的计算机上的微型计算机。因此,一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表。,一、单片机的发展过程,第一阶段(19761978年):低性能单片机的探索阶段,第二阶段(19781982年):高性能单片机阶段,第三阶段(19821990年):16位单片机阶段,第四阶段(1990年):微控制器的全面发展阶段,1.4 单片机概述,二、单片机的系统组成,1.硬件系统:CPU、存储器、输入/输出接口电路、输入/输出设备等,2 .软件系统,三、单片机的发展趋势,(1)微型化,(2)低功耗(工作方式多,电源范围扩大),(3)高速化,(4)集成更多资源,(5)通信及网络功能加强,(6)专用型单片机发展加快,1.4 单片机概述,1.5 计算机中常用的数制与码制,一、数制,计算机系统中,对于符号数有不同的编码方式,通常有,原码、反码和补码,。,(1)原码,最高位为符号位(正数用0表示,负数用1表示),其他位为数值位。,X=+87=01010111B,X,原,=01010111B,Y=-87=11010111B,Y,原,=11010111B,(2)反码,正数的反码与原码相同,负数的反码是其对应的原码符号位保持为1,数值位逐位取反的结果。,X=+87=01010111B,X,反,=01010111B,Y=-87=11010111B,Y,反,=10101000B,1.5 计算机中常用的数制与码制,(3)补码,正数的补码与原码相同,负数的补码是其对应的原码符号位保持为1,数值位逐位取反,末位加1的结果,即对应的反码加1。,X=+87=01010111B,X,补,=01010111B,Y=-87=11010111B,Y,补,=10101001B,二、码制,在计算机中,除了表示数以外,还要表达字母、字符等信息,他们也是以二进制的形式出现的,只是编码的形式不同而已,计算机中常见的编码由BCD码和ASCII码。,ASCII码: ASCII码是一种8位代码,最高位一般用于奇偶校验,用其余的7位代码来对128个字符编码,其中32个是控制字符,96个是图形字符。,BCD码:采用二进制数编码十进制数。,1.5 计算机中常用的数制与码制,BCD,码,阅读材料,不同计数制之间的转换,十进制数,一个十进制数,它的数值是由数码,0,,,1,,,2,,,,,8,,,9,来表示的。数码所处的位置不同,代表数的大小也不同。,例如:,53478=5104+3103+4102+7101+8100,,对应于:,二进制数,二进制是按,“,逢二进一,”,的原则进行计数的。二进制数的基为,“,2,”,,即其使用的数码为,0,、,1,,共两个。二进制数的权是以,2,为底的幂。,例如:,10110100=127+026+125+124+023+122+021+020,,,对应于:,其各位的权为,1,,,2,,,4,,,8,,,,即以,2,为底的,0,次幂、,1,次幂、,2,次幂等。,(10110100)2,127+026+125+124+023+122+021+020=180,十六进制数,十六进制数的基为,16,,即基数码共有,l6,个:,0,,,1,,,2,,,3,,,4,,,5,,,6,,,7,,,8,,,9,,,A,,,B,,,C,,,D,,,E,,,F,。其中,A,,,B,,,C,,,D,,,E,,,F,分别代表值为十进制数中的,10,,,11,,,12,,,13,,,14,,,15,。十六进制的权为以,16,为底的幂。,例如:,4F8E=4163+F162+8161+E160=20366,,对应于:,常用计数制表示数的方法比较,不同进制数之间的转换,1.,十进制数转换成二进制数的方法,就是用,2,去除该十进制数,得商和余数,此余数为二进制代码的最小有效位,(LSB),或最低位的值;再用,2,除该商数,又可得商数和余数,则此余数为,LSB,左邻的二进制代码,(,次低位,),。依此类推,从低位到高位逐次进行,直到商是,0,为止,就可得到该十进制数的二进制代码。,除二取余法,不同进制数之间的转换,例如:将,(67)10,转换成二进制数,过程如下:,即:,(67)10=(1000011)2,。,不同进制数之间的转换,1.,十进制数转换成二进制数的方法,将已知十进制的小数乘以,2,之后,可能有进位,使整数位为,1(,当该小数大于时,),,也可能没有进位,其整数位仍为零。该整数位的值为二进制小数的最高位。再将乘积的小数部分乘以,2,,所得整数位的值为二进制小数的次高位。依此类推,直到满足精度要求或乘,2,后的小数部分为,0,为止。,乘二取整法,例如:将,(0.625)10,转换成二进制数,其过程如下:,即:,(0.625)10=(0.101)2,不同进制数之间的转换,不同进制数之间的转换,2.,二进制数转换为十进制数的方法,将二进制数转换成十进制数时,只要将二进制数各位的权乘以各位的数码,(0,或,1),再相加即可。,例如:将,(1101.1001)2,制转换成十进制数:,(1101.1001)2,123+122+021+120+12-1+02-2+02-3+12-4,8+4+0+1+0.5+0+0+0.0625=(13.5625)10,不同进制数之间的转换,3.,二进制与十六进制数之间的转换方法,二进制数转换成十六进制数,例如:把,(101101101.1100101)2,转换成十六进制数。,即:,(101101101.1100101)2=(16D.CA)16,。,不同进制数之间的转换,2),十六进制数转换成二进制数,将十六进制数转换成二进制数时,只要将每,1,位十六进制数用,4,位相应的二进制数表示即可完成转换。,例如:将,(ECA16)16,转换成二进制数。,即:。,思考练习题,(1),微型计算机由哪几部分组成?,(2),什么是单片机?它与一般微型计算机在结构上有什么区别?,(3),单片机主要应用在哪些方面?,(4),将下面的一组十进制数转换成二进制数:,567423198968,(5),将下面的二进制数转换成十进制数和十六进制数:,10110011101001011110100110011110,10000101 110001011110111010001100,第,2,章,MCS-51,系列单片机的组成与工作原理,本章知识点:,MCS-51,单片机的内部结构,CPU,的结构和功能,存储器的组织结构,MCS-51,单片机的并行输入输出端口,MCS-51,单片机的外部引脚及功能,单片机指令时序,本章重点:,MCS-51,单片机的内部结构,MCS-51,单片机的并行输入输出端口,MCS-51,单片机的外部引脚及功能,MCS-51系列单片机分类:,1.无片内ROM型芯片,必须外接ROM才能用。,2. 带片内ROM型的芯片又分为片内EPROM型、片内FLASH型、片内掩膜ROM型等。,MCS-51系列单片机特点:,1.程序存储器与数据存储器分开;,2.共有111条指令,其中包括乘除指令和位操作指令;,3.中断源有5个(8032/8052为6个),分为2个优先级;,4.在RAM区中开辟了4个通用工作寄存区,共有32个通用寄存器,1个位寻址区;,5.4个并行I/O口都可以作为输入/输出,在扩展应用方式下采用P,0,和P,2,口作为片外扩展地址总线;,6.内部集成了一个全双工的异步串行接口,可进行数据的发送和接收。,2.1 MCS-51系列单片机的硬件及端子功能,一、 MCS-51系列单片机的内部结构,2.1 MCS-51系列单片机的硬件级端子功能,单一总线连接,各单元采用特殊寄存器集中控制,(1)8051单片机的基本组成,中央处理器(CPU):,完成运算和控制。,内部数据存储器(片内RAM):,256个字节的RAM单元,其中128个字节被专用寄存器占用,前,128个字节,单元共用户存放可读写的数据。,内部程序存储器(内部ROM):,4KB的掩膜ROM,,用于存放程序、原始数据或表格。,定时器/计数器:,两个16位,的定时器/计数器,4种工作方式。,并行I/O口:,4个8位,的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。,串行口:,1个全双工的串行口,,具有4种工作方式,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。,中断系统:,有,5个中断源,,即外部中断2个,定时/计数中断2个,串行口中断1个,有,2个优先级别,。,时钟电路:,用来产生时钟脉冲序列。,特殊功能寄存器:,有,21个特殊功能寄存器,,用于对片内个功能模块进行监控和管理,是片内RAM的一部分,与片内RAM单元统一编址。,2.1 MCS-51系列单片机的硬件及端子功能,2.1 MCS-51系列单片机的硬件及端子功能,其基本特性如下:,8,位,CPU,,含片内振荡器;,4KB,的程序存储器,ROM,;,128B,的数据存储器,RAM,;,64KB,的外部程序存储器寻址能力;,64KB,的外部数据存储器寻址能力;,32,根输入输出,(I/O),线;,2,个,16,位定时,/,计数器;,1,个全双工异步串行口;,21,个特殊功能寄存器;,5,个中断源,,2,个优先级;,具有位寻址功能。,(2)MCS-51系列单片机简介,它是一个微型计算机系统, MCS-51系列单片机分为51和52两个子系列,51是基本型,52是增强型。,52子系列增强的功能是:,片内ROM从4KB增加到8KB;,片内RAM从128B增加到256B;,定时/计数器从2个增加到3个;,中断源从5个增加到6个。,2.1 MCS-51系列单片机的硬件及端子功能,2.1 MCS-51系列单片机的硬件及端子功能,二、,MCS-51,系列单片机的端子分布,(a),方形封装,(b),双列直插式封装,(1),电源端子,(20、40)用于接入单片机的工作电源。,(2),时钟端子,XTAL(19.18)用来提供单片机的工作时钟信号。,在使用单片机内部振荡电路时,这两个端子用来接石英晶体和微调电容,在使用外部时钟时,用来输入时钟脉冲,。,(3),控制信号端子,(9、29、30、31),RST/VPD:复位/备用电源端子。单片机正常工作时,此端子为低电平。在单片机掉电期间,此端子可接备用电源(+5V)。当电源电压低于规定的电压值时,VPD就向片内RAM提供电源,比保持RAM内的信息不丢失。,PSEN:输出访问片外程序存储器的读选通信号。,ALE/PROG:访问外部存储器时,ALE用于锁存低8位的地址信号。如果系统不访问外部存储器,ALE端输出周期性的脉冲信号。,EA/VPP:用于区分片内外低4KB范围存储空间。该端子接高电平时,CPU访问片内程序存储器4KB的地址范围。,(4),输入/输出端,子P0P3(3239、18、2128、1017)均为8位双向I/O口。其中,P3.0P3.7端子还能用于第二功能。,2.1 MCS-51系列单片机的硬件及端子功能,2.1 MCS-51系列单片机的硬件及端子功能,2.1 MCS-51系列单片机的硬件及端子功能,2.2 单片机的CPU,一、控制器,组成:,由指令寄存器、指令译码器、程序计数器PC、数据指针DPTR、RAM地址寄存器以及16位地址缓冲器等组成。,功能:,对来自存储器中的指令进行译码,通过定时电路,在规定的时刻发出各种操作所需的全部内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。,(1),程序计数器PC:,是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1的功能。,(2),指令寄存器IR:,是一个8位寄存器用于暂存待执行的指令,等待译码。,(3),暂存器TMP:,用于暂存进入运算器之前的数据。,(4),指令译码器ID:,是对指令寄存器中的指令进行译码,将指令变为执行此指令所需要的电信号。,(5),数据指针DPTR:,是一个16位的专用地址指针寄存器,主要用来存放16位地址,作间接寻址寄存器,访问片外64K字节的数据存储器和I/O端口及程序寄存器。,2.2,单片机的,CPU,二、,运算器,作用:,主要用于处理算术与逻辑运算等操作。,组成:,算术,/,逻辑运算单元,ALU,、累加器,A,、通用寄存器,B,、暂存器,1,、暂存器,2,以及程序状态寄存器,PSW,、位处理逻辑电路和一些专用寄存器组成,。,(,1,),算术逻辑单元,ALU,:,由加法器和其他逻辑电路组成,完成数据的算术逻辑运算、循环移位、位操作等。,(,2,),累加器,ACC,:,是一个,8,位特殊功能寄存器,通过暂存器与,ALU,相互传送信息,用来存放一个操作数或中间结果。,(,3,),程序状态字,PSW:,是一个,8,位特殊功能寄存器,用于存储程序运行过程中的各种状态信息。,(,4,),其他器件:,用来存放中间结果,,B,寄存器用于乘法和除法时,提供一个操作数,对于其他指令,只用作暂存器。,三、位处理器,位处理器是单片机的一个特殊组成部分,具有相应的指令系统,可提供17条位操作指令。,硬件上有自己的“累加器”和自己的位寻址RAM、I/O口空间,是一个独立的位处理器,位处理器和8位处理器形成完美的结合。,2.2 单片机的CPU,表,2.1,寄存器,PSW,各位的功能、标志符号与相应的位地址,2.3,时钟和时钟电路,(a),内部振荡器方式,(b),外部振荡器方式,图,2.3 8051,单片机的振荡器方式,一、时钟电路,MCS-51,系列单片机内部有一个高增益的反相放大器构成的振荡电路,作为,CPU,的时钟脉冲源。,XTAL1,为振荡电路的输入端,,XTAL2,为输出端,同时作为内部时钟发生器的输入端。内部振荡器要保证正常工作,必须在,XTAL1,、,XTAL2,端子外接一谐振电路。,2.3 时钟和时钟电路,(,a,)外接石英晶体的内部时钟方式。,(,b,),8051,采用外部振荡信号时,需将,XTAL1,接地,,XTAL2,接外部的时钟信号。,(,c,),80C51,采用外部振荡信号时,需将,XTAL2,悬空,,XTAL1,接外部的时钟信号。,二、时序,MCS-51系列单片机的时序定时单位有4个,分别是节拍、状态、机器周期和指令周期。,节拍:,振荡脉冲的周期即为节拍(用P表示)。,状态:,振荡脉冲经过二分频后,就是单片机的时钟信号的周期,即为状态(用S表示)。,一个状态包含两个节拍,前半周期对应的节拍叫节拍1(P1),后半周期对应的节拍叫节拍2(P2)。,振荡周期:,为单片机提供时钟信号的振荡源的周期。,时钟周期:,是振荡源信号经二分频后形成的时钟脉冲信号,。,机器周期:,通常将完成一个基本操作所需的时间称为机器周期。一个机器周期总共有6个状态。,指令周期:,是指CPU执行一条指令所需要的时间。它一般由若干个机器周期组成。,2.3 时钟和时钟电路,二、时序,2.3 时钟和时钟电路,P,1,P,2,S,1,P2,振荡周期,时钟周期,机器周期,机器周期,指令周期,XTAL,2,(OSC),S,2,S,3,S,4,S,5,S,6,S,1,S,2,S,4,S,5,S,3,S,6,P,1,P,1,P,1,P,1,P,1,P,1,P,1,P,1,P,1,P,1,P,1,P,2,P,2,P,2,P,2,P,2,P,2,P,2,P,2,P,2,P,2,P,2,2.3 时钟和时钟电路,复位,2.4 复位和复位电路,1. ALE/,2.,3.,/VPP,4. RST,(a),上电复位,(b),电平开关复位,图,2.13,复位电路,2.3.1 MCS-51,单片机的存储器结构,图,2.3 8051,存储器配置图,2.3.2,程序存储器,程序是控制计算机运行的一系列命令。计算机能够识别并执行的命令是由代码,“,0,”,和,“,1,”,组成的一组机器指令。,2.3.3,数据存储器,单片机的数据存储器由可读可写的存储器,RAM,组成,最多可扩展到,64KB,,用于存储数据。,2.3.4 MCS-51,单片机的内部数据存储器,MCS-51,单片机的内部数据存储器由地址,00H,FFH,共有,256,个字节的地址空间组成,这,256,个字节的地址空间被分为两部分,其中内部数据,RAM,地址为,00H,7FH(,即,0,127),。,图,2.4,内部数据存储器地址空间,1.,内部数据,RAM,单元,内部数据,RAM,分为工作寄存器区、位寻址区、通用,RAM,区三个部分。,图,2.5 RAM,位地址,(,低,128,位在,00H7FH),(a),系统复位后,未改变,SP,初值时的堆栈操作,(,设,(A)=0ABH),(b),系统复位后,改变,SP,初值为,60H,时的堆栈操作,图,2.6,堆栈操作示例,2.,特殊功能寄存器,特殊功能寄存器,SFR,的地址空间是,80H,FFH,。,表,2.3,特殊功能寄存器的名称、符号与地址,2.,特殊功能寄存器,2.,特殊功能寄存器,2.,特殊功能寄存器,2.4 MCS-51,单片机的并行输入输出端口,2.4.1 P0,口结构,1. P0,用作通用,I/O,口,2. P0,用作地址,/,数据总线分时复用方式,2.4.2 P2,口结构,1. P2,口用作地址总线,2. P2,口用作通用,I/O,口,2.4.3 P3,口结构,2.4.4 P1,口结构,2.5.2,外接晶振或外部时钟信号输入端,(a),内部振荡器方式,(b),外部振荡器方式,图,2.12 8051,单片机的振荡器方式,表,2.4,按不同工艺制造的单片机芯片外接振荡器时的接法,2.5.3,输入输出引脚,:通道,0,是一个,8,位漏极开路的双向输入输出通道。在外接存储器或者扩展,I/O,接口时,,P0,口作为复用的低,8,位地址总线和双向数据总线。在不扩展存储器或者,I/O,接口时,作为准双向输入输出接口。,:只有一种功能,即准双向,I/O,口。,:可作为准双向,I/O,口使用;但在接有片外存储器或扩展,I/O,接口范围超过,256B,时,则该口一般只能作为高,8,位地址总线使用。,:该口除了作为准双向口外,还具有第二功能。,2.5.4,控制线,1. ALE/,2.,3.,/VPP,4. RST,(a),上电复位,(b),电平开关复位,图,2.13,复位电路,2.6,单片机指令时序,2.7,思考练习题,(1)MCS-51,单片机包含哪些主要逻辑功能部件?,(2),程序状态字寄存器,PSW,包含哪几个标志位?各位的含义是什么?各有何作用?,(3),什么叫单片机?,(4)MCS-51,单片机的存储结构有何特点?,(5),单片机的,EA,端有何作用?在,8031,组成的单片机应用系统中,其,EA,端怎样处理?为什么?,(6),单片机内部,RAM,分为哪几个部分?各有何作用?,(7)MCS-51,单片机的堆栈,SP,在操作中遵循什么原则?在开机复位时,其初值是多少?是否可以通过程序重新设置?,(8),怎样确定和改变单片机当前的工作寄存器组?,(9),简要说明单片机的位地址分配。,(10),试画出常用的单片机复位电路,并说明复位后各个寄存器的状态。,第,3,章,MCS-51,单片机的指令系统,汇编语言的指令格式及符号简介,寻址方式,数据传送类指令,算术运算类指令,逻辑运算类指令,位操作类指令,控制转移类指令,思考练习题,3.1,汇编语言的指令格式及符号简介,3.1.1,指令格式,标号,:,操作码助记符,第一操作数, ,第二操作数, ,第三操作数, ;,注释,例如:,LOOP:MOV A, #50H;(A)50H,DECR0;(R0)(R0)-1,DJNZ R0, LOOP;(R0)-10,,则程序转移到,LOOP,地址;否则顺序执行,END;,结束,3.1.2,本章中符号的定义,3.2,寻 址 方 式,MCS-51,单片机有,7,种寻址方式,见表。,表,3.1 7,种寻址方式的比较,3.2.1,立即寻址,例如:,MOV A, #23H ; (A)23H,,即累加器,A,的内容被替换为立即数,23H,。,图,3.1 MOV A,#23H,的执行示意图,该指令的功能是将,8,位的立即数,23H,传送到累加器,A,中。如图所示。其中,目的操作数采用寄存器寻址,源操作数采用立即寻址。,3.2.2,直接寻址,直接寻址是指在指令中包含了操作数的地址,该地址直接给出了参加运算或传送的单元或位。直接寻址方式可访问三种地址空间:,特殊功能寄存器,SFR(,该空间只能采用直接寻址,),。,内部数据,RAM,的低,128,个字节单元,(,该空间还可以采用寄存器间接寻址,),。,221,个位地址空间。,例如,:,MOV A, 40H ;,把,40H,单元的内容送到累加器中,即,(A)(40H),。,图,3.2 MOV A,40H,的执行示意图,3.2.3,寄存器寻址,寄存器寻址是指定某一可寻址的寄存器的内容为操作数。,例如:,MOV A, R0 ;(A)(R0),该指令的功能是将,R0,中的数据传送到累加器,A,中。源操作数与目的操作数都采用了寄存器寻址。,在,MCS-51,单片机中,能够用来间接寻址的寄存器有:用户所选定的工作寄存器组的,R0,、,R1,,堆栈指针,SP,和,16,位的数据指针,DPTR,。,内部数据,RAM,的寄存器间接寻址采用寄存器,R0,、,R1,;外部数据,RAM,的寄存器间接寻址有两种形式:一是采用,R0,、,R1,作间址寄存器,这时,R0,或,R1,提供低,8,位地址,而高,8,位地址则由,P2,端口提供;二是采用,16,位的,DPTR,作间址寄存器。,3.2.4,寄存器间接寻址,例如:设,R0,的内容为,60H,,且,(60H)=10H,,即,60H,地址单元中的内容为,10H,,则语句,MOV A, R0,的执行过程如图所示。执行后,,(A)=10H,,即累加器,A,的内容成为,10H,。,图,3.3 MOV A,R0,的执行示意图,又如:,MOVX A, R0;(A)(R0),,用,R0,间接寻址的单元中的内容替换,A,的,;,内容。,MOVX A, DPTR;(A)(DPTR),,用,DPTR,间接寻址的单元中的内容替换,;A,的内容。,3.2.5,变址寻址,这种寻址方式是以数据指针,DPTR,或程序计数器,PC,作为基址寄存器,以累加器,A,作为偏移量寄存器,将一个基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址。,例如:,MOVC A, A+DPTR,设,(A)=10H,,,(DPTR)=1000H,,程序存储器的,(1010H)=45H,,则上面程序语句的功能是将,A,的内容与,DPTR,的内容相加形成操作数地址,(1010H),,把该地址中的数据传送到累加器,A,。即,(A)(A)+(DPTR),。结果:,(A)=45H,。,图,3.4 MOVC A,A+DPTR,的执行示意图,相对寻址,是把指令中给定的地址偏移量,rel,与程序计数器,PC,的当前值,(,读出该双字节或三字节的跳转指令后,,PC,指向的下条指令的地址,),相加,得到真正的程序转移地址。,例如:,JC 80H,若,C=0,,则,PC,值不变,若,C=1,,则以当前,PC,值为基地址,加上,80H,得到新的,PC,值。设该转移指令存放在,1005H,单元,取出操作码后,PC,指向,1006H,单元,取出偏移量后,PC,指向,1007H,单元,所以计算偏移量时,PC,当前地址为,1007H,,已经为转移指令首地址加,2,,这里的偏移量以补码给出,所以,80H,代表着,-80H,,补码运算后,就形成跳转地址,0F87H,。其过程如图所示。,3.2.6,相对寻址,3.2.6,相对寻址,图,3.5 JC 80H,的执行示意图,3.2.7,位寻址,MCS-51,单片机可对片内,RAM,的两个区域进行位寻址:一个是,20H,2FH,单元的,128,位,另一个是特殊功能寄存器的,93,位。,在寻址时,同一个位地址可以有多种标识方式,读者可参看后面节“位操作指令”的相关内容。,3.3.1,通用传送指令,格式:,MOV,目的操作数,源操作数,功能:把第二操作数指定的字节内容传送到第一操作数指定的单元中。不影响源操作数内容,不影响别的寄存器和标志。,1.,以累加器,A,为目的操作数的传送类指令,3.3,数据传送类指令,指令助记符及功能说明如下:,例,1,若,(50H)=10H,,则执行指令,MOV A, 50H,之后,,(A)=10H,。,例,2,若,(R0)=20H,,,(20H)=39H,,则执行指令,MOV A, R0,后,,(A)=39H,。,例,3,若,(R5)=55H,,则执行指令,MOV A, R5,后,,(A)=55H,。,2.,以,Rn,为目的操作数的传送类指令,例,1,若,(A)=20H,,则执行指令,MOV R3, A,后,,(R3)=20H,。,例,2,若,(30H)=01H,,则执行指令,MOV R7, 30H,后,,(R7)=01H,。,指令助记符及功能说明如下,:,例,1,若,(30H)=20H,,,(R0)=30H,,则执行指令,MOV 90H, R0,的结果为,(90H)=20H,。,例,2,若例,1,中的条件不变,而执行指令,MOV P1, R0,,则,(P1)=20H,。,3.,以直接地址,directX,为目的操作数的传送类指令,指令助记符及功能说明如下:,例,1,若,(R0)=50H,,,(50H)=20H,,,(A)=10H,,则执行指令“,MOV R0, A”,后,,50H,单元的内容由原来的,20H,变为,10H,。,4.,以寄存器间接地址,Ri,为目的操作数的传送类指令,指令助记符及功能说明如下:,5. 16,位目标地址传送指令,这条指令的功能是:把,16,位立即数送入,DPTR,中。而,16,位的数据指针,DPTR,由,DPH,与,DPL,组成,该指令执行后,,16,位立即数的高,8,位送入,DPH,中,低,8,位送入,DPL,中。,该指令的执行,不影响程序状态寄存器,PSW,。,指令助记符及功能说明如下:,3.3.2,外部数据存储器,(,或,I/O,口,),与累加器,A,传送指令,例,1,设,(P2)=20H,,现将,A,中数据存储到,20FFH,单元中去。,可用以下程序实现:,MOV R1, #0FFH ;(R1)0FFH,MOVX R1, A ;(20FFH)(A),也可采用下述程序实现:,MOV DPTR, #20FFH ;(DPTR)20FFH,MOVX DPTR, A ;(DPTR)(A),,即,(20FFH)(A),指令助记符与功能说明如下,:,3.3.2,外部数据存储器,(,或,I/O,口,),与累加器,A,传送指令,例,2,将外部数据存储器,7FF0H,单元中的数据取出,存放到外部数据存储器,2000H,单元中去。,MOV DPTR, #7FF0H,MOVX A, DPTR,MOV DPTR, #2000H,MOVX DPTR, A,例,1,在外部程序存储器,2000H,单元开始存放了数字,0,9,的共阴极数码管的,16,进制数的字形代码,3FH,、,06H,、,、,6FH,。要求根据,A,中的值,(0,9),来查找该数字所对应的代码以便显示。,若用,PC,作基址寄存器,则需要在,MOVC A, A+PC,指令前用一加法指令对地址进行调整:,ADD A, #data,MOVC A, A+PC,3.3.3,程序存储器向累加器,A,传送数据指令,指令助记符与功能说明如下:,1.,字节交换指令,例,1,设,(R1)=30H,,,(30H)=45H,,,(A)=7FH,,则执行指令:,XCH A, R1,结果:,(A)=45H,,而,(30H)=7FH,,从而实现了累加器,A,与内部数据存储器,RAM,中,30H,单元的数据交换。,3.3.4,数据交换指令,指令助记符与功能说明如下:,2.,半字节交换指令,例,1,设,(30H)=6FH,,,(R0)=30H,,,(A)=0F6H,,则执行指令:,XCHD A, Ri,结果:,(A)=0FFH,,,(30H)=66H,数据交换指令除了影响始终跟踪,A,中数据奇偶性的,P,标志外,对,PSW,中其他标志位均无影响。,指令助记符与功能说明如下:,3.,累加器,A,中高四位与低四位交换指令,SWAP A,该指令所执行的操作是累加器,A,中的高,4,位与低,4,位的内容互换,其结果仍存放在累加器,A,中。,例,1,设,(A)=0A5H(10100101B),,则执行指令:,SWAP A,结果:,(A)=5AH(01011010B),指令,SWAP,交换了,A,中高、低半字节,(3,0,和,7,4),,结果不影响标志寄存器,PSW,。,3.3.5,堆栈操作指令,堆栈操作指令只有,2,条,即:压入,(PUSH),和弹出,(POP),。,压入指令:,PUSH direct ;SPSP+1,,,(SP)(direct),弹出指令:,POP direct ;(SP)(direct),,,SPSP-1,例,1PUSH A ;,保护,A,中数据,PUSH PSW ;,保护标志寄存器中数据, ;,执行服务程序,POP PSW ;,恢复标志寄存器中数据,POP A ;,恢复,A,中数据,例,2PUSH A,PUSH PSW,POP A,POP PSW,例,3 PUSH DPH,PUSH DPL,POP DPL,POP DPH,3.4.1,加减运算指令,1.,加法指令,这类指令所完成的操作是把源操作数,(,立即数、直接地址单元内容、间接地址单元内容、工作寄存器内容,),与累加器,A,的内容相加,将结果保存在累加器,A,中。,3.4,算术运算类指令,指令助记符与功能说明如下:,例,1,执行指令:,MOV A, #0A9H,ADD A, #0B8H,对程序状态寄存器的影响如图所示。,运算结果:,(A)=61H,,,CY=1,,,AC=1,,,OV=1,,,P=1,,,(PSW)=0C5H,例,2,8,位数加法程序片断,1,:,MOVA, #23H,ADDA, #5AH,运算结果:,(A)=7DH,,,CY=0,,,OV=0,,,AC=0,,,P=0,,,(PSW)=00H,。,例,3,8,位数加法程序片断,2,:,MOVA, #0ABH,ADDA, #9AH,运算结果:,(A)=45H,,,CY=1,,,OV=1,,,AC=1,,,P=1,,,(PSW)=0C5H,。,带进位加法指令与前述加法指令的区别仅为考虑进位位,其他与加法指令相同。,2.,带进位加法指令,指令助记符与功能说明如下:,例,3,利用,ADDC,指令可以进行多字节的加法运算。,设有两个,16,位数相加,被加数的高,8,位放在,41H,,低,8,位放在,40H,,加数的高,8,位放在,43H,,低,8,位放在,42H,,和的低,8,位存放在,50H,,高,8,位存放在,51H,,进位位存放在,52H,。可编程序如下:,例,1,设,(A)=0AAH,,,(R0)=55H,,,C=1,,则执行指令:,ADDC A, R0,运算结果:,(A)=00000000B,,,AC=1,,,CY=1,,,OV=1,。,例,2,设,(A)=35H,,,(40H)=21H,,,C=0,,则执行指令:,ADDC A, 40H,运算结果:,(A)=56H,,,AC=0,,,CY=0,,,OV=0,。,这与执行指令“,ADD A, 40H”,的结果是一样的。,SHJ: MOV A, 40H;(A),被加数低,8,位,ADD A, 42H;,与加数低,8,位相加,MOV 50H, A;,和的低,8,位存入,50H,MOV A, 41H;(A),被加数高,8,位,ADDC A, 43H;,被加数高,8,位与加数高,8,位以及低位来的进位相加,MOV 51H, A;,和的高,8,位存入,51H,单元,MOV A, #00H;(A)00H,ADDC A, #00H;(A)(A) +00H+,高,8,位来的进位,MOV 52H, A;,进位位,C,内容存入,52H,单元,3.,带借位减指令,指令助记符与功能说明如下:,例,1,设,(40H)=0BAH,,,(41H)=98H,,试编写,40H,内容减去,41H,内容后,结果再存入,40H,单元的程序。,MOVA, 40H;(A)(40H),CLRC;,进位位,C,清,0,SUBBA, 41H;(A)(A)-(41H) -(C),MOV40H, A;(40H)(A),执行以上程序后,,(40H)=22H,,,CY=0,,,OV=0,。,如果参与运算的两数为无符号数,则其溢出与否与,OV,状态无关,而是靠,CY,是否有借位来判断,,OV,仅仅表示带符号数运算时是否溢出。,例,2,设有两个,16,位数相减,被减数的高,8,位放在,41H,,低,8,位放在,40H,,减数高,8,位放在,43H,,低,8,位放在,42H,,差的低,8,位存放在,50H,,高,8,位存放在,51H,,借位位存放在,52H,。,可编程序如下:,SHJIAN:MOV A, 40H ;(A),被减数低,8,位,CLR C ;C,位清,0,SUBB A, 42H ;,减去减数低,8,位,MOV 50H, A ;,差的低,8,位存入,50H,MOV A, 41H ;(A),被减数高,8,位,SUBB A, 43H ;,被减数高,8,位减去减数高,8,位与借位,MOV 51H, A ;,差的高,8,位存入,51H,单元,MOV A, #00H ;(A)00H,ADDC A, #00H ;(A),高,8,位的借位位,MOV 52H, A ;,借位位,C,内容存入,52H,单元,1.,乘法指令,例,1,设,(A)=67H(103),,,(B)=0ADH(173),,执行指令:,MUL AB,运算结果:乘积为,459BH(17819),,,(A)=9BH,,,(B)=45H,。另外:,OV=1,,,CY=0,3.4.2,乘除运算指令,MUL AB ;(A),乘积低,8,位,,(B),乘积高,8,位,例,2,设被乘数为,16,位无符号数,低,8,位存放在地址为,K,的单元,高,8,位存放在地址为,K+1,的单元。乘数为,8,位无符号数,存放在,M,单元。编程求出二者乘积,并将乘积的,0,7,位存放在,R1,,,8,15,位存放在,R2,,,16,23,位存放在,R3,中。,分析:,16,位无符号数与,8,位无符号数相乘的步骤示意如下:,程序编制如下:,MOV R0, #K ;,设置被乘数地址指针,MOV A, R0 ;,被乘数送,A,中,MOV B, M ;,乘数送,B,中,MUL AB ;(K)(M),MOV R1, A ;,乘积的,0,7,位存入,R1,MOV R2, B ;,暂存积的,8,15,位,INC R0 ;,指向被乘数高,8,位地址,MOV A, R0 ;,取被乘数高,8,位,MOV B, M ;,乘数送,B,中,MUL AB ;(K+1)(M),ADD A, R2 ;,求得乘积的,8,15,位,MOV R2, A ;,乘积的,8,15,位存入,R2,MOV A, B,ADDC A, #00H ;,求得乘积的,16,23,位,MOV R3, A ;,乘积的,16,23,位存入,R3,2.,除法指令,例,1,设,(A)=9AH,,,(B)=23H,,执行指令:,DIV AB,则,(A)=04H,,,(B)=0EH,,,OV=00H,,,CY=00H,3.4.2,乘除运算指令,DIV AB ;(A),商,,(B),余数,3.4.3,增,1,减,1,指令,1.,增,1,指令,INC A ;(A)(A)+1,INC direct ;(direct)(direct)+1,INC Ri ;(Ri)(Ri)+1,INC Rn ;(Rn)(Rn)+1,INC DPTR ;(DPTR)(DPTR)+1,例,1,设,(A)=40H,,,(41H)=29H,,则执行下列指令:,INC A;(A)40H+1H,INC 41H;(41H)29H+1H,结果:,(A)=41H,,,(41H)=2AH,例,2,设,(R0)=56H,,片内,RAM,单元,(56H)=0FFH,,,(57H)=50H,,则执行下列指令:,INC R0;(56H)00H,INC R0;(R0)57H,INC R0;(57H)51H,结果:,(56H)=00H,,,(R0)=57H,,,(57H)=51H,例,3,执行下述指令序列:,MOV DPTR,#2FFEH;(DPTR)2FFEH,INC DPTR;(DPTR)2FFFH,INC DPTR;(DPTR)3000H,INC DPTR;(DPTR)3001H,则,(DPTR)=3001H,2.,减,1,指令,DEC A;(A)(A)-1,DEC direct;(direct)(direct)-1,DEC Ri;(Ri)(Ri)-1,DEC Rn;(Rn)(Rn)-1,例,1,设,(R0)=4FH,,片内,RAM,单元,(4FH)=40H,,,(4EH)=00H,,执行指令:,DEC R0 ;(4FH)3FH,DEC R0 ;(R0)4EH,DEC R0
展开阅读全文