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

下载本文档

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

文档简介

单片机原理及应用李建忠课件第一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第1页。3.1MCS-51单片机指令系统概述★指令、指令系统的概念

指令:计算机内部执行的一种操作,提供给用户编程使用的一种命令。

指令系统:计算机能够执行的全部操作所对应的指令集合。

第二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第2页。

■指令的三种属性

功能属性:每条指令都对应一个特定的操作功能;

时间属性:一条指令执行所用的时间;

空间属性:一条指令在程序存储器中存储所占用的字节数。第三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第3页。★MCS-51单片机指令系统及其指令格式

功能:数据传送、算术操作、逻辑操作、程序转移、位操作等五大类;

空间属性:单字节指令(49条)、双字节指令(46条)和最长的三字节指令(只有16条)。

时间属性:单机器周期指令(64条)、双机器周期指令(45条)和只有乘、除法两条4个机器周期的指令。第四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第4页。

结构:操作码+操作数。

操作码:表示计算机执行该指令将进行何种操作。

操作数:表示参加操作的数的本身或操作数所在的地址。(无操作数、单操作数、双操作数)第五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第5页。

指令格式:

[标号:]操作码助记符[目的操作数][,源操作数][;注释]第六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第6页。

■描述指令的一些符号的约定意义的说明:▲Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取0~7,表示R0~R7。▲#data:表示包含在指令中的8位立即数。▲#data16:表示包含在指令中的16位立即数。▲rel:以补码形式表示的8位相对偏移量,范围为-128~127,主要用在相对寻址的指令中。第七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第7页。

▲addr16和addr11:分别表示16位直接地址和11位直接地址。▲direct:表示直接寻址的地址。▲bit:表示可位寻址的直接位地址。▲(X):表示X单元中的内容。▲((X)):表示以X单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用((X))表示。▲/和→符号:“/”表示对该位操作数取反,但不影响该位的原值。“→”表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。第八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第8页。3.2寻址方式寻址方式:CPU执行一条指令时怎样找到该指令所要求的操作数的方式。第九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第9页。★立即寻址★寄存器寻址★寄存器间接寻址★直接寻址★变址寻址★相对寻址★位寻址第十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第10页。★立即寻址

操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。

*在一个数的前面冠以"#"符号作前缀。

第十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第11页。★寄存器寻址

在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作。

*ACC,DPTR,AB,Rn,Cy第十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第12页。★寄存器间接寻址

由指令指出某一寄存器的内容作为操作数地址的寻址方法。

*寄存器中的内容不是操作数本身,而是操作数的地址,到该地址单元中才能得到操作数。

*@Ri,@DPTR*可寻址内部RAM(@Ri)和外部数据存储器(@Ri,@DPTR)第十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第13页。图3.1寄存器间接寻址示意图第十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第14页。★直接寻址

指令中直接给出操作数所在的存储器地址供存取数。

*直接寻址可用于访问片内数据存储器(低128字节)、SFR。第十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第15页。★变址寻址基址寄存器加变址寄存器两者内容的和作为程序存储器地址,再寻址该单元,读取数据。

*以数据指针寄存器DPTR或PC作为基址寄存器,累加器A作为变址寄存器(@DPTR+A,@PC+A)。

*常用于访问程序存储器中的常数表。第十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第16页。图3.2变址寻址示意图第十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第17页。★相对寻址

以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址。

*用于访问程序存储器,常出现在相对转移指令中。

*当前PC值指相对转移指令的存储地址加上该指令的字节数。

*偏移量rel是有符号的单字节数,以补码表示,范围是-128~+127。转移的地址(目的地址)为:目的地址=当前PC值+rel=指令存储地址+指令字节数+rel第十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第18页。★位寻址

在位操作指令中直接给出位操作数的地址。

*片内RAM中的128位和特殊功能寄存器SFR中的93位。第十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第19页。3.3数据传送类指令第二十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第20页。★访问片内数据存储器的一般数据传送指令

功能:实现数在片内RAM单元之间、寄存器之间、寄存器与RAM单元之间的传送。

格式:MOV<目的操作数>,<源操作数>;目的操作数单元←源操作数(或单元)第二十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第21页。图3.3访问片内RAM的一般传送指令操作关系图第二十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第22页。表3.1访问片内RAM的一般传送指令表第二十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第23页。第二十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第24页。★片内特殊传送指令▲堆栈操作指令第二十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第25页。(SP)←(SP)-1修改指针,指向新栈顶

(direct)←((SP)+1)把栈顶的数据弹出到直接寻址单元中去

PUSHdirect;

POPdirect;

((SP))←direct把直接地址单元的内容压入SP所指单元内

(SP)←(SP)+1修改指针,使其指向栈顶上的一个存数单元

*机器码分别为:C0direct和D0direct。第二十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第26页。

▲数据交换指令第二十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第27页。★片外数据存储器数据传送指令指令助记符 操作功能注释 机器码(H)MOVXA,@DPTR ;(A)←((DPTR)) E6MOVXA,@Ri ;(A)←((Ri)) E2、E3MOVX@DPTR,A ;((DPTR))←(A) F0MOVX@Ri,A ;((Ri))←(A) F2、F3*对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。第二十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第28页。★访问程序存储器的数据传送指令

指令助记符操作功能注释 机器码(H)MOVCA,@A+DPTR ;(A)←((A)+(DPTR)) 93MOVCA,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC))83

第二十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第29页。

*访问程序存储器的数据传送指令又称作查表指令,采用基址寄存器加变址寄存器间接寻址方式。*前一条指令采用DPTR作基址寄存器,数据表格可以存放在程序存储器64KB地址范围的任何地方。*后一条指令以PC作为基址寄存器,查表范围只能在256个字节范围内。编程时需要进行偏移量的计算,即MOVCA,@A+PC指令所在地址与表格存放首地址间的距离字节数的计算,并需要一条加法指令进行地址调整。偏移量计算公式为:偏移量=表首地址-(MOVC指令所在地址+1)第三十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第30页。3.4算术运算类指令算术操作类指令共24条,包括加法、带进位加法、带减位减法、加1、减1、乘除及十进制调整指令。

*算术运算结果影响标志位Cy、AC、OV、P。第三十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第31页。表3.2加减法指令表第三十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第32页。★加、减法指令图3.4加减法指令形式结构图(a)加减法指令关系图;(b)加1、减1指令关系图第三十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第33页。★十进制调整指令若(A)3~0>9或(AC)=1,则(A)3~0←(A)3~0+06H若(A)7~4>9或(CY)=1,则(A)7~4←(A)7~4+06HDAA;第三十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第34页。

*若AC=1,CY=1同时发生,或者高4位虽等于9但低4位修正后有进位,则A应加66H修正。

*十进制调整指令是一条对二-十进制的加法进行调整的指令。两个压缩BCD码按二进制相加,必须在加法指令ADD、ADDC后,经过本指令调整后才能得到正确的压缩BCD码和数,实现十进制的加法运算。*DA指令不能对减法进行十进制调整。做减法运算时,可采用十进制补码相加,然后用DAA指令进行调整。机内十进制补码可采用:[x]补=9AH-∣x∣。第三十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第35页。★乘、除法指令MULAB;(B)←((A)×(B))15~8(A)←((A)×(B))7~0CY←0机器码:A4H

*乘数放在累加器A和寄存器B中,乘积16位数中的低8位存放在A中,高8位存放在B中。

*若乘积大于FFH(255),OV置1,否则OV清零。

*乘法指令执行后CY总是零。第三十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第36页。2.除法指令DIVAB; (A)←(A)÷(B)之商,(B)←(A)÷(B)之余数 (CY)←0,(OV)←0机器码:84H

*被除数放在累加器A,除数放在寄存器B中,商存于累加器A中,余数存于寄存器B中。

*进位标志位CY和溢出标志位OV均被清零。

*若B中的内容为0,OV被置1,CY仍为0。第三十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第37页。3.5逻辑运算及移位指令表3.3逻辑操作指令表第三十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第38页。表3.3逻辑操作指令表第三十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第39页。图3.5逻辑指令形式结构图与加、减法指令寻址方式相同的逻辑指令;(b)与加、减法指令寻址方式不同的逻辑指令第四十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第40页。

*

逻辑“或”指令常用来使字节中某些位置“1”,其它位保持不变。则欲置位的位用"1"与该位相或,保留不变的位用"0"与该位相或。第四十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第41页。

*逻辑"异或"指令常用来使字节中某些位进行取反操作,其它位保持不变。欲某位取反该位与"1"相异或;欲某位保留则该位与"0"相异或。还可利用异或指令对某单元自身异或,以实现清零操作。第四十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第42页。

*用移位指令还可以实现算术运算,左移一位相当于原内容乘以2,右移一位相当于原内容除以2,但这种运算关系只对某些数成立。第四十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第43页。3.6控制转移类指令控制转移类指令共17条,分为无条件转移指令、条件转移指令、子程序调用及返回指令。第四十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第44页。3.6控制转移类指令★无条件转移指令表3.4无条件转移指令第四十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第45页。1.LJMP(长转指令)LJMPaddr16

*执行后,程序无条件地转向16位目标地址(addr16)处执行,不影响标志位。

*可以使程序从当前地址转移到64KB程序存储器地址空间的任意地址。

*执行时间长,字节多。第四十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第46页。2.AJMP(绝对转移指令)AJMPaddr11

*AJMP的机器码组成:a10 a9a800001a7a6a5a4a3a2a1a0第四十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第47页。

*程序转移的目的地址是由AJMP指令所在位置的地址PC值加上该指令字节数2,构成当前PC值。取当前PC值的高5位与指令中提供的11位直接地址形成转移的目的地址。

转移目的地址(PC)PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0第四十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第48页。

*程序可转移的位置和PC当前值在同一2KB范围内。转移可以向前也可以向后,指令执行后不影响状态标志位。例:1、若AJMP指令地址(PC)=2300H。执行指令AJMP0FFH后,转移目的地址(PC)=20FFH,程序向前转到20FFH单元开始执行。2、AJMP指令地址(PC)=2FFFH。执行指令AJMP0FFH后,结果为:转移目的地址(PC)=30FFH,程序向后转到30FFH单元开始执行。

*若addr11相同,AJMP指令的机器码相同,转移的目的地址却可能不同。第四十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第49页。3.SJMP(相对短转指令)SJMPrel

*rel用8位带符号数补码表示,转移范围是:相对PC当前值向前转128字节,向后转127字节。 转移目的地址=SJMP指令所在地址+2+rel*手工汇编时,rel的计算公式:向前转移:rel=FEH-(SJMP指令地址与目的地址差的绝对值)向后转移:rel=FEH-(SJMP指令地址与目的地址差的绝对值)-2

*SJMP$(80FEH)造成单指令的无限循环,进入等待状态。第五十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第50页。4.JMP@A+DPTR(相对长转移指令)

*数据指针DPTR的内容为基址,以累加器A的内容为相对偏移量,在64KB范围内无条件转移。

*转移地址可以在程序运行中加以改变。第五十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第51页。★条件转移指令

共有8条指令,分为累加器判零条件转移指令、比较条件转移指令和减1条件转移指令三类。第五十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第52页。

*当某种条件满足时,程序转移执行;条件不满足时,程序仍按原来顺序执行。

*转移的条件可以是前面指令的执行结果(标志位),也可以是条件转移指令本身包含的某种运算结果。

*

指令采用相对寻址,程序可在以当前PC值为中心的-128~+127范围内转移。第五十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第53页。表3.5条件转移指令第五十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第54页。1.判零条件转移指令

以累加器A的内容是否为0作为转移的条件。JZ指令:为0转移,不为0则顺序执行;JNZ指令:不为0转移,为0则顺序执行。

累加器A的内容由这条指令以前的指令执行的结果决定。指令不作任何运算,也不影响标志位。第五十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第55页。2.比较转移指令

*先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。若两个操作数相等,则不转移,程序顺序执行;若两个操作数不等,则转移。

*比较是进行一次减法运算,但其差值不保存,两个数的原值不受影响,标志位要受到影响。利用标志位CY作进一步的判断,可实现三分支转移。第五十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第56页。3.减1条件转移指令

*第一操作数减1,结果仍保存在第一操作数中,然后判断是否为零。若不为零,则转移到指定的地址单元,否则顺序执行。

*对于构成循环程序是十分有用的,可以指定任何一个工作寄存器或者内部RAM单元作为循环计数器。第五十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第57页。3.7子程序调用与返回指令第五十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第58页。★子程序调用指令子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。第五十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第59页。第六十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第60页。

*LCALL和ACALL指令类似于转移指令LJMP和AJMP,不同之处在于它们在转移前要把执行完该指令的PC内容自动压入堆栈后,才将子程序入口地址addr16(或addr11)送PC,实现转移。

*LCALL可调用64KB范围内的子程序。该指令为3字节,所以执行该指令时首先应执行(PC)←(PC)+3,获得下一条指令地址,并把此时的PC内容压入堆栈(先压入低字节,后压入高字节)作为返回地址,堆栈指针SP加2指向栈顶,然后把目的地址addr16送入PC。

*指令执行不影响标志位。第六十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第61页。

*ACALL与AJMP一样提供11位地址,只能调用与PC在同一2KB范围内的子程序。指令为2字节指令,执行该指令时应执行(PC)←(PC)+2以获得下一条指令地址,并把该地址压入堆栈作为返回地址。

*机器码的组成如下:a10a9a810001a7a6a5a4a3a2a1a0

*被调用子程序的目的地址由执行ACALL指令的当前PC值的高5位与指令中提供的11位直接地址形成。第六十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第62页。★返回指令第六十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第63页。

*RET指令必须作子程序的最后一条指令;RETI必须作中断服务程序的最后一条指令。*RETI指令除恢复断点地址外,还恢复CPU响应中断时硬件自动保护的现场信息。执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能恢复返回地址。第六十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第64页。★空操作指令NOP;(PC)←(PC)+1

*在设计延时程序、拼凑精确延时时间及在程序等待或修改程序等场合是很有用的。第六十五页,共83页单片机原理及应用李建忠课件全文共83页,当前为第65页。3.8位操作类指令第六十六页,共83页单片机原理及应用李建忠课件全文共83页,当前为第66页。

位地址的表示方法:■直接位地址表示,如D5H。■点表示,如PSW.5。■位名称表示,如直接用F0表示。■用户定义名称表示,如用户定义用FLG代替F0。第六十七页,共83页单片机原理及应用李建忠课件全文共83页,当前为第67页。表3.6条件转移指令第六十八页,共83页单片机原理及应用李建忠课件全文共83页,当前为第68页。图3.6硬件逻辑电路图第六十九页,共83页单片机原理及应用李建忠课件全文共83页,当前为第69页。3.9伪指令

伪指令能够帮助进行汇编,不产生目标程序,不影响程序的执行。主要用来指定程序或数据的起始位置,给出一些连续存放数据的地址或为中间运算结果保留一部分存储空间以及表示源程序结束等等。第七十页,共83页单片机原理及应用李建忠课件全文共83页,当前为第70页。

★设置目标程序起始地址伪指令ORG格式:[符号:]ORG地址(十六进制表示)功能:放在一段源程序(主程序、子程序)或数据块的前面,规定后面的目标程序或数据块的起始地址。 ORG2000H START:MOVA,#7FH

*一个源程序中,可以多次使用ORG指令来规定不同程序段的起始位置,但各程序段之间不能重叠。…第七十一页,共83页单片机原理及应用李建忠课件全文共83页,当前为第71页。

★结束汇编伪指令END格式:[符号:]END功能:汇编语言源程序的结束标志,表示汇编结束。

*一个源程序只能有一个END命令,否则就有一部分指令不能被汇编。END前面若加标号,应与被结束程序段的起始点的标号一致,表示结束的是该程序段。第七十二页,共83页单片机原理及应用李建忠课件全文共83页,当前为第72页。

★定义字节伪指令DB格式:[标号:]DB项或项表功能:把项或项表的数据(字符串按字符顺序以ASCII码)存入从标号地址开始的连续存储单元中。项或项表指一个字节数据,用逗号分开的字节数据串,或以引号括起来的字符串。

第七十三页,共83页单片机原理及应用李建忠课件全文共83页,当前为第73页。ORG2000HTAB1:DB30H,8AH,7FH,73DB'5','A','BCD'(2000H)=30H(2001H)=8AH(2002H)=7FH(2003H)=49H;十进制数73以十六进制数存放(2004H)=35H;35H是数字5的ASCII码(2005H)=41H;41H是字母A的ASCII码(2006H)=42H;42H是字符串'BCD'中B的ASCII码(2007H)=43H;43H是字符串'BCD'中C的ASCII码(2008H)=44H;44H是字符串'BCD'中D的ASCII码第七十四页,共83页单片机原理及应用李建忠课件全文共83页,当前为第

温馨提示

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

评论

0/150

提交评论