MCS单片机综合应用_第1页
MCS单片机综合应用_第2页
MCS单片机综合应用_第3页
MCS单片机综合应用_第4页
MCS单片机综合应用_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、MCS单片机综合应用0000H0000H0FFFH0FFFFH64KB80C5180C52SFR扩展扩展RAM00H7FH80H0FFH0000H0FFFFH片内片内ROM片内片内RAMa、程序存储器、程序存储器b、数据存储器、数据存储器扩展扩展ROM0FFFFH1000H扩展扩展ROMEA=1EA=04KB60KB3.1.1 指令系统概指令系统概述述3.1.2 MCS-51指令格式指令格式 指令的表示方法称为指令格式。 一条指令由两部分组成,即操作码和操作数。 操作码用来规定指令进行什么操作。 操作数是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。 指令

2、是供用户使用的单片机的软件资源。 指令系统是指一台计算机所能执行的指令集合。 一字节指令一字节指令(49条条) 只有一个字节,操作码和操作数信息同在其中。例:INC DPTR 其功能为数据指针加1,指令码为:1010001111101rrr例:MOV A,Rn 其功能为寄存器向累加器传送数据,指令码为:w 二字节指令二字节指令(45条条) 操作码操作数例:立即数传送指令 MOV A,data ,指令码为:0111 0100立 即 数w 三字节指令三字节指令(17条条) 操作码(1字节)操作数(2字节)例:逻辑与操作指令 ANL direct,data ,指令码为:0101 0011直 接 地

3、址立 即 数3.1.3 MCS-51单片机寻址单片机寻址方式方式寄存器寻址方式直接寻址方式寄存器间接寻址方式立即寻址方式变址寻址方式位寻址方式相对寻址方式1)寄存器寻址方式寄存器寻址方式 以通用寄存器的内容为操作数的寻址方式。 例如: MOV A,R013HAR013H寄存器寻址方式的寻址范围包括: 寄存器寻址的主要对象是通用寄存器,共有4组共32个通用寄存器,即R0R7,此时使用的是当前寄存器组,通过对PSW中的RS1、RS0位的状态设置。 部分专用寄存器,如:A、B、DPTR等。 指令中直接给出操作数地址的寻址方式。直接寻址方式使用的是8位二进制数表示的地址,寻址范围只限于内部RAM。 直

4、接寻址方式的寻址范围包括:低低128单元单元 例如: MOV A,3AH2)直接寻址方式直接寻址方式13HA3AH13H专用寄存器专用寄存器SFR 直接寻址是访问专用寄存器的唯一方法。例如: MOV PSW,#20H;或MOV 0D0H,#20H 3)寄存器间接寻址方式寄存器间接寻址方式寄存器中存放的内容为地址,以该地址中的内容作为操作数的寻址方式。在寄存器间接寻址方式中,应在寄存器的名称前面加前缀标志“”。间接寻址方式的寻址范围包括:内部内部RAM低低128B,使用R0或R1作间址寄存器,其通用形式为Ri(i=0或1); 例如: MOV A,R0片内RAM3AHR076HA3AH76H外部外

5、部RAM64KB,使用DPTR作间接寄存器,其形式为DPTR;外部外部RAM低低256B,可以使用R0或R1作间接寄存器寻址,其形式为 Ri(i=0或1); 例如:MOVX A,DPTR MOVX A,R0片外RAMA3410H30H3410HDPTR片外RAM20HR0A0020H30H30H30H堆栈操作指令堆栈操作指令(PUSH和POP),以堆栈指针SP作间接寄存器。4)立即寻址方式立即寻址方式 指令中直接给出操作数的寻址方式。 为了与直接寻址指令中的直接地址相区别,立即数用前面加有#号的8位或16位数来表示。例如:MOVA,# 60H;A#60H MOVDPTR,# 3400H;DPT

6、R#3400H MOV30H,# 40H;30H单元#40H 上述三条指令执行完后,累加器A中数据为立即数据60H, DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。5)变址寻址方式变址寻址方式 变址寻址只能对程序存储器中数据进行操作,所以寻址范围可达64KB。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式。 变址寻址是以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。 变址寻址的指令只有3条: MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR 变址寻址的指令

7、都是一字节指令。程序存储器3F21HD PTR54HA例如: MOVC A,A+DPTR3F75H7FH7FH6)位寻址方式位寻址方式 位寻址指令中直接使用位地址,常用的位寄存器有C。 位寻址只能对有位地址的单元作位寻址操作。 寻址范围包括: 1)内部RAM中的位寻址区 单元地址为20H27H,共16个单元128位,位地址是00H7FH 例如: SETB 10H;将10H位置1 若22H单元中存放着数据40H,22H单元的D0位的位地址为 10H,执行上述指令后(22H)=41H。 2)专用寄存器的可寻址位 可供位寻址的专用寄存器共有11个。 例如:CLR PSW.5;7)相对寻址方式)相对寻

8、址方式 相对寻址用于修改PC值,主要用于实现程序的分支转移。 以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量rel)形成新的PC值的寻址方式。 目的地址转移指令地址转移指令字节数rel例如: SJMP 08H ;PCPC+2+08H程序存储器2000HPCSJMP08HPC2002H200AHPC 通用寄存器区通用寄存器区位寻址区位寻址区00H20H1FH2FH30H7FHFFH80H用户用户RAM区区专用寄存器区专用寄存器区3.1.4 MCS-51单片机寻址方式单片机寻址方式小结小结(a) 内部数据存储器寻址寄存器寄存器寻址寻址位寻址位寻址直接直接或或间接间接寻址寻址直

9、接直接寻址寻址(b) 外部数据存储器寻址(c) 程序存储器寻址0000H0100H0FFFFH0000H0FFFFH以DPTR作间址寄存器以R0或或R1作间址寄存器程序存储器程序存储器ROM间接间接寻址寻址变址变址寻址寻址3.2 MCS-51单片机指令分类介绍单片机指令分类介绍w 3.2.1 指令格式中符号意义w 3.2.2 数据传送类指令w 3.2.3 算术运算类指令w 3.2.4 逻辑运算及移位类指令w 3.2.5 控制转移类指令w 3.2.6 位操作类指令3.2.1 指令格式中符号意指令格式中符号意义义Rn当前选中的寄存器区中的当前选中的寄存器区中的8个工作寄存器个工作寄存器R0R7 (

10、n=07)。)。Ri当前选中的寄存器区中的当前选中的寄存器区中的2个工作寄存器个工作寄存器R0、R1 (i=0,1)。)。direct8位的内部数据存储器单元中的地址。位的内部数据存储器单元中的地址。#data包含在指令中的包含在指令中的8位常数。位常数。#data16包含在指令中的包含在指令中的16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位带符号的偏移字节,简称偏移量。位带符号的偏移字节,简称偏移量。DPTR数据指针,可用作数据指针,可用作16位地址寄存器。位地址寄存器。bit内部内部RAM或专用寄存器中的直接寻址位。或专用寄存

11、器中的直接寻址位。A累加器。累加器。B专用寄存器,用于乘法和除法指令中。专用寄存器,用于乘法和除法指令中。C进位标志或进位位,或布尔处理机中的累加器。进位标志或进位位,或布尔处理机中的累加器。 间址寄存器的前缀标志。间址寄存器的前缀标志。/ 加在位地址前面,表示对该位状态取反加在位地址前面,表示对该位状态取反(X) 某寄存器或单元的内容。某寄存器或单元的内容。(X) 由由X间接寻址的单元中的内容。间接寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所取代。箭头左边的内容被箭头右边的内容所取代。3.2.2 数据传送类指数据传送类指令令u数据传送类指令共29条,是将源操作数送到目的操 作数。指

12、令执行后,源操作数不变,目的操作数被源操作数取代。u 数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。 例如:MOV,直接地址direct累加器A直接地址direct间接地址Ri寄存器Rn立即数#data寄存器DPTRu源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内数据传送途径下图所示。3.2.2.1 内部内部RAM数据传送指数据传送指令令 以以A为目的操作数(为目的操作数(4条)条) MOV A,Rn;A (Rn) MOV A,di

13、rect;A(direct) MOV A,Ri;A(Ri) MOV A,#data;A #data 以以Rn为目的操作数(为目的操作数(3条)条) MOV Rn,A;Rn (A) MOV Rn,direct;Rn (direct) MOV Rn,#data;Rn #data 以直接地址为目的操作数(以直接地址为目的操作数(5条)条) MOV direct,#data ;direct #data MOV direct,A ;direct (A) MOV direct,direct ;direct (direct) MOV direct,Rn ;direct (Rn) MOV direct,Ri

14、;direct ( Ri) 以间接地址为目的操作数(以间接地址为目的操作数(3条)条) MOV Ri,A;(Ri) (A) MOV Ri,#data ;(Ri) #data MOV Ri,direct ;(Ri) (direct)例如:设(30H)=6FH,R1=40H,执行MOV R1,30H后, 30H单元中数据取出送入R1间接寻址的40H单元, (40H)=6FH。 以以DPTR为目的操作数(为目的操作数(1条)条) MOV DPTR,#data16 ;DPTR #data163.2.2.2 外部外部RAM数据传送指令数据传送指令 对外部RAM单元只能使用间接寻址方法,指令助记符为MOV

15、X,必须通过累加器A进行。 MOVX A,DPTR;A (DPTR) MOVX DPTR,A;(DPTR) (A) MOVX A,Ri ;A (Ri) MOVX Ri,A ;(Ri)( A)3.2.2.3 程序存储器数据传送指令程序存储器数据传送指令w 对程序存储器ROM只能读不能写,即只能从程序存储器读出数据,指令助记符为MOVC,只能向累加器A传送。 MOVC A,A+DPTR; A (A)+(DPTR) MOVC A,A+PC ; A (A)+(PC) 字节交换字节交换XCH A,Rn;(A) (Rn)XCH A ,direct;(A)(direct)XCH A,Ri;(A)(Ri) 半

16、字节交换半字节交换XCHD A,Ri ;(A)03(Ri)03SWAP A;(A)03(A)473.2.2.4 数据交换指令数据交换指令3.2.2.5 堆栈操作指令堆栈操作指令w 进栈进栈PUSH direct ;SP(SP)+1,(SP)(direct)w 出栈出栈POPdirect;direct(SP),SP (SP)-11加法指令加法指令ADD A,Rn;A (A) + (Rn)ADD A,direct;A (A) +(direct)ADD A,Ri;A (A) +(Ri)ADD A,#data;A (A )+ #data2带进位加法指令带进位加法指令ADDC A,Rn ;A (A) +

17、 (Rn) + (C)ADDC A,direct;A (A) +(direct)+(C)ADDC A,Ri ;A (A )+(Ri)+ (C)ADDC A,#data;A (A )+ #data +( C)C为来自PSW状态寄存器中的进位标志位C。例如,设A=20H,R0=21H,C=1,执行指令 ADDC,R0后, A=42H。3.2.3 算术运算类指算术运算类指令令3带借位减法指令带借位减法指令SUBB A,Rn;A (A) - (Rn) - (C)SUBB A,direct;A (A) -(direct)- (C)SUBB A,Ri ;A (A) -(Ri)- (C)SUBB A,#da

18、ta;A (A) - #data (C)例如,设A=39H,R0=20H,(20H)=32H,C=1, 执行指令 SUBB ,R0后,A=06H。4加加1指令指令INC A ;A (A) + 1INC Rn ;Rn (Rn) + 1INC direct;direct (direct)+ 1INC Ri;(Ri)(Ri)+ 1INC DPTR;DPTR (DPTR) + 1例如,(30H)=22H,执行 INC 30H 后,(30H)=23H。5减减1指令指令DEC A ;A (A) - 1DEC Rn;Rn (Rn) - 1DEC direct;direct (direct)- 1DEC Ri

19、;(Ri)(Ri)- 1例如,R0=30H,(30H)=22H,执行 DEC R0 后, (30H)=21H。6乘法指令乘法指令MUL AB;BA ABA和B中各存放一个8位无符号数,指令执行后,16位乘积的高8位在B中,低8位存A中。例如,A=30H,B=60H,执行 MUL AB 后,A=00H,B=12H。7除法指令除法指令 DIV AB;AB商在A中,余数在B中 A和B中各存放一个8位无符号数,A放被除数,B放除数。 指令执行后,A中存放商,B中存入余数。8十进制调整指令十进制调整指令 BCD调整方法: 累加器低4位大于9或辅助进位位(AC)1,则进行低4位加6修正: A (A)06H

20、 累加器高4位大于9或进位标志位(CY)1,则进行高4位加6修正: A (A)60H 累加器高4位为9、低4位大于9,则进行高4位和低4位分别加6修正: A (A)66H DA A ;把A中按二进制相加的结果调整成按BCD码相加的结果 例如,A=65BCD,B=78BCD,C=0,执行下列语句 ADD A,B DA A 执行后,A=43 BCD,C=1。1 1“与与”操作指令(操作指令(6 6条条,ANL,ANL) 2 2“或或”操作指令(操作指令(6 6条条,ORL,ORL) 3 3“异或异或”操作指令(操作指令(6 6条条,XRL,XRL) 4 4清除与求反指令(清除与求反指令(2 2条条

21、,CLR/CPL,CLR/CPL) 5 5循环指令循环指令(4(4条,条,RL/RR/RLC/RRCRL/RR/RLC/RRC)3.2.4 逻辑运算及移位类逻辑运算及移位类指令指令1无条件转移指令无条件转移指令l绝对(短)转移指令AJMP addr11;PC100 addr11 l长转移指令LJMP addr16;PC addr16l短(相对)转移指令SJMP rel;PC (PC) + 2 + relSJMP HERE ;SJMP $ ;l 变址寻址转移指令JMPA+DPTR;PC (A)+(DPTR)3.2.5 控制转移类指令控制转移类指令2条件转移指令条件转移指令l累加器为零(非零)转移

22、指令 JZ rel;若(A)= 0,则PC (PC) + 2 + rel JNZ rel;若(A)0,则PC (PC) + 2 + rell两数不等转移指令 CJNE A,data,rel ;累加器内容与立即数不等转移 CJNE A,direct,rel ;累加器与内部RAM单元内容不等转移 CJNE Rn,#data,rel ;寄存器内容与立即数不等转移 CJNE Ri,#data,rel ;内部RAM前128单元内容与立即数不等转移l减1非零转移指令 DJNZ Rn,rel ;Rn Rn1, 若(Rn) 0,则PC (PC) + 2 + rel DJNZ direct,rel ;direc

23、t direct1, 若(direct) 0,则PC (PC) + 3+ rel3子程序调用与返回指令子程序调用与返回指令l绝对调用指令 ACALL addr11;PC (PC)+2,SP(SP)+1,(SP)(PC)70 SP (SP)+1,(SP) (PC)158,PC100addr11l长调用指令 LCALL addr16 ;PC(PC)+3,SP(SP)+1,(SP)(PC)710 S P ( S P ) + 1 , ( S P ) ( P C )1 5 8,PCaddr16l返回指令 RET ;PC158(SP),SP(SP)-1 PC70 (SP),SP(SP)-1 RETI ;PC158(SP),SP(SP)-1 PC70 (SP),SP(SP)-14空操作指令空操作指令

温馨提示

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

评论

0/150

提交评论