编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章

上传人:E**** 文档编号:89373936 上传时间:2019-05-24 格式:PPT 页数:265 大小:985KB
返回 下载 相关 举报
编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章_第1页
第1页 / 共265页
编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章_第2页
第2页 / 共265页
编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章_第3页
第3页 / 共265页
编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章_第4页
第4页 / 共265页
编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章_第5页
第5页 / 共265页
点击查看更多>>
资源描述

《编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章》由会员分享,可在线阅读,更多相关《编单片机原理与应用 三版 教学课件 ppt 作者 潘永雄 第1-3章 第3章(265页珍藏版)》请在金锄头文库上搜索。

1、,第3章 MCS-51指令系统,3.1 MCS-51指令系统 3.2 汇编语言程序结构 3.3 并行多任务程序结构及实现 3.4 实用程序举例,指令、指令系统等基本概念以及MCS-51系列单片机CPU支持的七种寻址方式已在第1章中介绍过,这里不再重复。本章只介绍MCS-51系列单片机指令系统及其汇编语言程序设计的一些基本概念及注意事项。,MCS-51系列单片机采用复杂指令系统,共有42种操作码助记符,支持直接寻址、寄存器寻址、间接寻址、立即数寻址、变址寻址、相对寻址、位寻址等七种寻址方式。不同指令操作码助记符与不同寻址方式之间的组合就构成了MCS-51系列单片机的指令系统,共111条。按功能可

2、将这些指令分成数据传送、算术运算、逻辑运算、控制转移、位操作等五大类,每一类型的指令中又包含若干条指令。这使许多初学者无所适从,,3.1 MCS-51指令系统,感到很难掌握,其实只要理解每类指令的功能、助记符及其支持的寻址方式,即可从MCS-51指令表中找出完成特定操作所需的指令。 本章在介绍MCS-51指令系统时,为了方便叙述,使用下列符号及约定: (1) Rn(n = 07):表示工作寄存器组R7R0中的某一寄存器。 (2) Ri(i = 01):以寄存器R0或R1作间接寻址,表示操作数地址在寄存器R0或R1中,而“”是间接寻址标识符。操作对象是外部RAM或内部RAM 00FFH单元(对仅

3、有前128字节内部RAM的51子系列来说,地址范围是007FH)。,(3) DPTR:以数据指针DPTR(16位)作间接寻址,操作数在外部RAM中,“”同样是间接寻址标识符。 (4) #data:8位立即数;#data16:16位立即数。其中“#”是立即数标识符,常用于初始化内部RAM单元、特殊功能寄存器、数据指针DPTR。 (5) direct:8位直接地址,可以是内部RAM 007FH单元字节地址、内部RAM 20H2FH单元中的位地址或特殊功能寄存器的映象地址。 (6) /bit:在位操作中,取出“bit”位信息后,先取反,然后再参与运算,但不改变bit位的值,其中“ / ”是位取反标识

4、符。,(7) rel:补码形式的8位偏移地址,范围在-128+127。 (8) rrr:在操作码中,用于表示R7R0寄存器的编码,rrr编码与寄存器R7R0之间对应关系如下: rrr的编码(二进制) 对应的工作寄存器名 000 R0 001 R1 010 R2 011 R3 100 R4,101 R5 110 R6 111 R7 (9) addr11:11位目标地址,用于ACALL(绝对调用)和AJMP(绝对跳转)指令中,转移范围为2 KB。 (10) addr16:16位目标地址,用于LCALL和LJMP指令中,转移范围为64 KB。,(11) 操作数中的累加器A写作“A”时,是寄存器寻址;

5、写作“Acc”时是直接寻址,尽管操作对象均是CPU内的累加器A。对于支持直接寻址和寄存器寻址的指令来说,用A和Acc均可,只是指令的操作码不同;对于不支持寄存器寻址的指令(如PUSH、POP),则不能将累加器Acc写作“A”;而对于不支持直接寻址的指令,如“MOVX”中的“A”也不能写成“Acc”。因此,在汇编语言指令中,须严格区分累加器A的写法。 (12) 累加器A内容为nn时,用“A=nn”表示;地址编码为mm的存储单元内容用“(mm)”表示。,(13) 指令执行时间用“机器周期”度量。例如“MOV A, Rn”指令执行时间为一个机器周期,在标准MCS-51中,一个机器周期包含12个振荡(

6、即时钟)周期。如果晶振频率为12 MHz,则振荡周期T = 1/12 s,因此一个机器周期为12T,即1 s;对于运行在“6时钟/机器周期”的8C52、89C51RX、P89C62芯片来说,指令机器周期数不变,但指令执行时间缩短了一半;又如对于“2时钟/机器周期”芯片LPC900系列来说,指令执行时间只有标准MCS-51的1/6。 (14) 指令机器码一律用二进制书写。 (15) 对于不常用或约束条件多、容易出错的指令,在指令表中加灰色背景,程序设计时应尽量避免使用这类指令。,3.1.1 数据传送指令 数据传送是计算机系统中最常见,也是最基本的操作。因此,数据传送指令在计算机指令系统中占有重要

7、位置,指令条数也最多,其任务是实现计算机系统内不同存储单元之间的信息传送,如图3-1所示。,图3-1 MCS-51中不同存储区之间数据传送示意图,在MCS-51指令系统中,数据传送指令包括: (1) 内部RAM、特殊功能寄存器之间的数据传送,这类指令用“MOV”作为指令操作码助记符。 (2) 外部RAM(包括扩展的并行I/O口、内部扩展RAM)与累加器A之间的数据传送,这类指令用“MOVX”作为指令操作码助记符。 (3) 程序存储器读指令,即程序存储器ROM与累加器A之间数据指令,这类指令用“MOVC”作为指令操作码助记符。 (4) 堆栈操作指令。 (5) 字节交换指令。,数据传送指令一般不影

8、响程序状态字寄存器PSW中的标志位,只有当数据传送到累加器A时,PSW中的奇偶标志位P会改变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶性。 当累加器Acc为0时,Z(零)标志置1;反之Z标志清0。因此当目的操作数为累加器Acc时,数据传送指令会影响Z标志。 1. 内部RAM、特殊功能寄存器之间的数据传送 MCS-51内部RAM和特殊功能寄存器之间数据传送指令汇编语言格式、机器码以及执行时间如表3-1所示。,表3-1 内部RAM与特殊功能寄存器之间的数据传送指令,续表,由表3-1可见: (1) 前128字节内部RAM(即00H7FH)各单元之间,以及特殊功能寄存器(地址分散在80H

9、0FFH之间)可以直接传送,不一定要经过累加器A,例如: MOV 32H, 90H ; 将特殊功能寄存器90H单元中的(即P1口)内容送内部RAM 32H单元中, ;该指令中目的操作数(内部RAM)、源操作数(特殊功能寄存器90H单元) ;均使用了直接寻址方式 MOV 32H,43H ;将内部RAM 43H单元内容送内部RAM 32H单元中。,MOV P1,B ;将寄存器B内容送P1口锁存器中 (2) MCS-51指令系统约定:对于特殊功能寄存器,只能用直接寻址方式访问;对于高128字节内部只能用寄存器间接寻址方式。因此,在直接寻址方式中,当直接地址在80H0FFH之间时,操作对象是特殊功能寄

10、存器,而不是内部RAM高128字节。对于地址编码在80H0FFH之间的内部RAM,只能通过寄存器间接寻址访问,例如: MOV R0,B ;假设该指令执行前,R0内容为90H,则该指令的含义是将特殊功能寄存,;器B(地址为0F0H)内容送内部RAM的90H单元中 (3) 对于低128字节内部RAM,可以用直接寻址方式,也可以用寄存器间接寻址方式,例如: MOV 32H,#23H ;将立即数23H传送内部RAM的32H单元中,目的操作数使用了直接寻 ;址方式 MOV R0,#23H ;假设该指令执行前,R0中的内容为32H,则该指令的作用与上条指令相,;同,也是将立即数23H传送到内部RAM的32

11、H单元中,只是目的操作 ;数采用寄存器间接寻址方式 (4) 对于特殊功能寄存器,在指令中无论是引用寄存器名,还是直接给出寄存器映象地址,结果都一样,只是书写形式不同而已。汇编时汇编程序自动将寄存器名替换为对应的映象地址,如“MOV P1,#23H”与“MOV 90H,#23H”完全等价。,(5) 尽管寄存器B是CPU内寄存器,但MCS-51指令系统没有提供B寄存器的寄存器寻址方式(只有乘法指令例外),例如“MOV B, A”指令中目的操作数的寻址方式是直接寻址方式,并不是寄存器寻址方式。,(6) 在同一指令中,只允许其中一个操作数使用寄存器间接寻址方式,因而“MOV R0, R1”指令不存在。

12、 也正因如此,内部RAM高128字节之间不能直接传送,必须通过累加器A或内部RAM作为中介,例如将内部RAM的82H单元传送到内部RAM的8FH单元时,可用如下指令实现: MOV R0, #82H MOV A, R0 MOV R0, #8FH MOV R0, A,例3.1 在仿真机上,用单步方式执行下列指令,并观察指令执行前后,内部RAM有关单元内容和程序状态字PSW中Cy、Ac、OV、P等标志位的变化,了解数据传送指令对标志位的影响。 MOV 30H, #01H ;把立即数01H传送到内部RAM 30H单元 MOV A, 30H ;该指令执行后累加器A内容为01H,含有奇数个“1”,因此P标

13、志位为1 MOV A, #03H ;该指令执行后累加器A内容为03H,含有偶数个“1”,因此P标志位为0,MOV 30H, #07H ;执行后,30H单元内容也是07H,但传送的目的地址不是累加器A, ;因此标志位没有变化,2. 外部RAM及I/O端口与累加器A之间的数据传送 在MCS-51系统中,由于扩展I/O端口与外部RAM统一编码,即扩展I/O端口地址占用外部RAM地址空间的某一单元,因此外部RAM及扩展I/O端口的读写操作指令、操作时序完全相同。只能通过累加器A存取外部RAM和扩展I/O端口,这类指令操作码助记符为“MOVX”,其中“X”的含义是“eXternal”(外部),指令格式、

14、机器码如表示3-2所示。,表3-2 外部RAM与累加器A之间的数据传送指令,说明: (1) 当通过DPTR寄存器间接寻址方式读写外部RAM及扩展I/O端口时,先将16位外部RAM地址或I/O端口地址放在数据指针DPTR寄存器中(DPTR寄存器就是为了访问外部RAM而设置的),然后以DPTR作间接寻址寄存器,通过累加器A进行读写,这时外部RAM低8位地址A7A0通过P0口输出,高8位地址A15A8通过P2口输出。下面以读写外部RAM的3FFFH存储单元为例,介绍外部RAM读写方法。,MOV DPTR, #3FFFH ;将要读写的外部RAM存储单元地址3FFFH以立即数形式传送到 ;DPTR寄存器

15、中 MOVX A, DPTR ;将DPTR指定的外部存储单元(3FFFH)内容送累加器A(读外部 ;RAM) MOVX DPTR, A ; 将累加器A输出到DPTR指定的外部存储单元(3FFFH)中(写外部RAM),(2) 当通过R0或R1寄存器间接寻址方式读写外部RAM或扩展I/O端口时,先将外部RAM存储单元或I/O端口低8位地址放在R0或R1寄存器中,然后以R0或R1作间接寻址寄存器,通过累加器A进行读写,这时外部RAM低8位地址A7A0通过P0口输出,寻址范围是256个存储单元。在读写期间P2口处于I/O方式,且P2口锁存器不变。因此,使用Ri间接寻址方式访问外部RAM具有更大的灵活性

16、:在没有外部程序存储器的情况下,当外部RAM容量小于256字节时,,通过Ri间接寻址读写外部RAM或扩展的I/O端口时,可将P2口作为一般I/O口使用,以增加I/O引脚数目;当外部RAM容量大于256字节时,以页面方式读写外部RAM时,P2口中没有使用的I/O引脚,可以作为输出引脚使用。下面仍以读写外部RAM的3FFFH存储单元为例,介绍通过Ri间接寻址读写外部RAM的方法。 MOV P2, #3FH ; 将要读写的外部RAM存储单元高8位地址3FH以立即数方式传 ;送到P2口中(写入P2口锁存器),MOV R1, #0FFH ;将要读写的外部RAM存储单元低8位地址0FFH以立即数方式传送到 ;R1寄存器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号