单片机 第三章_第1页
单片机 第三章_第2页
单片机 第三章_第3页
单片机 第三章_第4页
单片机 第三章_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、Page 1 电气(机电)工程学院电气(机电)工程学院 单片机原理与接口技术单片机原理与接口技术2重点80C51寻址方式、指令系统 难点控制转移类指令其他尝试编写简单程序第三章第三章 80C5180C51单片机指令系统单片机指令系统33.1 单片机指令系统概述3.2 80C51单片机指令寻址方式3.3 80C51单片机指令分类介绍第三章第三章 80C5180C51单片机指令系统单片机指令系统43.1 单片机指令系统概述第三章第三章 80C5180C51单片机指令系统单片机指令系统 1 1、指令的定义、指令的定义 2 2、指令的组成、指令的组成 3 3、指令的表示方法、指令的表示方法5 3.1.

2、1 指令的定义 1、指令:是人们向计算机发的一种命令;一条指令对应着一种操作。2、指令系统:CPU所能执行的全部指令的集合。 CPU能够执行多少条指令是由CPU的内部结构决定的。 不同的CPU,其指令系统不同。6 3.1.2 指令的组成 指令由操作码和操作数组成。操作码决定CPU执行何种操作。操作数是指参与运算的数。操作数及操作对象可以是一个数,也可以是数所在的地方地方。REG或MEM7 3.1.3 指令的表示方法 用助记符(指令功能的英文缩写)书写。操作数用规定的符号书写。 指令在机器中必须以机器码(二进制码)的形式出现。 人们在书写指令时,可以有二种方法:1 、在计算机发展的初期,人们用机

3、器码书写指令,这一阶段成为机器语言阶段。 优点:用机器码书写的程序,计算机可以直接识别和运行。 缺点:书写时容易,不容易记忆。2、为了克服机器语言的缺点,人们用符号书写指令: 指令由操作码和操作数组成。 这一阶段成为汇编语言阶段. 优点:容易理解和记忆。 缺点:计算机不能直接识别和运行。 汇编语言程序必须转换成机器语言程序,转换方法有二种: 手工转换: 查表 符号指令-机器码指令-Mem 汇编程序: 符号指令-机器-机器码指令-Mem8 Rn当前选定的寄存器区中的当前选定的寄存器区中的 8 个工作寄存器个工作寄存器R0R7, 即即n=07。 Ri当前选定的寄存器区中的当前选定的寄存器区中的 2

4、 个寄存器个寄存器R0、 R1, i=0、1。 direct 8 位内部位内部RAM单元的地址单元的地址, 它可以是一个内部数据区它可以是一个内部数据区 RAM单元单元(00H7FH)或特殊功能寄存器地址或特殊功能寄存器地址(I / O端口、端口、 控制寄存器、控制寄存器、 状态寄存器状态寄存器 80H0FFH)。 data指令中的指令中的 8 位常数。位常数。 data16指令中的指令中的 16 位常数。位常数。 addr1616 位的目的地址位的目的地址, 用于用于LJMP#, LCALL指令指令, 可指向可指向 64 KB程序存储程序存储器地址空间。器地址空间。 80C51指令中常用的符

5、号其意义:指令中常用的符号其意义:9 addraddr11111111位的目的地址位的目的地址, , 用于用于AJMP, ACALLAJMP, ACALL指令。目的地址指令。目的地址必须与下一条指令的第一个字节在同一个必须与下一条指令的第一个字节在同一个 2 KB2 KB程序存储器地址空间程序存储器地址空间之内。之内。 rel8 rel8位带符号的偏移量字节位带符号的偏移量字节, , 用于用于SJMPSJMP和所有条件转移指和所有条件转移指令中。令中。 偏移量相对于下一条指令的第一个字节计算偏移量相对于下一条指令的第一个字节计算, , 在在128128+127 +127 范围内取值。范围内取值

6、。 bitbit内部数据内部数据RAMRAM或特殊功能寄存器中的可直接寻址位。或特殊功能寄存器中的可直接寻址位。 DPTRDPTR数据指针数据指针, , 可用作可用作 16 16 位的地址寄存器。位的地址寄存器。 10A累加器。累加器。 B寄存器寄存器, 用于用于 MUL和和 DIV指令中。指令中。 C进位标志或进位位。进位标志或进位位。 间接寻址寄存器或基址寄存器的前缀间接寻址寄存器或基址寄存器的前缀, 如如Ri,DPTR。 /位操作数的前缀位操作数的前缀, 表示对该位取反。表示对该位取反。 (X) X中的内容。中的内容。 (X)由由 X寻址的单元中的内容。寻址的单元中的内容。 箭头左边的内

7、容被箭头右边的内容所代替。箭头左边的内容被箭头右边的内容所代替。 113.2 80C513.2 80C51单片机指令寻址方式单片机指令寻址方式 寻址方式的定义寻址方式的定义 80C5180C51单片机的寻址方式单片机的寻址方式 121 1、 寻址方式的定义寻址方式的定义 指令由操作码和操作数组成。指令由操作码和操作数组成。指出操作数所在地方的方式就是寻址方式。指出操作数所在地方的方式就是寻址方式。操作码决定操作码决定CPUCPU执行何中执行何中操作。操作。操作数就是操作对操作数就是操作对象。无论何种指令象。无论何种指令其操作的对象都是其操作的对象都是数据数据。数据在指令中有数据在指令中有2 2

8、种表示方法种表示方法: : 1 1、数本身、数本身2 2、数所在的地方、数所在的地方(REG,MEM(REG,MEM中中) )。13 3.2.2 80C513.2.2 80C51单片机指令的寻址方式单片机指令的寻址方式 每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。系统优劣的主要指标之一。 MCS51MCS51单片机有单片机有7 7种寻址方式。种寻址方式。 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3、REGREG间接寻址间接寻址 4 4、REGREG寻址寻址 5 5、变址寻址、变址寻址

9、 6 6、相对寻址、相对寻址 7 7、位寻址、位寻址14FFH 80C5180C51单片机有单片机有7 7种寻址方式。种寻址方式。 1、立即寻址立即寻址 2、直接寻址直接寻址 3 、REGREG间址间址 4、变址寻址变址寻址 5 、REGREG寻址寻址 6、相对寻址相对寻址 7 、位寻址位寻址1、 操作数包含在指令字节中。操作数包含在指令字节中。 紧跟在操作码后紧跟在操作码后面,存放于面,存放于ROM中中 。例:例:MOV A,#05H ;(;(74H 05H)2、跟在指令操作码后面的数就是参加运算的数、跟在指令操作码后面的数就是参加运算的数, 称该操作数为立即数。称该操作数为立即数。ROM7

10、4H05HSFRFFH05HA1580C5180C51单片机有单片机有7 7种寻址方式。种寻址方式。 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3 、REGREG间址间址 4 4、变址寻址、变址寻址 5 5 、REGREG寻址寻址 6 6、相对寻址、相对寻址 7 7 、位寻址、位寻址1 1、在指令中直接给出操作数的地址、在指令中直接给出操作数的地址, , 这种寻址方式就属于这种寻址方式就属于直接寻址方式。在这种方式中直接寻址方式。在这种方式中, , 指令的操作数部分直接是指令的操作数部分直接是操作数的地址。操作数的地址。 例:例:MOV AMOV A,32H 32H ;(;(

11、E5HE5H,32H32H)2 2、在、在MCS -51 MCS -51 单片机指令系统中单片机指令系统中, , 直接寻址方式中可以直接寻址方式中可以访问访问 2 2种存储器空间种存储器空间: : (1) (1) RAMRAM的低的低 128 128 个字节单元个字节单元(00H00H7FH7FH)。)。(2) (2) 特殊功能寄存器特殊功能寄存器。 特殊功能寄存器只能用直接寻址方特殊功能寄存器只能用直接寻址方式进行访问。式进行访问。 FAHFAHRAMRAMFFHFFH06H06HSFRSFRFFHFFHA AROMROME5HE5H32H32H06H06H32H32H16指令中直接给出了操

12、作数所在单元的地址或名称指令中直接给出了操作数所在单元的地址或名称 例:例:MOV R1MOV R1,1FH 1FH ;(R1) (R1) (1FH1FH) MOV 30HMOV 30H,4AH 4AH ;(30H)(30H)(4AH4AH)在单片机中规定:访问特殊功能寄存器在单片机中规定:访问特殊功能寄存器SFRSFR只能采用直接寻址方式。只能采用直接寻址方式。例如:例如:MOV A, SP MOV A, SP ; (A) (SP) (A) (SP) MOV A, 81H MOV A, 81H ; (A) (SP) (A) (SP) MOV P1, #5AH MOV P1, #5AH ; (

13、P1)(#5AH) (P1)(#5AH) MOV 90H,#5AH MOV 90H,#5AH ; (P1)(#5AH) (P1)(#5AH) MOV B, 30H MOV B, 30H ; (B) (30H) (B) (30H) 相同相同相同相同17在本单片机中访问特殊功能寄存器在本单片机中访问特殊功能寄存器SFRSFR只能采用直接寻址方式的原因:只能采用直接寻址方式的原因:SFRSFR分布在分布在80H80H0FFH0FFH范围内,而范围内,而5252系列单片机有系列单片机有256256字节的片内字节的片内RAM,RAM,其其中的中的80H80H0FFH0FFH的的RAMRAM与与SFRSF

14、R所占地址重叠。所占地址重叠。MOV A, 90H MOV A, 90H 等效于等效于 MOV A, P1 MOV A, P1 属直接寻址属直接寻址 MOV A, R0 MOV A, R0 ; 事先已知事先已知 (R0) = #90H (R0) = #90H 执行的操作:执行的操作:A (90H) A (90H) 属寄存器间接寻址属寄存器间接寻址, , 随意写的指令如:随意写的指令如:MOV A, 85H MOV A, 85H 则是非法的!则是非法的! 于是规定:于是规定: 80H80H0FFH0FFH范围内的范围内的RAMRAM只能用寄存器间接寻址方式,而只能用寄存器间接寻址方式,而SFRS

15、FR只能用直接寻址方式。从而解决了地址冲突的问题。例如:只能用直接寻址方式。从而解决了地址冲突的问题。例如:18 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3 、REGREG间址间址 4 4、变址寻址、变址寻址 5 5 、REGREG寻址寻址 6 6、相对寻址、相对寻址 7 7 、位寻址、位寻址1 1、在这种寻址方式中、在这种寻址方式中, , 寄存器的内容为操作数的地址。寄存器的内容为操作数的地址。例:例:MOV AMOV A, R0 R0 ;(;(E6HE6H)2 2、寄存器间接寻址只能使用寄存器、寄存器间接寻址只能使用寄存器R0R0、R1 R1 作为地址作为地址指针指针,

16、 ,寻址寻址内部内部RAMRAM区区的数据的数据; ; 当访问外部当访问外部RAMRAM时时, , 可使可使用用R0R0、 R1R1及及DPTRDPTR作为地址指针。作为地址指针。 寄存器间接寻址符号为寄存器间接寻址符号为“”。FAHRAMFFH22HSFRFFHAROME6H40H40H22HR0R019 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3 、REGREG间址间址 4 4、 REGREG寻址寻址 5 5 、变址寻址、变址寻址 6 6、相对寻址、相对寻址 7 7 、位寻址、位寻址1 1、在该寻址方式中、在该寻址方式中, , 参加操作的数存放在参加操作的数存放在寄存器

17、里。寄存器里。例:例:MOV AMOV A,R7 R7 ;(;(EFHEFH)2 2、寄存器包括、寄存器包括8 8个工作寄存器个工作寄存器R0R0R7, R7, 累加累加器器A, A, 寄存器寄存器B B、数据指针、数据指针DPTRDPTR。FAHRAMFFH22HSFRFFHAROMEFH40HR7R740H20 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3 、REGREG间址间址 4 4、 REGREG寻址寻址 5 5 、变址寻址、变址寻址 6 6、相对寻址、相对寻址 7 7 、位寻址、位寻址 这种寻址方式用于访问这种寻址方式用于访问程序存储器程序存储器中的数据中的数据表

18、格表格, , 它以基址寄存器它以基址寄存器DPTRDPTR或或PCPC的内容为基本地的内容为基本地址址, , 加上变址寄存器加上变址寄存器A A的内容作为操作数的地。的内容作为操作数的地。例例: : MOVC A, DPTR+A MOVC A, DPTR+A MOVC A, PC+A MOVC A, PC+A 设:设:A A中已存有中已存有#A4H#A4H,DPTRDPTR中已存有中已存有#1234H#1234HMOVC A,A+DPTRMOVC A,A+DPTR;A(A)+(DPTR)A(A)+(DPTR)操作:将操作:将A4H+1234H=12D8HA4H+1234H=12D8H单元中的数

19、放进累加器单元中的数放进累加器A A21 1 1、立即寻址、立即寻址 2 2、直接寻址、直接寻址 3 3 、REGREG间址间址 4 4、 REGREG寻址寻址 5 5 、变址寻址、变址寻址 6 6、相对寻址、相对寻址 7 7 、位寻址、位寻址在在80C51 80C51 指令系统中设有转移指令指令系统中设有转移指令, , 分为直接转分为直接转移和相对转移指令移和相对转移指令, , 在相对转移指令中采用相对在相对转移指令中采用相对寻址方式。这种寻址方式是以寻址方式。这种寻址方式是以PCPC的内容为基本地的内容为基本地址址, , 加上指令中给定的偏移量作为转移地址。指加上指令中给定的偏移量作为转移

20、地址。指令中给出的偏移量是一个令中给出的偏移量是一个 8 8 位带符号的常数位带符号的常数, , 可正可负可正可负, , 其范围为其范围为128128+127+127。例:例:JNB ACC.7JNB ACC.7,UPUP22相对寻址相对寻址当前当前PCPC值加上指令中规定的偏移量值加上指令中规定的偏移量 relrel,构成实际的操,构成实际的操作数地址作数地址例:例: SJMP relSJMP rel 操作:跳转到的目的地址操作:跳转到的目的地址 = = 当前当前1616位位PCPC值值 + rel+ rel注意注意:1 1)“当前当前PCPC值值”指程序中下一条指令所在的首地址,指程序中下

21、一条指令所在的首地址, 是一个是一个1616位数;位数;2 2)符号)符号“rel”rel”表示表示“偏移量偏移量”, ,是一个带符号的单字是一个带符号的单字 节数节数, ,范围是范围是:-128+127(80H7FH), :-128+127(80H7FH), 在实际编程中,在实际编程中,“rel” rel” 通常用标号代替通常用标号代替23位寻址位寻址指令中直接给出了操作数所在的位地址。指令中直接给出了操作数所在的位地址。例:例: CLR P1.0 CLR P1.0 ;(P1.0) 0(P1.0) 0 SETB ACC.7 SETB ACC.7 ;(ACC.7) 1(ACC.7) 1 CPL

22、 C CPL C ;( C ) NOT( C )( C ) NOT( C )注意注意: 1 1)位地址里的数据只可能是一个)位地址里的数据只可能是一个 0 0 或或 1 1 2 2)有的位地址十分明确)有的位地址十分明确, ,如如 P1.0, ACC.7P1.0, ACC.7等等, , 有的位地址则有的位地址则“不太明确不太明确”,如:如: MOV AMOV A,17H ; (A)(17H),17H17H ; (A)(17H),17H是是字节地址字节地址 MOV ACC.0 MOV ACC.0,17H ;(ACC.0)(17H),17H ;(ACC.0)(17H),这里这里ACC.0ACC.0

23、 是是位地址位地址所以该指令中的所以该指令中的17H17H是是2222H H单元的第单元的第7 7位位24片内RAM中有128个位可按位寻址的位,位地址:00H7FH分布在:20H2FH单元;另外,在SFR中还有92个位可按位寻址00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM区区普通普通RAM区区位寻址区位寻址区工作寄存器区工作寄存器区27H22H21H20H26H24H25H23H28H07 06 05 04 03 02 01 000F 0E 0D 0C 0B 0A 09 0817 16 15 14 13 1

24、2 11 101F 1E 1D 1C 1B 1A 19 1827 26 25 24 23 22 21 202F 2E 2D 2C 2B 2A 29 2837 36 35 34 33 32 31 303F 3E 3D 3C 3B 3A 39 3847 46 45 44 43 42 41 402FH7F 7E 7D 7C 7B 7A 79 78位地址位地址总共总共128个可个可按位按位寻址寻址的位的位单元地址单元地址17D7 D6 D5 D4 D3 D2 D1 D0253.3 80C513.3 80C51单片机指令分类介绍(五大类功能)单片机指令分类介绍(五大类功能)数据传送类指令:数据传送类指令

25、: (2929条)条)算术运算类指令:算术运算类指令: (2424条)条)逻辑运算及移位类指令:逻辑运算及移位类指令: (2424条)条)控制转移类指令:控制转移类指令: (1717条)条)位操作(布尔操作)类指令:(位操作(布尔操作)类指令:(1717条)条)26内部存储器间传送:内部存储器间传送: (MOV16MOV16条)条)外部数据存储器与累加器间传送外部数据存储器与累加器间传送: : (MOVX4MOVX4条)条)程序存储器向累加器传送:程序存储器向累加器传送: (MOVC2MOVC2条)条)数据交换:数据交换:(XCHXCH,XCHDXCHD,SWAP5SWAP5条)条)堆栈操作:

26、堆栈操作: (PUSHPUSH,POP2POP2条)条)( (一一) )数据传送类指令(数据传送类指令(5 5种种/29/29条)条) 27Acc Acc 累加器累加器Direct Direct 直接直接寻址寻址Ri Ri 间接寻址间接寻址Rn Rn 寄存器寄存器#data #data 立即数立即数RnRn: R0R7R0R7RiRi: R0R0,R1R1#data#data:8 8位立即数位立即数#data16#data16:1616位立即数位立即数directdirect:直接地址:直接地址relrel: 8 8位带符号偏移量位带符号偏移量内部存储器间传送指令内部存储器间传送指令 (16(

27、16条条) ): MOV MOV 类指令的操作方向总是后面的类指令的操作方向总是后面的操作数操作数 指向前面的操作数!指向前面的操作数!例例:MOV A:MOV A,30H 30H (A A)(30H30H) ( (一一) )数据传送类指令(数据传送类指令(5 5种种/29/29条)条) 28 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARndirectRiMOV ARndirectRi, #data8#data8 2 2) MOV direct, ARndirectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, dir

28、ectMOV ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) MOV RnRi, A MOV RnRi, A 29 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARndirectRiMOV ARndirectRi, #data8#data8 2 2) MOV direct, ARndirectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, directMOV ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) M

29、OV RnRi, A MOV RnRi, A MOV AMOV A, #data8#data8 MOV Rn MOV Rn, #data8#data8 MOV direct MOV direct, #data8#data8 MOV RiMOV Ri, #data8#data830 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARndirectRiMOV ARndirectRi, #data8#data8 2 2) MOV direct, ARndirectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, directMOV

30、ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) MOV RnRi, A MOV RnRi, A MOV direct, AMOV direct, A MOV direct, Rn MOV direct, Rn MOV direct, direct MOV direct, direct MOV direct, Ri MOV direct, Ri31 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARndirectRiMOV ARndirectRi, #data8#data8 2 2) MOV direct, ARnd

31、irectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, directMOV ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) MOV RnRi, A MOV RnRi, A MOV AMOV A, direct direct MOV Rn MOV Rn , directdirect MOV direct, direct MOV direct, direct MOV Ri MOV Ri, directdirect32 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARn

32、directRiMOV ARndirectRi, #data8#data8 2 2) MOV direct, ARndirectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, directMOV ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) MOV RnRi, A MOV RnRi, A MOV A, RnMOV A, Rn MOV A, Ri MOV A, Ri 33 片内片内RAMRAM之间的数据传送之间的数据传送 1 1) MOV ARndirectRiMOV ARndirectR

33、i, #data8#data8 2 2) MOV direct, ARndirectRiMOV direct, ARndirectRi 3 3) MOV ARndirectRi, directMOV ARndirectRi, direct 4 4) MOV A, RnRiMOV A, RnRi 5 5) MOV RnRi, A MOV RnRi, A MOV Rn, AMOV Rn, A MOV Ri, A MOV Ri, A34外部数据存储器与累加器间传送外部数据存储器与累加器间传送 (4(4条条):):MOVX类指令可在累加器与以DPTR或Ri所代表的外部 RAM 之间进行数据传送。例如例如: : MOVX AMOVX A, DPTR (A)DPTR (A) (DPTR (DPTR)MOVX AMOVX A, Ri (A)Ri (A) (Ri) (Ri) MOVX DPTR, A MOVX DPTR, A (DPTR(DPTR) ) (A) (A) MOVX Ri, A (Ri) MOVX Ri, A (Ri) (A)(A)35程序存储器向累加器传送指令(程序存储器向累加器传送指令(2

温馨提示

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

评论

0/150

提交评论