MCS-51单片机原理及应用完整ppt课件_第1页
MCS-51单片机原理及应用完整ppt课件_第2页
MCS-51单片机原理及应用完整ppt课件_第3页
MCS-51单片机原理及应用完整ppt课件_第4页
MCS-51单片机原理及应用完整ppt课件_第5页
已阅读5页,还剩641页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用,考核方式:笔试+实验+作业,期末成绩占70%,期中成绩占20%,实验成绩占5%,平时作业成绩占5%。,答疑时间:周三下午16:0017:30,答疑地点:机械学院508室,本课程教学安排,祝爱萍:机械学院508室,第一章概述第二章mcs-51单片机结构及原理第三章MCS-51单片机指令系统及编程举例第四章单片机定时功能及应用第五章单片机的中断系统第六章单片机串行口及应用第七章单片机系统扩展及显示接口技术第八章D/A、A/D转换器接口及应用第九章键盘接口技术,目录,第一章概述,【学习目标】通过本章的学习,学生应该能够:熟悉单片机的主要特点、典型产品、应用领域,掌握数制以的概念及不同数制间的转换方法,明确数在计算机中的表示方法。,重点和难点内容:数制以及不同数制间的转换和数在计算机中的表示方法。,解决方法:多练习。,课外指导:答疑。,教学效果检测方法:批阅作业。,本章作业:教材P14习题与思考题1,2,3,4,5,6,7,8,1定义:单片机全称为单片微型计算机(single-chipMicrocomputer),它在一块芯片上集成了CPU、RAM、ROM、PROM,E2PROM)CTC和多个I/O口,此外,有的单片机如8096单片机上还集成了ADC和DAC转换芯片。,本章主要内容,一单片机的定义及特点,测量与显示:如各种智能仪表,用于提高测量与显示的自动化程度和准确度。,3.应用领域:主要应用于以下几方面,2特点:单片机的体积小,可靠性高,价格便宜,功耗低,它是目前应用最广泛的工业控制微机。,辅助设计和制造:如加工中心,用于提高加工的自动化程度和精度。,日常生活:如各种家电中,用于提高家电的自动化程度,增强其功能。,科学计算:人造卫星轨迹,天气预报等,数据处理:企业管理、情报检索等,其他方面:系统仿真、智能模拟、计算机网络与信息及高速公路管理等。,1946-1958:第一代电子管计算机。磁鼓存储器,机器语言及汇编语言编程。1958-1964:第二代晶体管计算机。磁芯作主存储器,磁盘作外存储器,开始使用高级语言编程。,二、单片机的发展概况,1964-1971:第三代集成电路计算机。使用半导体存储器,出现多终端计算机和计算机网络。1971-:第四代大规模集成电路计算机。出现微型计算机、单片微型计算机,外部设备多样化。1981-:第五代人工智能计算机。模拟人的智能和交流方式。,二、单片机的发展概况,三、计算机发展趋势,微型化便携式、低功耗巨型化尖端科技领域的信息处理,满足超大容量、高速度的要求智能化模拟人类大脑思维和交流方式,具有多种处理能力系列化、标准化便于各种计算机硬、软件兼容和升级多机系统大型设备、生产流水线集中管理(独立控制、故障分散、资源共享),典型产品有8051,8751和8031。其三种芯片的主要区别在于:ROM,EPROM和外接EPROM。8051内部程序要由生产芯片的厂家写入,适用于低成本大批量生产;8751片内程序可由用户固化或清除,价格相对较贵,适用于开发样机;8031芯片必须外接ROM,适用于较方便进行修改和更新程序记忆的场合。,1.MCS-51系列简介:看P18表2.1,四、常用单片机系列介绍,2.存储器简介:memory是单片机的主要组成部分之一,主要用于存储信息,它的分类如下:,内存:包含有,RAM:随机存储器,其中信息可读可写,断电丢失全部内容。,ROM:只读存储器,用户不可更改其内容,与EPROM同样,断电仍可保存信息。,外存:包含有,硬盘:可随时读写并永久保存信息但硬盘存储容量有限,随身携带不方便。,EPROM:可擦除可编程的只读ROM,用紫外线可擦除其内容,用专用设备用户可固化信息。,软盘:软盘可随时读写并永久保存信息,其容量小但可无限扩充,随身携带方便。,光盘:可随时读取信息,容量大,随身携带方便,也可对其进行写操作并永久保存信息,但必须配备专门的刻盘机。,五、数制及其间的转换,1数制:常用的计数方法,有二(Binary)、十(Decimal)、十六(Hexadecimal)、八(Q,Octal)、十二及六十进制等。,优盘:特点同软盘,但容量较软盘大很多,比硬盘小。,位权:某个数位的值是由这一位的数码值乘以处在这一位的固定常数决定的,通常把这一固定常数称之为位权值,简称位权。简而言之权是以基为底的幂。,例:1010.11B的基为2,各位的权分别为:23、22、21、20。2-1和2-2,基数:指数制所使用数码的个数。如:B(2),Q(8),D(10)、H(16)。,例1FFFFH=15163+15162+15161+15160=65535例210111100101B=27+25+24+23+22+2-1+2-3=188625,二,八,十六进制转换为十进制时,原则为:按位权展开相加。,2数制之间相互转换的原则:,十进制转换为二,八,十六进制时,原则为:整数部分除基取余,先出低位,小数部分乘基取整,先出高位。,例1432D=1000101B(取四位小数,并非精确转换)例225473D=37656Q=FEBAH,机器数:数字在机器中的表示方式称为机器数,即将符号(+,)也作为数字的一部分。具体地说,在存储数据时,最高一位用来表示数字的符号,当数字为正时,最高一位的值为0,当数字为负时,最高一位的值为1。机器数有原码、反码和补码三种形式。,3数在计算机中的表示方法,真值:一个数的实际大小称为这个数的真值。,原码:正数的符号位用0表示,负数的符号位用1表示,符号位之后是数字的真值,此法表示的数字称为数的原码。正数的原码与其真值相同。,例:对于8位数据:+35H表示为+35H原码=00110101,-35H表示为-35H原码=10110101,+0原码=00000000,-0原码=10000000,反码:正数的反码与其原码相同,负数的反码则为其对应的原码按位取反(符号位除外)。,例:对于8位数据:+35H表示为+35H反码=00110101,-35H表示为-35H反码=11001010,+0反码=00000000,-0反码=11111111,补码:正数的补码与其原码相同,负数的补码则为其对应的原码按位取反(符号位除外)加1。,注意:计算机中所有的符号数都是默认用补码表示的。,例:对于8位数据:+35H表示为:+35补码=00110101,-35H表示为:-35补码=11001011,+0补码=-0补码=00000000。,计算机中所能表示的符号数的范围为:-2n-12n-11,n为数据的位数。,当n=8时,所能表示的符号数的范围为:-128127,即-2727-1当n=16时,所能表示的符号数的范围为:-3276832767即-215215-1。,已知一个数的补码时,其真值为:正数真值=正数补码负数真值=负数补码取反(符号位除外)1,例:x=01001101,则x真值=01001101=77Dx=10110101,则x真值=11001010+1=11001011=75D,例:Y=11710=117补+10补=10001011+1110110=110000001=-127,利用补码可将减法转换为加法以简化硬件电路,具体原理为:将减数与减号一起变为补码后再与被减数的补码相加,其和(如有进位则舍弃进位)就是两数之差。(了解),4ASCII码:(又称字符编码),英文字母AZ及az;数字字符09:专用字符:+,/,空格和各种标点符号;各种非打印字符如:CR(回车),LF(换行),BELL(响铃)等。,计算机处理的信息并不全是数字,有时还要处理字符和字符串,常见的字符有:,5BCD码(BinaryCodedDecimal)用四位二进制代码表示一位十进制正整数的编码称为BCD码。,以上这些字符在计算机中都用固定的二进制数表示,国际上目前采用最常用的美国标准信息交换码也称ASCII码来表示。要求大家记住前两类字符的ASCII码值。(P10表1.3,列高行低),例:129=(000100101001)BCD,第二章mcs-51单片机结构及原理,【学习目标】通过本章的学习,学生应该能够:掌握有关单片机的基本结构及其功能,尤其是mcs-51系列单片机CPU和存储器的结构及功能,这一部分是全新的概念,需要认真掌握。,重点和难点内容:mcs-51系列单片机CPU和存储器的结构及功能。,解决方法:细讲、慢讲。,课外指导:答疑、质疑。,教学效果检测方法:课堂提问、批阅作业。,本章作业:教材P36习题与思考题1,3,5,6,7,本章主要内容,2.1mcs-51单片机结构2.2mcs-51的存储器结构2.3单片机的时序,第一节mcs-51单片机结构,一、mcs-51单片机内部结构简介二8051CPU的组成及其功能三计算机指令执行过程四.MCS-51引脚及功能,单片机内部最核心的部分是CPU,CPU的主要功能是产生各种控制信号,控制存储器及输入/输出端口的数据传送,实现数据的算术运算、逻辑运算以及位操作处理等功能。,8051CPU的组成及其功能,PC程序计数器:16位专用RS,用于存放下一条将要执行的指令地址,其内容有自加功能,它可保证程序按一定顺序执行。,8051CPU由控制器与运算器两部分组成1控制器:,指令译码器:将指令RS的指令转换成电信号,再经逻辑控制电路产生各种控制信号。(译码前指令为0、1代码,译码后指令为脉冲信号),指令Register(RS):8位,用于暂存待执行的指令,等待译码。,8051CPU的组成及其功能,数据指针DPTR:16位专用地址指针RS,主要用于存放16位地址,作间址RS使用,也可拆成两个8位RS,DPH和DPL,它们片内RAM中占据的地址分为83H和82H。,8051CPU的组成及其功能,定时控制与条件转移逻辑电路:不介绍。,2运算器:,累加器ACC:8位专用RS,用于存放操作数或中间结果,是CPU中使用最频繁的一个RS,也是20个SFR中的一个。,8051CPU的组成及其功能,程序状态字RS(PSW):8位专用RS,用于存放程序运行中的各种状态信息,它可以进行位操作,PSW的字节地址为D0H,位地址为D0D7H。各位的含义如下:,算逻运算部件:此部件实现算数运算与逻辑运算的功能,其运算结果的状态送PSW中。,8051CPU的组成及其功能,CY(PSW.7):进位标志,表示在进行无符号加减时,最高位有无向更高位进(借)位,当有进位CY=1,无进位则CY=0。,程序状态字RS(PSW)各位的含义,AC(PSW.6):半进位标志,表示在进行无符号加减时,D3位有无向D4位进(借)位,当有AC=1,无则AC=0,主要用于BCD码的判断位。,程序状态字RS(PSW)各位的含义,RS1,RS0(PSW.4,PSW.3):工作RS组选择标志,用于选择内部RAM中4个RS中的一组它们的关系如下:,F0(PSW.5):用户标志位,由用户通过程序设置1或0,表示程序处于某种状态,为后续程序执行提供条件。,程序状态字RS(PSW),OV(PSW.2):溢出标志,当进行符号数运算时可表示是否有溢出,则OV=1,无则OV=0,溢出的逻辑表达式为OV=C6YC7Y。,F1(PSW.1):保留位,无定义。,程序状态字RS(PSW)各位的含义,P(PSW.0):奇偶标志位,表示累加器A中含“1”个数的奇偶性,当A中有奇数个1,,B寄存器:用于乘除法操作,8位RS,是20个SFR中之一,B用来存放第二操作数,即用于存放乘法的高位字节或除法的余数部分。,暂存器:暂存数据信息。,P=1,否则P=0。注意:P的值与A内容的奇偶无关。,程序状态字RS(PSW)各位的含义,三、计算机指令执行过程,MCS-51采用40引脚双列直插式封装(DIP)形式,(看P28图2-6)。主电源引脚:Vss(地)和Vcc(+5v)。外接晶振引脚:有两个,四MCS-51引脚及功能,XTAL2:片内晶振器反向放大器输出端,当使用外部晶振器,作为晶振信号的输入端。,XTAL1:片内晶振器反向放大器输入端,当使用外部晶振器,此端接地。,四MCS-51引脚及功能,3控制信号引脚:,RST/VPD:系统复位/备用电源输入引脚,输入信号,有两个作用:,RST端维持两个机器周期以上的高电平时将使单片机复位。复位后CPU各寄存器的特点为:,A)四个I/O口P0P3锁存器均被初始化为0FFH;B)堆栈指针寄存器SP=07H;C)串行口数据缓冲器寄存器SBUF的内容不确定;其它各专用RS均被写成00H;D)内部RAM不受复位影响,上电后RAM内容为随机。,MCS-51引脚及功能,MCS-51引脚及功能,当电源电压下降时,此引脚可为备用电源输入线,为片内RAM提供备用电源。,当CPU访问外部memory初时,产生正脉冲ALE信号输出,在其后沿将P0口输出的低8位地址锁存于外部地址锁存器中;,MCS-51引脚及功能,当片内有EPROM时,可作为编程脉冲输入端使用。,访问外部memory的过程中,ALE端仍以不变的频率周期性的输出正脉冲信号,且fALE=1/6fosc,所以可用作对外输出的时钟信号和定时作用;,MCS-51引脚及功能,MCS-51引脚及功能,对于片内有EPROM,编程时,此引脚接21v编程电源VPP;,MCS-51引脚及功能,准双向端口工作特点:只有使端口锁存器事先置“1”,才能使对应口的I/O引脚作为输入线使用,而CPU执行输出操作时,不管端口的状态如何都能直接输出信号。,4输入输出引脚:P0、P1、P2、P3均为准双向信息传输端口。,注意:P0P3除作为一般的I/O线使用外,还兼有以下功能:,MCS-51引脚及功能,P1口:在EPROM编程验证程序时输入低8位地址。,P0口:当CPU访问外部memory时,P0口可分时作为低8位地址线和8位双向数据线用。,MCS-51引脚及功能,P3口:第二功能见P27表27。复位后P3口的第二功能可直接使用,但复位前必须先置口内锁存器FFH才能用。,P2口;当CPU访问外部memory时,P2口可作为外部高8位地址的输出线。,第二节MCS-51的存储器结构,MCS-51单片机物理上有4个存储空间:片内程序存储器ROM(4KB)片外程序存储器EPROM(64KB)片内数据存储器RAM(256B)片外数据存储器RAM(64KB),这些存储器结构的物理特点是:程序存储器和数据存储器空间是相互独立的,片内数据存储器和片外数据存储器空间在也是相互独立的。,从逻辑上MCS-51单片机又可分为3个存储空间:片内、外统一编址的程序存储器(共68KB)片内数据存储器(共256B)片外数据存储器(共64KB)。,MCS-51存储器配置,0FFFH,256B,4KB,64KB,64KB,68KB,CPU通过P0,P2口送出要访问存储单元的地址A0A15。CPU发出ALE信号把P0口地址信号A0A7锁入锁存器。存储器按A0A15地址进行译码,找到要访问的单元。,如下页图,MCS-51访问外部存储器,粗略的讲可分为以下四步:,一、MCS-51单片机片内外存储器系统简介,二、MCS-51各存储器具体说明:,外部程序存储器用于存放程序、程序执行时必要的常数和表格。,外部程序存储器EPROM:MCS-51可以扩展64K字节的EPROM,其中:,外部程序存储器受PC管理,PC的内容始终指向下一条将要执行的指令所在的地址,PC具有自动加1的功能,保证程序按规定顺序执行。,二、MCS-51各存储器具体说明:,外部程序存储器的容量为64K字节,地址范围为:0000H0FFFFH,且有,内部程序存储器EPROM:,外部数据存储器主要存放运行程序的过程中所需的数据,中间结果和最终结果。,外部数据存储器受datapoint(数据指针)寄存器DPTR和工作寄存器R0及R1的管理。,外部数据存储器RAM:,外部数据存储器在软件上由MOVX类指令访问。,外部数据存储器的最大容量为64K字节,地址范围为:0000H0FFFFH。,外部数据存储器RAM:,MCS-51芯片内部有128个字节(BYTE)的内部数据存储器RAM(称片内RAM),地址为00H7FH,有128B的特殊功能寄存器(SFR)区,地址为80H0FFH,也称高地址区,共256个字节的存储空间。从使用性能上可分为以下几部分:,4.MCS-51片内数据存储器,SFR,FFH,位寻址空间:内部RAM中,地址20H2FH16个字节单元(共128个位)具有位寻址的功能,即CPU可对这16个字节中的每一位,工作寄存器R:内部RAM中00H1FH单元(共32B)为通用工作Register区,分为4组,每组8个字节,均可用作R0R7,用户可根据PSW中的RS1和RS0的值选择相应的工作寄存器组。,MCS-51内部RAM,这128个位的地址规定为00H7FH(RAM的低区地址也是00H7FH),在使用中由软件指令加以区分。如:,MCS-51内部RAM,单独进行操作,所以20H2FH区域是MCS-51单片机布尔处理机的一个存储空间,其中:,20H2FH对应此存储区中16个字节的每一个字节的地址。,因为每个字节有8位,所以此存储区共有168=128位供用户单独操作。,MCS-51内部RAM,且有:对应的字节地址=20H+位地址/8,其中位地址/8的余数为该位在该字节中所处的具体位置)。,MOV20H,A(字节操作);20H单元A的内容MOV20H,C(位操作);布尔处理机存储空间第20H位(即24H单元中的第0位)中PSW中进位位CY内容。,例:位地址7AH对应的字节地址的计算方法是:7AH/8,商为F,余数为2,表示该位处于片内RAM2FH(20H+F)字节的第二位。,位地址=(字节地址-20H)8+N;其中:N=07,为该位在此字节中的位置,例:2EH中的第6位对应的位地址=(2EH-20H)8+6=76H。,30H7FH空间:用户RAM区,共80个字节,此部分空间可以作为buffer、堆栈区等存储单元用,但不能作为工作寄存器用,不能进行位寻址。,对于工作Register区(00H1FH)单元,没有被选中的工作Register单元与30H7FH单元具有同样功能。,MCS-51特殊功能Register(SFR):,在80H0FFH这128个字节中除去SFR占用的21个字节外其余字节均无定义,注意访问无定义的单元得到的是一个随即数。,SFR的分布:MCS-51单片机除PC外共有20个SFR,占21个字节(因为DPTR占两个字节),它们分布在内部RAM的80H0FFH。,MCS-51特殊功能Register(SFR),位寻址空间:在SFR中凡是字节地址能被8整除的SFR均有位寻址功能(即末位地址为8或0的SFR有位寻址功能),共11个SFR有85位可进行位寻址。,SFR与RAM(007FH)的区别:SFR作为源操作数时只能采用直接寻址,寄存器间接寻址对其无效,但对低128B的RAM区有效。,SP:堆栈指针RS,是个8位SFR,在RAM中的地址值为81H,其内容用于指示堆栈栈顶(已存有数据的堆栈存储单元)的地址值。每当有数据进栈时SP值自动加1,出栈时SP值自动减1,当系统复位后,SP=07H,即堆栈实际上是由08H单元开始。,几个常用SFR的基本功能,串行数据缓冲器SBUF:是个8位的SFR,地址为99H,用于存放串行通讯时待发送或已接受到的数据,它由两个独立的寄存器(Rbuf和Tbuf)组成,但它们共用一个地址值),复位后SBUF的内容不确定。,堆栈:是个具有先入后出特点的一片存储区,堆栈的真正工作区一般选在片内RAM的30H7FH内。,几个常用SFR的基本功能,定时器/计数器T0/T1:8051系列单片机有两个16位的定时器/计数器T0和T1,它们分别由TL0,TH0和TL1,TH1两个8位的独立的SFR组成,分布在片内RAM的地址为8AH8DH。,注意:T0与T1在使用时不能作为2个16位的RS来对待。,第三节单片机的时序,一、MCS-51单片机的复位方法及复位后内部各SFR状态,复位后内部各SFR的状态:看P25表2.5。,一条指令可分解为若干个基本的微操作,而这些操作所对应的脉冲信号在时间上有严格的先后次序,这种次序就称为计算机的时序。要求掌握以下几个概念:,二、CPU的时序,振荡周期T振:也称时钟周期,指为单片机提供时钟信号的振荡源的周期,当晶振频率为12MHz时T振=1/12us。,CPU的时序,机器周期T机:指CPU完成某些基本操作的所需要的时间,1个机器周期包含6个状态周期。T机=6T状=12T振=1us。,2.状态周期T状:也称S周期,由两个振荡周期组成一个状态周期。如上例中:T状=Ts=21/12=1/6us。,CPU的时序,指令周期T指:指令周期是指执行一条指令所需要的时间,一般情况下,T指=(14)T机,MCS51系列单片机执行一条最长的指令(如乘、除法指令)需要4个机器周期,即4us时间。,第二章补充练习,MCS-51单片机内256B的数据存储器可分为哪几个区?分别作什么用?开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?MCS-51单片机的程序存储器和数据存储器共处同一地址空间为什么不会发生总线冲突?位地址7CH与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置?,第三章MCS-51单片机指令系统及编程举例,【学习目标】通过本章的学习,学生应该能够:熟练地掌握符号指令及寻址方式,掌握常用伪指令的使用方法以及汇编语言指令的完整格式,会读常见典型程序,学会编写基本的汇编语言程序。,重点和难点内容:MCS-51寻址方式、指令系统及汇编语言程序的编写方法。,解决方法:详细讲解,多举实例,不断重复要点,增加练习。,课外指导:答疑。,教学效果检测方法:质疑,批阅作业并结合期中考试。,指令:是控制计算机进行各种操作的运算代码形式的命令(MCS-51有42种助记符33个指令功能共111条指令)。,指令系统:计算机所能识别执行的全部指令的集合称作这种计算机的指令系统。各种计算机的指令系统各不相同。,本章常用术语简介:,机器码:计算机所能辨认的命令是二进制代码,又称操作码或指令代码称。一种计算机有几十种甚至几百中指令,如果都用二进制代码,记忆、书写,编程都很不方便,且易出错。,程序:是人们为了完成某中预定的任务,将一系列指令、数据,地址按一定顺序排列而得到的一组指令。,汇编语言源程序:用助记符(操作码)、符号地址和标识符等书写的程序称之为汇编语言源程序。,助记符:为解决上述问题,制造厂家对指令系统中的每一条指令规定了特定的英文缩写符号称为助记符。,MOVA,R0;AR0内容,MOV称指令助记符对应的机器码为:11111000,汇编:汇编语言源程序在机器执行前必须先转换为相应的机器码方可被机器识别执行,这个过程称为翻译(汇编)。翻译汇编语言源程序的方法有两种:人工翻译和汇编软件自动翻译。,本章第一次作业:教材P55习题与思考题2,4,7,8(4),10,补充作业:请用位操作指令编写实现下面逻辑表达式的程序。PSW.5=P1.3Acc.2+B.5P1.1,3.1指令格式简介3.2MCS-51的寻址方式3.3指令系统3.4伪指令3.5汇编程序设计及应用举例,本章主要内容,第一节指令格式简介,汇编语言的标准格式为:标号:指令助记符操作数1,操作数2,操作数3;注释,标号:是用户定义的符号,它代表该条指令的符号地址,标号也称标识符。,标号组成:以英文字母开始,由18个字符(字母、数字和下划线“-”)组成,以“:”结尾。,操作码助记符:是汇编语言中每一行不可缺少的部分,它规定了指令的操作功能,操作码助记符是由25个字母组成的字符串,也是机器的保留字,操作码与操作数之间要用若干空格分开。,注意:标号不能使用机器的保留字。一个程序中不允许重复定义标号。,操作数:可以是具体的数字,也可以是符号或RS名,操作数可分为源操作数SRC(source)和目的操作数DST(destination),二者用逗号分开,有些指令无操作数。,带的内容可省。,注释:注释必须以“;”开头,可有可无,可由任何可打印的ASCII码字符组成,用于解释说明程序。,第二节MCS-51的寻址方式,例:movA,#data;A将数字data特点:,指令操作码后面的一个字节就是操作数本身,立即数是放在程序存储器中的一个常数。,1.立即寻址:,所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀。,#为立即数的前缀符号,data可为16位,也可为8位。,MCS-51系列只有一条指令,其立即数为16位,这就是:MOVDPTR,#data16;DPHdata高8位;DPLdata低8位,2.直接寻址:,例:MOVA,70H;ARAM区70H单元的内容。特点为:,指令中直接给出操作数的地址。,指令操作码后面的一个字节就是实际操作数的地址(8位)。,因为direct是8位二进制数,所以直接寻址的范围主要有以下三个地址空间:,指令中的直接地址可用direct表示。例:PUSHdirect;功能为将direct所指;示的片内RAM中单元;的内容堆栈中。,内部RAM及SFR中,可进行位寻址的位地址空间共213位(内部RAM中有20H2FH中有128个位,SFR中有85位)。,内部RAM00H7FH地址空间共128个字节;特殊功能R,即SFR(直接寻址是访问SFR的唯一寻址方式);,3.寄存器寻址:操作数存放在工作寄存器R0R7中,或寄存器A、B、DPTR和C中。例:MOVA,Rn;A(Rn),n=07特点:Rn的内容就是操作数本身;,寻址范围是:被选中的工作RS组中的8个workRS,R0R7及A,B,DPTR和进位标志CY(C)。,R中的内容不是操作数本身而是其所在存储单元的地址值,即R0指示了操作数所在存储单元的地址值。,4.寄存器间接寻址:(间址寻址),指令中寄存器的内容作为操作数存放的地址,在指令中间接寻址寄存器前用“”表示前缀。,例:MOVA,R0;A(R0);将R0所指向存储单元的内容A中特点:,可用作间址RS的register有workRS(R0,R1)、数据指针DPTR。,例如:“一本书放在甲抽屉中,上了锁;其开锁的钥匙放在乙抽屉中,乙抽屉也上了锁。问如何才能取到那本书?”答:这就是一个间接寻址的问题,要经过两次寻址才能找到那本书。而寄存器间接寻址也是同样。,间址寻址的范围:R0、R1、SP作为间址RS可以访问内部RAM的128个字节。,DPTR作为间址RS可访问外部RAM全部的64KB空间。,R0、R1作为间址RS可以访问外部数据存储器RAM页内256个字节(可用P2口选中页面,64KB的RAM可分为256个页面)。,间址寻址方式有:ADDA,Ri;i=0或1MOVRi,direct;i=0或1MOVXA,DPTR,又称变址寻址,有两种方式:MOVCA,A+PC;A(A+PC)MOVCA,A+DPTR;A(A+DPTR)特点:,5.基址寄存器加变址RS间接寻址:,操作数地址=变地址+基地址基地址寄存器DPTR或PC变址寄存器A,是MCS-51单片机特有的一种寻址方式,它以地址指针DPTR或程序计数器PC(当前值)为基地址R,以累加器A作为变址R,这二者内容之和才是实际操作数地址。,A是无符号8位数(00HFFH)。寻址的范围是68K字节的程序存储器EPROM。,该寻址方式常用于访问程序存储器和查表。两条指令的区别为:前者查表的范围是相对PC当前值以后的255字节地址空间,而后者查表范围可达整个程序存储器64K字节的地址空间。,6相对寻址:,把指令中给定的地址偏移量与下一条将要执行的指令所在单元地址(PC内容)相加,得到真正有效的操作数所存放的地址值。,例:JCrel;若PSW中CY=1,则转移至PC=PC当前值+rel处,若PSW中CY=0,PC不变。特点:,以程序计数器PC当前值内容为基地址,加上指令中给定的偏移量作为操作数的存储地址。,位移量rel为带符号的8位二进制数,必须以补码形式出现,所以rel的范围为+127-128,即该种寻址方式的寻址范围为:以当前PC内容为起点向下可偏移128字节,向上可转移127个字节。,7.位寻址:专门用于位操作指令,可对MCS-51中213个位进行运算和传送的操作,且本寻址方式只能使用专用累加器C。,例:MOVC,20H,第三节指令系统及应用举例,MCS-51单片机共有111条指令,用42个助记符表示了33种指令功能,同一种指令所对应的操作码可多达8种,指令按其功能可分为5大类:数据传送类,算术运算类,逻辑运算类,控制转移类,位操作指令。,指令中操作数的描述符号:Rn工作寄存器R0R7Ri间接寻址寄存器R0、R1Direct直接地址,包括内部128BRAM单元地址、21个SFR地址。#data8位常数#data1616位常数addr1616位目的地址addr1111位目的地址rel8位带符号的偏移地址DPTR16位外部数据指针寄存器bit可直接位寻址的位,direct可表示片内RAM00H7FH(128B)的内存空间和SFR的地址,但不包括A、DPTR、Rn寄存器。,除以direct为DST外,其它指令都不影响PSW中除P以外的其它位,以A为DST的指令会影响PSW中的P位。,一、数据传送类指令:分为五部分共29条,看P41表3.1。特点如下:,访问ROM和片外RAM的指令所使用的寄存器只能是专用寄存器A。通常SRC可以是:A,Rn,direct,Ri和#data5种,而DST只能有4种(不能是#data)。访问SFR的唯一寻址方式是直接寻址,SFR的名称代表直接地址(A寄存器除外)。,数据传送类指令总结,注意:以下指令均为非法指令。MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,AMOVX30H,DPTRMOVCB,A+DPTR,哇!好容易出错啊!,例1设内部RAM30H单元内容为52H,给出以下程序执行后(R0)=?(A)?(30H)?及30H在不同指令中的作用。,MOVA,#30HMOVA,30HMOVR0,#30HMOVA,R0MOV30H,#30H,;A30H;A(30H),即(A)=52H;R030H;A(R0),即(A)=52H;(30H)30H,解:(R0)=30H,(A)=52H,(30H)=30H其中:第一,三,五句中#30H为立即数,第二,五条指令中30H为直接地址,第四条指令R0中的30H为隐含的间接地址。,例2.已知P1口内容为0AAH,给出下列程序执行的结果及相应的机器码(P214表A.1)。,,,;7830H;851090H;E510H;F6H;8640H,例3.设片内RAM30H单元内容为40H,40H单元中的内容为10H,P1口上的内容为0CAH,给出执行以下程序的结果。,,,;();()();();()();(40H)(P1);()(),例4.设片外(),(0),分析下面程序执行的结果。,,,;();();();(),,,;();(H);()=44H;()(2030H);();(),例5设堆栈指针(SP)=11H,(PSW)=00H,给出下面程序执行的结果。,MOV20H,#53HPUSH20HPOPPSW,;(20H)53H;(SP)=(SP)+1,(SP)=12H;53H(SP)(12H);PSW(SP)=53H,;(SP)=(SP)-1,(SP)=11H,例3、试编写一程序段,实现将外RAM0FAH单元中的内容传送到外RAM04FFH单元中。,解:MOVP2,#00HMOVDPTR,#04FFHMOVR0,#0FAHMOVXA,R0MOVXDPTR,A,小结:数据传送类指令有几种类型?哪些影响哪个标志位?,二、算术运算类指令:(看P45表3.2),此类指令具有加,减,乘,除指令,它们一般对PSW的CY、AC、OV和P各位均有影响,对其余四位不影响,但INC与DEC指令不影响PSW的内容。,具体特点如下:,加减法指令的DST只能是A,SRC可为其它四种方式,减法指令只有带进位减助记符。,除法中,OV=1表示除数为0,A、B中的内容均不定,其它情况OV=0。,乘法中,OV=1表示乘积大于255,OV=0表示乘积小于255。,加1减1指令不影响PSW除P位以外的其它位。乘、除法中CY=0。,程序中DAA指令必须紧跟在加法指令之后。,再判断当PSW中的CY=1或A寄存器中高4位值大于9,则对A寄存器中高4位内容进行加6处理;,先判断当PSW中的AC=1或A寄存器中低4位值大于9,则对A寄存器中低4位内容进行加6处理;,十进制加法调整指令DAA的调整原理为,在操作数为十进制时,加法指令执行后:,类型,助记符,功能,对PSW的影响,字节数,振荡周期,算术运算类指令,例1:给出以下程序执行结果及对程序状态字PSW的影响。,;(30H)=43H;(A)=7AH;(R0)=30H;(A)=(30H)+7AH=0BDH,MOV30H,#43HMOVA,#7AHMOVR0,#30HADDA,R0,上述结果对于无符号数而言为正确,但对有符号数而言不正确。(因为2个正数相加得到一个负数,所以一定是发生了溢出,结果不正确。),执行程序以后,据以上结果知PSW中:,CY=D7CY=0,AC=D3CY=0,奇偶位P=0,OV=D7CYD6CY=01=1,MOVR0,#7EHMOV7EH,#0FFHMOV7FH,#38HMOVDPL,#0FEHMOVDPH,#10HINCR0INCR0INCR0INCDPTRINCDPTR,;(R0)=7EH;(7EH)=0FFH;(7FH)=38H;(DPL)=0FEH;(DPH)=10H;(7EH)+1=0FFH+1=00H(7EH);(R0)=7FH;(7FH)+1=38H+1=39H(7FH);(DPTR)=10FEH+1=10FFH;(DPTR)=10FFH+1=1100H,例2分析执行以下程序段的结果。,MOVA,#0C4HSUBBA,#55H,例3设进位位C=1,给出执行以下程序片断后A寄存器的结果及对PSW的影响。,;(A)=0C4H;A(A)-55H-(C),以上结果对于无符号数而言为正确,(OV)=1无意义,对于符号数则(OV)=1表示结果为错误,负数减正数结果应为负数,而6EH为正数,原因是因为符号数C4H真值为-3CH,所以C4H-55H-1=(-3CH)-56H=-92H,而-92H=-146已超出8位二进制数所能表示的最大负数。(-128)。,其中:(A)=6EH,(CY)=D7CY=0,(AC)=D3CY=1,(P)=1(OV)=D7CYD6CY=01=1,,例4设累加器A中内容为89的BCD码,即10001001,R0中的内容为28的BCD码,即00101000,求执行下面程序后,A中结果及正确的BCD码值应为多少?,ADDA,R0DAA,;(A)+(R0)A,即(A)=B1H,即非十进制正确结果,也非十六进制正确结果;(A)=17H,这里,因为(C)=1,所以正确答案为117。,因为在执行DAA指令时,首先由于(AC)=D3CY=1,所以对A中低4位内容加6调节,使A的低4位变为0111,然后又由于A中高4位内容大于9,所以对A中高4位内容再加6进行调整,使其变为0001,同时使进位位(CY)=1,则最终得到结果为117。,以累加器A作为DST,SRC可以是#data,Rn,direct(内部RAM低128B或SFR)和Ri四种方式。,三、逻辑运算类指令:看P49表3.4。,逻辑运算类指令主要用于逻辑运算中,主要可以分为两大类:,2.以direct为DST,而以A或#data为SRC的操作指令。,三、逻辑运算类指令:看P45表3.4。,逻辑与(ANL):按位相与,特点是清0或屏蔽,操作数和0相与结果为0,和1相与原内容保持不变。,3单操作数的指令,操作数必须放在A中。4各类指令的特点为:,特点:此类指令除RLC和RRC指令外,均不影响PSW中除P以外的其他位,而RLC和RRC也只影响P与C位。,逻辑运算类指令,逻辑异或指令(XRL)对操作数中的某一位或某几位进行取反(两个操作数不同出1,相同出0),具体方法为:操作数和1相异或内容被取反,和0相异或原内容保持不变。看例3。,逻辑或(ORL):按位相或,特点是置1,操作数和1相或结果为1,和0相或原内容保持不变。看例1及例2。,逻辑循环右移(RL):,特点是在操作数最高低为0的条件下,操作数每被左循环移位一次,其内容相当于被除2。看例4。,逻辑循环左移(RL):,特点是在操作数最高位为0的条件下,操作数每被左循环移位一次,其内容相当于被乘2。,MOVA,#0F0HANLP1,#00HORLP1,#55HORLP1,AANLP1,A,;(A)=0F0H;P1=00H;P1=55H;P1=0F5H;P1=0F0H,例1:给出下列两段程序执行的结果。,;屏蔽A中高5位;去掉P1中的低3位;P120A20,例2:要求编程把累加器中的低3位传送到P1口,传送时不影响P1口的高5位。,ANLA,#07HANLP1,#0F8HORLP1,A,例3:MOVA,#42HXRLA,#52H,例4:分析以下程序执行的结果,MOVA,#08HRLARLARLARRARRA,;(A)=08H;左移一位,(A)=10H;左移一位,(A)=20H;左移一位,(A)=40H;右移一位,(A)=20H;右移一位,(A)=10H,例5:分析以下程序执行的结果,CLRCMOVA,#99HRLAMOVA,#99HRRCA,;(C)=0;(A)=99H;左移一位,(A)=33H;(A)=99H;带进位位右循环一位,(A)=4CH,(C)=1,例6:已知片内RAM的DAT单元存放着一个小于20的无符号数,分析以下程序实现的功能.,MOVR0,#DATMOVA,R0RLAMOVR1,ARLARLAADDA,R1MOVR0,A,;功能为:将DAT单元的内容乘以10,;注意:DAT单元数的最大值为20=1EH,即1EH=00011110,四、控制程序转移类指令:看P51表3.5。,(3)访问-128127B存储空间的指令有SJMP和条件转移类指令。,其中:(1)访问64KB存储空间的指令有LCALL、LJMP、JMP。(2)访问2KB存储空间的指令有ACALL、AJMP。,四、控制程序转移类指令:看P47表3.5。,(5)CJNE指令的第一操作数可以是A、Rn和Ri,而第二操作数只能是#data和direct,且指令只影响PSW中的CY位,无论转移与否,CJNE指令均影响CY的值,但它执行后不影响各操作数(第一与第二)的内容。,(4)除CJNE指令外,其余指令对PSW中各值均无影响。,指令中的rel为一个8位符号数,表示要转移的相对地址值。,(6)如果整个程序的口地址发生改变,只要程序中各指令的相对位置不发生变化,则SJMP和条件转移中的各地址均不发生变化,但长转移与绝对转移指令LJMP,AJM和JMP中地址值均发生变化,要修改程序中的相应地址值。,注意:MCS-5164Kmemory分为16段,32个区,256页,每段包括2个区,每区2K字节,划分方法如下:EPROM16位地址码中高8位定义为页地址,低8位为页内地址,所以64Kmemory分为256页,每页256个字节,规定每8页为一个2K区(8*256),页地址(高8位地址)可以写成两位16进制数XhXlH,其中,高位16进制数Xh由0F定义为16个段,(低8位Xl由07页定义第一个2K区,8F页定义第二个2K区,低8位Xl的值表示段内具体的页码)。XL的07页定义为某段内第一个2K区,XL的08页定义为第二个2K区。,例如:AJMP3ABCH;设此指令执行前(PC)=289AHAJMP3DEFH;设此指令执行前(PC)=37FEHAJMP3BCDH;设此指令执行前(PC)=3456H,解释:第2条指令的操作码位于第3段7页内,目的地址处于第3段第D页内,与(PC)+2(3段8页)处于同一2K范围内,所以此指令正确,执行此指令的功能是:,保持PC15PC11值不变,将目的地址3ABCH的第100位(01010111100B),使(PC)=0011101010111100B。,(PC)=(PC)+2=3ABEH,PC15PC11=00111,,解释:第一条指令的操作码位于第3段第8页(因为(PC)=389AH),而目的地址为3ABCH,处于第3段A页内,与(PC)+2处于同一个2K范围内,所以此指令使用正执行后的功能使(PC)=3ABCH,即使程序转向指定地址执行指令,指令的执行过程为,定义:PC当前地址=(SJMP指令第一字节所在地址+2),(PC)=3DEFH。,解释:第3条指令(PC)=3456H,所以(PC)+2=3458H处于EPROM中3段第4页内,目的地址为3BCDH,处于PROM中第3段B页内,与第3段4页内的程序不属于同一个2K地址范围,所以此处AJMP指令使用错误。,注意2:手工汇编计算相对地址rel的方法:rel=目的地址(SJMP指令第一字节所在地址+2)=目的地址(PC+2)=目的地址PC当前值,规定:当目的地址大于PC当前地址时,rel值应在007FH之间(正值),若rel值大于7FH时,说明向后跳转超过+127,超出本指令应用范围,不能用本指令。当目的地址小于PC当前地址时,应有:目的地址P

温馨提示

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

评论

0/150

提交评论