《80C51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《80C51单片机指令系统.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理与应用第3章 80C51单片机指令系统1.CPU1.CPU包括哪两部分电路?包括哪两部分电路?2.80C512.80C51单片机引脚有多少个?分为几类?单片机引脚有多少个?分为几类?3.80C513.80C51内部内部RAMRAM空间分配?空间分配?ROMROM空间?空间?4.80C514.80C51单片机单片机POPO口在作为通用口在作为通用I/OI/O口口使用时要注意什么?使用时要注意什么?5.80C515.80C51单片机时钟电路一般外接晶振单片机时钟电路一般外接晶振多少多少HZ?HZ?相应的机器周期如何计算?相应的机器周期如何计算?6.80C516.80C51单片机复位如何实
2、现,有哪两单片机复位如何实现,有哪两种方式?种方式?单片机指令系统简介单片机指令系统简介80C51指令寻址方式指令寻址方式80C51单片机指令分类介绍单片机指令分类介绍123本章主要内容3.1 单片机指令系统概述一、基本概念指令:指令:规定计算机基本操作的语句或命令。指令系统:指令系统:一个单片机所能执行的指令集合,是单片机提供给用户使用的软件资源。二、指令格式:标号标号:操作码目的操作数操作码目的操作数,源操作数源操作数;注注释释标号标号:用户设定的符号,它实际代表该指令所在的地址。标号必须以字母开头,其后跟17个字母或数字,并以“:”结尾。操作码:操作码:用英文缩写的指令功能助记符,规定指
3、令进行什么操作 源操作数源操作数 :提供操作的对象指出的是一个源地址,表示操作数来自何处。也可以是一个立即数,表示操作的对象与目的操作数之间要用“,”号隔开。目的操作数目的操作数:提供操作的对象;指出一个目标地址,表示操作结果存放单元的地址;与操作码之间必须以一个或几个空格分隔。注释:注释:在编写程序时,为了增加程序的可读性,由用户拟写对该条指令或该段程序功能的说明。它以分号“;”开头,可以用中文、英文或某些符号来表示,显然它不存入计算机,只出现在源程序中。标标号号:操操作作码码目目的的操操作作数数,源源操操作作数数;注释注释 表示该项是可选项;表示该项是可选项;例如:LOOP:ADD A,1
4、0H ;(A)(A)+10H CLR A RETI RET三、指令中常用符号介绍(1)RiRi和和RnRn:R R表表示示当当前前工工作作寄寄存存器器区区中中的的工工作作寄寄存存器器,当前工作寄存器的选定是由PSW的RS1和RS0位决定的。i表示0或1,即R0和R1;n表示07,即R0R7;(2)data:data:表示立即数,data为8位二进制常数。data是指包含在指令中的8位立即数。(3)(3)data16:data16:包含在指令中的16位立即数。(4)rel:(4)rel:8位补码形式表示的地址偏移量地址偏移量范围为-128+127,主要用于无条件相对短转移指令SJMP和所有的条件
5、转移指令中。(5)addr16:16位目的地址目的地址目的地址可在全部程序存储器的64 KB空间范围内,用于无条件长转移指令LJMP和子程序长调用指令LCALL中(6)addr11:11位目的地址目的地址以该11位地址替换PC的低11位内容,形成新的PC值。用于绝对转移指令AJMP和子程序绝对调用指令ACALL指令中(7)direct:(7)direct:表示直接寻址的地址,即8位内部数据存储器RAM的单元地址(0127);特殊功能寄存器SFR的地址。对于SFR可直接用其名称来代替其直接地址。(8)bit:(8)bit:内部数据存储器RAM中位寻址区中的位地址特殊功能寄存器SFR中的可直接寻址
6、位地址或名称。(9):(9):间接寻址寄存器或基地址寄存器的前缀,如Ri,DPTR,表示寄存器间接寻址。(10)(10)(X):表示X(地址或寄存器)中的内容。在注释中使用。(11)(11)(X):表示(X)作地址,该地址的内容用(X)表示。在注释中使用。(12)/(12)/符号符号:加在位地址的前面,表示对该位状态取反。(13)(13)符号:符号:表示指令操作流程,将箭头右边的内容,送入箭头左边的单元中去。3.2 80C51单片机指令寻址方式寻址方式:如何确定操作数单元地址,并取得操作数(源操作数的寻址方式)80C51有7种寻址方式:1.寄存器寻址方式寄存器寻址方式2.直接寻址方式直接寻址方
7、式3.寄存器间接寻址方式寄存器间接寻址方式4.立即寻址方式立即寻址方式5.变址寻址方式变址寻址方式6.位寻址方式位寻址方式7.相对寻址方式相对寻址方式1.寄存器寻址方式操作数在寄存器(以符号名表示寄存器)中,指定寄存器就能得到操作数寄存器寻址的主要对象:寄存器寻址的主要对象:当前通用寄存器,R0R7;部分专用寄存器 A、AB、DPTR例:例:MOV A,R0MOV A,R02.直接寻址方式操作数直接以存储单元地址的形式给出寻址范围:在内部寻址范围:在内部RAMRAM中中低128单元:直接以单元地址形式给出专用寄存器:可以以单元地址形式给出,还可以寄存器符号形式给出,直接寻址是访问专用寄存器的唯
8、一方法。例:例:MOV A,30H MOVA,P13.寄存器间接寻址方式寄存器间接寻址方式由指令指出某一个寄存器的内容作为操作数的地址。在寄存器前加符号。寻址范围:寻址范围:访问片内访问片内RAMRAM低低128128单元,用单元,用R0R0和和R1R1。MOV A,R0(R1)MOV A,R0(R1)用访问片外用访问片外RAM 64KBRAM 64KB,用用DPTRDPTR。MOVX A,DPTRMOVX A,DPTR访问片外访问片外RAMRAM低低256256单元,也可以用单元,也可以用R0R0和和R1R1。MOVX A,R0(R1)MOVX A,R0(R1)(DPTRDPTR)堆栈操作指
9、令堆栈操作指令 PUSH POPPUSH POP4.4.立即寻址方式立即寻址方式在指令中直接给出操作数。立即数前面加#标志。例:MOVMOVA A,#30H#30H MOV MOVDPTRDPTR,#2000H#2000H5.变址寻址以16位的程序计数器PC或数据指针DPTR作为基址寄存器,以8位的累加器A作为变址寄存器,并以两者内容相加形成的16位地址为操作数地址。只能对程序存储器进行寻址,范围64K。指令只有三条:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR6.位寻址方式指令中直接给出位地址,对数据位进行处理寻址范围:片内RAM的位寻址区(128位)。SFR的可
10、寻址位(83位)。直接使用位地址直接使用位地址 位名称表示方法位名称表示方法 单元地址加位数单元地址加位数 专用寄存器符号加位数专用寄存器符号加位数例:例:MOV C,3AHMOV C,3AH7.相对寻址方式为转移指令采用的寻址方式。以PC的内容(相对转移指令的存储地址加上该指令的字节数)作为基址寄存器,加上指令中给定的偏移量所得结果作为转移地址。偏移量rel是有符号的单字节数。以补码表示,其值的范围是-128+127,负数表示从当前地址向前转移,正数 表示从当前地址向后转移。目的地址目的地址=转移指令地址转移指令地址+转移指令字节数转移指令字节数+rel+rel寻址方式寻址方式利用的变量利用
11、的变量使用的空间使用的空间寄存器寻址寄存器寻址R0R7,A,B,CY,R0R7,A,B,CY,DPTRDPTR直接寻址直接寻址直接地址直接地址内部内部RAM,SFRRAM,SFR寄存器寄存器间接寻址间接寻址R0,R1R0,R1内部内部RAMRAMR0,R1,DR0,R1,DPTRPTR外部外部RAMRAM立即寻址立即寻址立即数立即数程序存储器程序存储器变址寻址变址寻址DPTR+A,DPTR+A,PC+APC+A程序存储器程序存储器相对寻址相对寻址PC+relPC+rel程序存储器程序存储器位寻址位寻址位地址位地址内部内部RAMRAM位寻位寻址区,可位寻址址区,可位寻址的的SFRSFR说明下列指
12、令中源操作数的寻址方式说明下列指令中源操作数的寻址方式MOVA,R7MOVA,R1MOVCA,A+DPTRMOVA,P0MOVA,#88HMOVA,88HMOV C,P0.03.3 80C51单片机指令系统80C51指令分类(按功能分)数据传送指令(数据传送指令(2929条)条)算术运算指令(算术运算指令(2424条)条)逻辑运算指令及移位类指令(逻辑运算指令及移位类指令(2424条)条)控制转移类指令(控制转移类指令(1717条)条)位操作类指令(位操作类指令(1717条)条)一、数据传送指令(一、数据传送指令(2929条)条)1.内部RAM单元之间数据传送指令(16条)2.片外RAM数据传
13、送指令(4条)3.ROM数据传送指令(2条)4.交换指令(5条)5.堆栈指令(2条)1.1.内部内部RAMRAM单元之间数据传送指令(单元之间数据传送指令(16)16)以A为目标操作数的传送指令 (4)以Rn为目标操作数的指令 (3)以直接地址为目标操作数的指令(5)以间接地址为目标操作数的指令(3)16位数据传送指令 (1)目的操作数为A (4)MOV A,#data MOV A,directMOV A,RnMOV A,Ri目的操作数为Rn (3)MOV Rn,#dataMOV Rn,directMOV Rn,A目的操作数为DPTR (1)MOV DPTR,#data例1:指令执行前(A)=
14、33H,(R0)=30H,(30H)=55H,指令执行后的结果:MOV A,R0 ;(A)=?MOV A,30H ;(A)=?MOV A,R0 ;(A)=?MOV A,#20H ;(A)=?30H55H(30H)=55H 20H 例2指令执行前(A)=33H,(R0)=30H,(30H)=55H,指令执行后的结果:MOVR0,A ;(R0)=MOVR3,30H ;(R3)=MOVR7,#20H ;(R7)=33H55H20H 例3 指令执行前(DPTR)=2000H,指令执行后的结果:MOV DPTR,#8811H;(DPTR)=8811H目的操作数为direct (5)MOV direct,
15、AMOV direct,directMOV direct,#dataMOV direct,RnMOV direct,Ri目的操作数为Ri (3)MOV Ri,AMOV Ri,directMOV Ri,#data 例4指令执行前(A)=33H,(R0)=20H,(20H)=55H,(40H)=88H,指令执行后的结果:MOV30H,A ;(30H)=MOV30H,R0 ;(30H)=MOV30H,R0 ;(30H)=MOV30H,#20H ;(30H)=MOV30H,40H ;(30H)=33H20H55H 20H88H 例5指令执行前(A)=33H,(R0)=30H,(30H)=55H,指令执
16、行后的结果:MOV R0,A ;(30H)=MOV R0,30H;(30H)=MOV R0,#20H ;(30H)=33H55H20H练习一(59H)=50H,执行指令后的结果执行指令后的结果MOVA,59HMOVR0,AMOVA,#00HMOVR0,AMOVA,#25HMOV51H,AMOV53H,#70H练习二写出相应的指令写出相应的指令 (内内RAM内内RAM)将将R1的内容传送到的内容传送到20H单元。单元。将将A的内容传送到寄存器的内容传送到寄存器R5。将立即数将立即数30H传送到累加器传送到累加器A。将将R0的内容传送到的内容传送到A。将立即数将立即数88H传送到传送到50H单元。
17、单元。2.片外RAM传送指令 (4)寻址方式:寄存器间接寻址,只能通过A实现片内片外数据传送目的操作数为AMOVX A,RiMOVX A,DPTR目的操作数为RiMOVX Ri,AMOVX DPTR,A例6:指令执行前(DPTR)=2000H,(A)=30H,(2000H)=55H,(R0)=20H,(20H)=88HMOVXA,DPTR ;MOVXR0,A ;(A)=55H(A)=55H(20H)=30H20H)=30H练习3:按要求写出指令:将外部RAM中2000H单元的内容送AMOV DPTRMOV DPTR,#2000H#2000HMOVXMOVXA A,DPTR DPTR 法法1 1
18、MOV P2MOV P2,#20H#20H 法法2 2MOV R0MOV R0,#00H#00HMOVXMOVX A A,R0 R0 练习4:按要求写出指令:将A的内容送外部RAM中2000H单元MOVMOV DPTR DPTR,#2000H#2000HMOVXMOVXDPTRDPTR,A A 法法1 1MOVMOV P2 P2,#20H#20H 法法2 2MOVMOV R0 R0,#00H#00HMOVXMOVXR0R0,A A 练习5:按要求写出指令:(内RAM 外RAM)将将50H50H的内容送外部的内容送外部RAMRAM中中20002000H H单元单元MOVMOV DPTR DPTR
19、,#2000H#2000HMOV A,50HMOV A,50HMOVXMOVXDPTRDPTR,A A练习6:按要求写出指令:(外RAM 内RAM)将外部将外部RAMRAM中中20002000H H的内容送的内容送50H50H单元单元MOVMOV DPTR DPTR,#2000H#2000HMOVXMOVX A A,DPTRDPTRMOV 50H,AMOV 50H,A练习练习7 7:按要求写出指令:按要求写出指令:(外外RAM RAM 外外RAMRAM)将外部将外部RAMRAM中中20002000H H的内容送的内容送1000H1000H单元单元MOVMOV DPTR DPTR,#2000H#
20、2000HMOVXMOVX A A,DPTRDPTRMOV DPTRMOV DPTR,#1000H#1000HMOVXMOVX DPTR DPTR,A A3.ROM数据传送指令(2条)ROM数据只能读,不能写,因此数据传送是单向的。MOVMOVC C A,A+PC A,A+PCMOVMOVC C A,A+DPTR A,A+DPTR片外ROM中的数据只能传送到累加器只能传送到累加器A A。用于查阅常数表,DPTRDPTR、PCPC称为基地址寄存器,用于存放表格的首地址用于存放表格的首地址。A中的数称为地址偏移量,用于指出表格中待查数据存放的单元地址偏移表头地址的字节数。例:指令执行前例:指令执行
21、前(DPTRDPTR)=2000H=2000H,(A A)=30H=30H,(,(2030H2030H)=55H=55H,MOVCMOVC A A,A+DPTRA+DPTR则则(A A)=(2000H+30H=(2000H+30H)=(2030H)=(2030H)=55H =55HROM数据传送指令又称查表指令例:例:MOV DPTR,#TABLEMOV A,#02HMOVC A,A+DPTRSJMP$TABLE:DB 0,1,24,9,16,25,36,49,64,81或者或者 MOV A,#02HADD A,#02HMOVC A,A+PCSJMP$TABLE:DB 0,1,24,9,16,
22、25,36,49,64,814.数据交换指令(5条)将源操作数的内容和累加器A的内容互换XCHXCHA A,Rn Rn ;(A)(A)(Rn)(Rn)XCHXCHA,directA,direct;(A)(A)(direct)(direct)XCHXCHA,Ri A,Ri ;(A)(A)(Ri)(Ri)XCHDXCHDA A,Ri Ri ;(A)(A)3030(Ri)(Ri)3030最后一条指令将A的低4位和R0或R1指出的RAM单元低4位相互交换,各自的高4位不变。累加器高低半字节交换指令累加器高低半字节交换指令只有一条指令:只有一条指令:SWAP A例:已知:(A)=80H,(R0)=30H
23、,(30H)=44H;执行下列指令后的结果:XCHXCHA A,R0 R0 ;(A)=44H,(30H)=80HXCHDXCHDA A,R0 R0 ;(A)=84H,(30H)=40HXCHXCHA A,R0R0 ;(A)=30H,(R0)=80H法1:XCHA,30H法2:MOVR0,A MOVA,30H MOV30H,R0练习8:将A的内容和30H的内容互换。MOV A,40H XCH A,30H MOV 40H,A或或 MOV A,40H MOV 40H,30H MOV 30H,A练习9:将40H的内容和30H的内容互换。MOVR0,#20H SWAPA XCHDA,R0 SWAPA练习
24、10(A)74(20H)30思考?2.将外RAM的内容和外RAM的内容互换。1.将内RAM的内容和外RAM的内容互换。5.5.堆栈操作指令(堆栈操作指令(2 2条)条)进栈指令 PUSH direct (SP)+1 (SP),(direct)(SP)(SP)+1 (SP),(direct)(SP)出栈指令出栈指令 POP directPOP direct(SP)(direct),(SP)(direct),(SP)-1 (SP)注意:将注意:将A A入栈或出栈应写成:入栈或出栈应写成:PUSH ACC PUSH ACC 或或 PUSH 0E0HPUSH 0E0H POP ACC POP ACC
25、或或 POP 0E0HPOP 0E0H例:已知:(30H)=0FFH,(20H)=80H,(SP)=60H执行下列指令后的结果:PUSHPUSH 30H 30H PUSH 20H PUSH 20H (61H)=(30H)=0FFH;(61H)=(30H)=0FFH;(62H)=(20H)=80H;(62H)=(20H)=80H;复习常用堆栈指令有哪些?常用堆栈指令有哪些?执行指令后的结果:执行指令后的结果:(A A)=05H=05H,(R1R1)50H50H,(,(50H50H)=75H=75H,(,(SPSP)=60H=60H XCH XCHA A,R1R1 XCHD XCHDA A,R1R1 XCH XCHA,50HA,50H PUSH PUSHACCACCThank you!