单片机原理与应用.

Slides:



Advertisements
Similar presentations
第7章 AT89S51单片机的 串行口 1.
Advertisements

本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
8051 指令.
第4章 MCS-51程序设计 4.1 汇编语言的格式与伪指令 4.2 汇编语言程序设计步骤 4.3 查表程序设计 4.4 循环程序设计
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
第3章 MCS-51指令系统 3.1 简 介 指令概述 一台微机所具有的所有指令的集合,就构成了指令系统。指令系统越丰富,说明CPU的功能越强。例如,Z80 CPU中,没有乘法和除法指令,乘法和除法运算必须用软件来实现,因此执行速度相对较慢;而MCS-51单片机提供了乘法和除法指令,实现乘法和除法运算时就要快得多。
单片机原理与应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
本章分为七节,主要介绍: 3.1 指令格式及常用符号 C51的寻址方式 3.3 数据传送类指令(29条) 3.4 算术运算类指令(24条)
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
第四章 指令系统及汇编语言程序设计.
逻辑运算类指令 包括与、或、非、异或、清0及移位等共24条;一般不影响PSW中的标志位;助记符有:ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9种。 一、逻辑与指令 ANL A,Rn ;A←(A)∧( Rn) ANL A,direct;A←(A)∧(direct)
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
4.A/D与D/A转换器 1).DAC0832与MCS-51接口
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
逆向工程-汇编语言
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第四章 指令系统及汇编语言程序设计.
第四章 指令系统及汇编语言程序设计.
第3章 MCS-51单片机指令系统 3.1 指令概述 3.2 寻址方式 3.3 MCS-51系列单片机的指令系统.
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
4.4 实用程序举例 延时 在程序设计过程中,有时需要程序“等待”一会儿再去处理某些事情,称之为延时。计算机延时实际就是让计算机反复执行一些空操作,这样就能起到拖延时间的作用。需要执行空操作次数的多少,取决于延时时间的长短。
第3章 MCS-51的指令系统 介绍MCS-51汇编语言的指令系统。 3.1 指令系统概述
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR
第三章 MCS 51的硬件结构.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
第三章 计算机系统的组成与工作原理.
任务五 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机应用技术 项目一 循环彩灯装置 第5讲 MCS-51单片机指令系统及指令格式 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
循环程序设计 在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质量。
4.3 汇编语言程序设计 顺序程序设计 顺序程序设计是最基本的程序设计。它是按照指令排列的先后顺序依次执行,每条指令都必须执行,且只执行一遍。顺序程序设计一般比较单一、简单,常常作为复杂程序的一部分。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
认知1 掌握“与”、“或”和“异或”指令格式及应用
第3章 80C51单片机指令系统 教学基本要求: (1)、了解单片机的指令系统、编程语言等基本概念;
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
Presentation transcript:

单片机原理与应用

第3章 MCS-51系列单片机指令系统

第3章 MCS-51系列单片机指令系统 本章要点: 指令格式 寻址方式 数据传送类指令 算术运算类指令 控制转移类指令 逻辑运算类指令

3.1 MCS-51指令系统概述 指令 指令系统 MCS-51系列单片机使用44种助记符,有51种基本操作。

3.1 MCS-51指令系统概述 按执行时间分类 单字节指令、双字节指令、三字节指令 单机器周期指令、双机器周期指令、四机 器周期指令

3.l.1 指令格式 指令格式指的是指令的表示方法,其内容包括指令的长度和指令内部信息的安排。 一条指令通常由操作码和操作数两部分组成。 第3章 MCS-51系列单片机指令系统 3.l.1 指令格式 指令格式指的是指令的表示方法,其内容包括指令的长度和指令内部信息的安排。 一条指令通常由操作码和操作数两部分组成。 指令格式如下: [标号]:操作码 [操作数];注释

3.l.1 指令格式 标号用于表示该指令的符号地址,一般由1~ 6个字符组成,与操作码之间用冒号分开。 第3章 MCS-51系列单片机指令系统 3.l.1 指令格式 标号用于表示该指令的符号地址,一般由1~ 6个字符组成,与操作码之间用冒号分开。 操作码规定了指令所能实现的功能,由助记符表示的字符串组成。 操作数是表示操作的对象。 注释部分对于汇编语言来说可有可无,是为了便于阅读理解而添加的。

3.1.2 寻址方式 ⒈ 立即寻址 寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。执行任何一条指令都需要使用操作数。 第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。执行任何一条指令都需要使用操作数。 ⒈ 立即寻址 MOV DPTR,#1234H

第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 2.直接寻址 MOV A , 3AH

第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 3.寄存器寻址 INC R0

第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 4.寄存器间接寻址 ANL A,@R1

第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 ⒌ 相对寻址 目的地址=转移指令所在地址+转移指令字节数+rel JC 80H

第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 6.变址寻址 MOVC A,@A+DPTR

3.1.2 寻址方式 7.位寻址 位寻址的寻址范围: (1)片内RAM中的位寻址区 (2)可供位寻址的特殊功能寄存器位 第3章 MCS-51系列单片机指令系统 3.1.2 寻址方式 7.位寻址 位寻址的寻址范围: (1)片内RAM中的位寻址区 (2)可供位寻址的特殊功能寄存器位

3.1.2 寻址方式 表3-1 寻址方式与寻址空间 第3章 MCS-51系列单片机指令系统 寻址方式 寻址空间 寄存器寻址 3.1.2 寻址方式 寻址方式 寻址空间 寄存器寻址 R0~R7、A、B、CY(bit)、DPTR 直接寻址 内部RAM低128字节 特殊功能寄存器 寄存器间接寻址 内部RAM(@R0、@R1、@SP仅PUSH、POP) 立即寻址 程序存储器 变址寻址 程序存储器(@A+PC、@A+DPTR) 相对寻址 程序存储器(PC+偏移量) 位寻址 内部RAM中有128个可位寻址 特殊功能寄存器中可位寻址 表3-1 寻址方式与寻址空间

3.1.3 指令中符号意义说明 第3章 MCS-51系列单片机指令系统 指令符号 含义 Rn(n=0~7) 3.1.3 指令中符号意义说明 指令符号 含义 Rn(n=0~7) 表示当前寄存器组的8个通用寄存器R0~R7中的一个。 Ri(i=0,l) 可用作间接寻址的寄存器,只能是R0、R1两个寄存器中的一个。 Direct 内部的8位地址,既可以指片内RAM的低128个单元地址,也可以指特殊功能寄存器的地址或符号名称,因此direct表示直接寻址方式。 #data 指令中所含的8位立即数 #data16 指令中所含的16位立即数 addr16 16位目的地址,只限于在LCALL和LJMP指令中使用 addr11 11位目的地址,只限于在ACALL和AJMP指令中使用 Rel 相对转移指令中的偏移量,为8位带符号数。为SJMP和所有条件转移指令所用。转移范围为相对于下一条指令笫一字节地址的-128~+127

3.1.3 指令中符号意义说明 第3章 MCS-51系列单片机指令系统 DPTR 数据指针 bit 3.1.3 指令中符号意义说明 DPTR 数据指针 bit 片内RAM(包括部分特殊功能寄存器)中的直接寻址位 A 累加器 B B寄存器 C 进位标志位,是布尔处理机中的累加器,也称之为累加位 @ 间址寄存器的前缀标志 / 位地址的前缀标志,表示对该位操作数取反 (×) 某寄存器或某单元的内容 ((×)) 由×寻址的单元中的内容 ← 箭头左边的内容被箭头右边的内容所取代

3.2 MCS-51指令分类介绍 MCS-51的指令系统,共有111条指令,按照功能又可分为5大类: 数据传送类指令29条,分别为片内RAM,片外RAM,程序存储器的传送指令,交换及堆栈操作指令。 算术运算类指令24条,分别为加、减、乘、除、带进位加、加1、减1指令。

3.2 MCS-51指令分类介绍 逻辑运算类指令24条,分别为逻辑与、或、异或、移位指令。 控制转移类指令17条,分别为无条件转移与调用、条件转移、空操作指令。 布尔(位)操作指令17条,分别为位数据传送、位与、位或、位转移指令。

第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令

3.2.1 数据传送类指令 1.内部8位数据传送指令 传送指令的格式为: MOV [目的字节],[源字节] 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 1.内部8位数据传送指令 传送指令的格式为: MOV [目的字节],[源字节] 源操作数:累加器A,工作寄存器Rn(n=0,…,7),直接地址direct、间接寻址寄存器@Ri(i=0,1)和立即数#data 5种。 目的操作数:累加器A,工作寄存器Rn(n=0,…,7),直接地址direct和间接寻址寄存器@Ri(i=0,1)4种。

3.2.1 数据传送类指令 表3-3 以累加器A为目的操作数的指令组 第3章 MCS-51系列单片机指令系统 指 令 功 能 寻址范围 3.2.1 数据传送类指令 指 令 功 能 寻址范围 机器码 MOV A,Rn; (A) ←(Rn) R0-R7 11101 rrr (E8-EFH) MOV A,direct; (A)←(direct) 00-FFH 11100101 direct双字节 MOV A,@Ri; (A)←((Ri)) 1110011r (E6-E7H) MOV A,#data; (A)←(#data) #00-#FFH 01110100 data 表3-3 以累加器A为目的操作数的指令组 传送指令是以累加器A为中心的总体结构。绝大部分传送操作均需通过A进行的。

3.2.1 数据传送类指令 ⑵以工作寄存器Rn为目的操作数的指令组 MOV Rn,A ;(Rn)←(A) 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 ⑵以工作寄存器Rn为目的操作数的指令组 MOV Rn,A ;(Rn)←(A) MOV Rn,direct ;(Rn)←(direct) MOV Rn,#data ;(Rn)←#data 该指令组的功能是把源操作数的内容送入当前工作寄存器组的R0~R7中的某一个寄存器。源操作数有寄存器寻址、直接寻址和立即寻址等寻址方式。

3.2.1 数据传送类指令 ⑶以直接地址direct为目的操作数的指令 MOV direct,A ;(direct)←(A) 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 ⑶以直接地址direct为目的操作数的指令 MOV direct,A ;(direct)←(A) MOV direct,Rn ;(direct)←(Rn) MOV direct,direct ;(direct)←(direct) MOV direct, @Ri ;(direct)←((Ri)) MOV direct,#data ;(direct)←#data

3.2.1 数据传送类指令 MOV A,80H ;表示把片内RAM中地址为80H单元(即P1口)中的内容送A。 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 MOV A,80H ;表示把片内RAM中地址为80H单元(即P1口)中的内容送A。 MOV 80H,#88H ;这是一条3字节指令,表示把立即数88H送到片内RAM中的80H地址单元中去。 MOV 80H,0E0H ;这是一条3字节指令,表示把E0H单元的内容送到80H单元中去。这是片内数据存储单元中的直接地址单元之间数据的直接传送。

3.2.1 数据传送类指令 2.16位数据传送指令 MOV DPTR,#data16 ;(DPTR)←#data16 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 2.16位数据传送指令 MOV DPTR,#data16 ;(DPTR)←#data16 执行指令: MOV DPTR,#1234H 执行结果: (DPH)=12H,(DPL)=34H

3.2.1 数据传送类指令 3.外部数据的传送指令组 ⑴外部数据存储器或I/O内容送累加器A MOVX <目的字节>,<源字节> 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 3.外部数据的传送指令组 MOVX <目的字节>,<源字节> ⑴外部数据存储器或I/O内容送累加器A MOVX A,@R i MOVX A,@DPTR 说明:指令执行时,在P3.7引脚上输出RD有效信号,可用作外部数据存储器或I/O的读选通信号。P0口分时输出由Ri或DPL指定的低八位地址信息和输入累加器中的数据信息,P2口则输出DPH指定的高八位地址信息。

3.2.1 数据传送类指令 ⑵累加器A内容送外部数据存储器或I/O MOVX @Ri,A MOVX @DPTR,A 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 ⑵累加器A内容送外部数据存储器或I/O MOVX @Ri,A MOVX @DPTR,A 说明:该组指令执行时,在P3.6引脚上输出WR有效信号,可以用作外部数据存储器或I/O的写选通信号。P0口分时输出由Ri或DPL指定的低八位地址信息和累加器中输出的数据信息,P2口则输出DPH指定的高八位地址信息。

3.2.1 数据传送类指令 MOVX A,@R1 ;(34H)=56H→A MOVX @R0,A;(A)=56H→片外12H单元中 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 MOVX A,@R1 ;(34H)=56H→A MOVX @R0,A;(A)=56H→片外12H单元中 执行结果为片外RAM的(34H)=56H,(12H)=56H。 某应用系统外扩了8K字节RAM,要求把内部RAM的20H单元内容发送到外部RAM的800H单元中。 MOV DPTR, #800H ;外部数据存储器地址指针 MOV R0, #20H ;内部数据存储器地址指针 MOV A,@R0 ;取内部数据存储器20H单元内容 MOVX @DPTR,A ;送外部数据存储器800H单元

3.2.1 数据传送类指令 4.程序存储器数据传送指令(或称查表指令) MOVC A,@A+PC MOVC A,@A+DPTR 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 4.程序存储器数据传送指令(或称查表指令) MOVC A,@A+PC MOVC A,@A+DPTR 求平方数(远程查表法)。 MOV DPTR, #TABLE ;指向表首址 MOVC A, @A+DPTR ;查表得到平方数 MOV 20H,A ;存平方数 HERE: SJMP HERE TABLE∶ DB 00,01,04,09 ;平方表02-92 DB 16,25,36 DB 49,64,81

3.2.1 数据传送类指令 求平方数(近程查表)。 ADD A,#rel ;修正偏移量 MOVC A,@A+PC ;查表得到平方数 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 求平方数(近程查表)。 ADD A,#rel ;修正偏移量 MOVC A,@A+PC ;查表得到平方数 MOV 20H,A ;存平方数 HERE∶ SJMP HERE TABLE∶ DB 00,01,04,09,16 ;平方表02-92 DB 25,36,49,64,81 说明: rel=TABLE-(查表指令地址+1) ;MOVC指令为单字节。

3.2.1 数据传送类指令 5.以间接寻址寄存器Ri为目的操作数的指令组 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 5.以间接寻址寄存器Ri为目的操作数的指令组 MOV @Ri,A ;((Ri))←(A) MOV @Ri,direct ;((Ri))←(A) MOV @Ri,#data ;((Ri))←#data 该指令组的功能是把源操作数的内容送入由 R0或R1的内容所指的内部 RAM中的存储单元。源操作数有寄存器寻址、直接寻址和立即寻址等寻址方式。

3.2.1 数据传送类指令 设(R0)=30H(A)=3FH 片内 (30H)=BBH。 执行指令 XCH A,@R0 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 设(R0)=30H(A)=3FH 片内 (30H)=BBH。 执行指令 XCH A,@R0 执行结果 (A)=BBH,(30H)=3FH

3.2.1 数据传送类指令 ⑵半字节交换指令组 XCHD A,@Ri 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 ⑵半字节交换指令组 XCHD A,@Ri 该指令将Ri间接寻址单元的低4位内容与累加器A的低4位内容互换,而它们的高4位内容均不变。此指令不影响标志位。 设(R0)=20H,(A)=36H(00110110B),内部RAM中(20H)=75H(0111010lB)。 执行指令∶XCHD, A,@R0 执行结果∶(20H)=01110110B=76H,(A)=00110101B=35H

3.2.1 数据传送类指令 7.堆栈操作指令组 PUSH direct POP direct 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 7.堆栈操作指令组 PUSH direct POP direct 中断响应时(SP)=30H,DPTR的内容为0123H,执行入栈指令其结果怎样? PUSH DPL;低8位数据指针寄存器DPL内容入栈 PUSH DPH;高8位数据指针寄存器DPH内容入栈。 执行结果: 第一条指令(SP)+1=31H→(SP),(DPL)=23H→(31H) 第二条指令(SP)+1=32H→(SP),(DPH)=01H→(32H) 即片内RAM中,(31H)=23H,(32H)=01H,(SP)=32H。

3.2.1 数据传送类指令 设(SP)=32H,片内RAM的30H~32H单元中的内容分别为20H,23H,01H,执行下列指令的结果怎样? 第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 设(SP)=32H,片内RAM的30H~32H单元中的内容分别为20H,23H,01H,执行下列指令的结果怎样? POP DPH ;((SP))=(32H)=01H→DPH ;(SP)-1=32H-1=31H→SP POP DPL ;((SP))=(31H)=23H→DPL ;(SP)-1=31H-1=30H→SP POP SP ;(SP)-1=2FH→SP ;((SP))=(30H)=20H→SP 以上第三条指令为特殊情况,先执行(SP)-1=2FH,后装入由栈顶退出的值,所以执行后(SP)=20H。

第3章 MCS-51系列单片机指令系统 3.2.1 数据传送类指令 检查传送结果 已知内部RAM (10H)=00H,(30H)=40H,(40H)=10H,P1口为11001010B,分析指令执行后各单元内容。 MOV R0,#30H ;R0=30H MOV A,@R0 ;A=40H MOV R1,A ;R1=40H MOV B,@R1 ;B=10H MOV @R1,P1 ;(40H)=11001010B MOV P2,P1 ;P2=11001010B MOV 10H,#20H ;(10H)=20H 执行结果:(10H)=20H, (30H)=40H, (40H)=CAH, P1=P2=CAH A=40H, B=10H, R0=30H, R1=40H

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 算术运算类指令都是通过算术逻辑运算单元ALU进行数据运算处理的指令。它包括各种算术操作,其中有加、减、乘、除四则运算。MCS-51单片机还有带借位减法、比较指令。加法类指令包括加法、带进位的加法、加1以及二一十进制调整。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 1.加法指令 ADD A,Rn ;(A)+(Rn)→(A) ADD A,direct ;(A)+(direct)→(A) ADD A,@Ri ;(A)+((Ri))→(A) ADD A,#data ;(A)+data→(A) 该组指令是将工作寄存器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数及立即数与累加器A中的内容相加,相加的结果仍存放在A中。

3.2.2 算术运算类指令 设(A)=C3H,(R0)=AAH。 执行指令:ADD A,R0,则操作如下所示: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=C3H,(R0)=AAH。 执行指令:ADD A,R0,则操作如下所示: 1 1 0 0 0 0 1 1 B +1 0 1 0 1 0 1 0 B 0 1 1 0 1 1 0 1 B 执行结果:(A)=6DH,(CY)=1,(OV)=1,(AC)=0。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 2.带进位位加法指令 ADDC A,Rn ;(A)←(A)+(Rn)+(CY) ADDC A,direct ;(A)←(A)+(direct)+(CY) ADDC A,@Ri ;(A)←(A)+((Ri))+(CY) ADDC A,#data ;(A)←(A)+#data+(CY) 该组指令是将工作寄存器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数及立即数与累加器A的内容和当前进位标志CY的内容相加,相加的结果仍存放在A中。

3.2.2 算术运算类指令 设(A)=C3H,(R0)=AAH,(CY)=1。 执行指令:ADDC A,R0,操作过程如下: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=C3H,(R0)=AAH,(CY)=1。 执行指令:ADDC A,R0,操作过程如下: 1 1 0 0 0 0 1 1 + 1 0 1 0 1 0 1 0 + 1 (CY) 0 1 1 0 1 1 1 0 执行结果:(A)=6EH,(CY)=1,(OV)=l, (AC)=0。

3.2.2 算术运算类指令 已知(A)=B3H,(R1) =56H。 执行ADD A,R1指令,执行过程如下: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 已知(A)=B3H,(R1) =56H。 执行ADD A,R1指令,执行过程如下: B 3H 1 0 1 1 0 0 1 1 + 5 6H + 0 1 0 1 0 1 1 0 1 0 9H 1 0 0 0 0 1 0 0 1 CY=1 CY=1,OV=0,AC=0 说明:若二个数是无符号数,则B3H+56H=109H,答案正确;若二个数是带符号数,则B3H的原码是–77D,56H原码为86D,(–77D) +86D=09D, 答案也是正确的,因为OV=0。

3.2.2 算术运算类指令 3.增量(加1)指令 INC Rn ;(Rn)←(Rn)+1 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 3.增量(加1)指令 INC Rn ;(Rn)←(Rn)+1 INC direct ;(direct)←(direct)+1 INC @Ri ;((Ri))←((Ri))+1 INC A ;(A)←(A)+l INC DPTR ;(DPTR)←(DPTR)+1 该组指令是将工作寄存器Rn、片内RAM单元中的内容 、间接地址存储器中的8位无符号二进制数、累加器A和数据指针DPTR的内容加1,相加的结果仍存放在原单元中。

3.2.2 算术运算类指令 INC @R0 ;0FFH+1=00H 仍存入7EH单元 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(R0)=7EH,(7EH)=0FFH,(7FH)=40H执行以下指令: INC @R0 ;0FFH+1=00H 仍存入7EH单元 INC R0 ;7EH+1=7FH 存入(R0) INC @ R0 ;40H+1=41H 存入(7FH) 执行结果为(R0)=7FH,(7EH)=00H.(7FH)=41H

3.2.2 算术运算类指令 4.二~十进制调整指令 DA A 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 4.二~十进制调整指令 DA A 该指令是对BCD码的加法结果进行调整。两个压缩型BCD码按二进制数相加之后,必须经此指令的调整才能得到压缩型BCD码的和数。 十进制调整的修正方法为: (1)当累加器低四位大于9或半进位标志AC=1时,则进行低四位加6修正(A0~3)+6→(A0~3),其中(A0~3)表示累加器A的低四位,即(A)=(A) +06; (2)当累加器高四位大于9或进位标志CY=1时, 进行高四位加6修正(A4~7)+6→(A4~7) , 其中(A4~7)表示累加器A的高四位,即(A) =(A) +60H 。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=0101 0110B=56 BCD,(R3)= 0110 0111B=67BCD,(CY)=1。执行下述二条指令: ADDC A,R3 DA A 执行 ADDC A,R3 (A) 0 1 0 1 0 1 1 0 (56 BCD) (R3) 0 1 1 0 0 1 1 1 (67 BCD) + (CY) 1 1 0 1 1 1 1 1 0 再执行 DA A 1 0 1 1 1 1 1 0 (高、低四位均大于9) 0 1 1 0 0 1 1 0 (加66H操作) Cy=1 0 0 1 0 0 1 0 0 (124 BCD) 即BCD码数56+67+1=124。经DA A指令校正后,答案正确。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 例:二个多字节无符号数相加。设有二个四位BCD码分别存在内部RAM的50H、51H和60H、61H单元中,试编写程序,求二个BCD码数之和,结果存入内部40H、41H单元。 MOV R0,#50H ;被加数首址 MOV R1,#60H ;加数首址 MOV A,@R0 ;取被加数 ADD A,@R1 ;与加数相加 DA A ;二-十进制调整 MOV 40H,A ;存和 INC R0 ;高位相加 INC R1 MOV A,@R0 ADDC A,@R1 DA A MOV 41H,A

3.2.2 算术运算类指令 对累加器A中压缩BCD码数减1。 ADD A,#99H 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 对累加器A中压缩BCD码数减1。 ADD A,#99H DA A HERE: SJMP HERE 累加器A允许的最大BCD码数为99BCD,当对A实行加99BCD码数时,必然形成对BCD码百位数的进位,而剩在A中的内容正是压缩BCD码数减1。如BCD的59H,经DA A的调整后,为58H且CY=1,不考虑进位CY,则BCD码59-1=58。

3.2.2 算术运算类指令 5.带借位减法指令 SUBB A,Rn ;(A)-(Rn)-(CY)→(A) 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 5.带借位减法指令 SUBB A,Rn ;(A)-(Rn)-(CY)→(A) SUBB A,drect ;(A)一(drect)一(CY)→(A) SUBB A,@Ri ;(A)一((Ri))一(CY)→(A) SUBB A,#data ;(A)-data-(CY)→(A) 该组指令是从A中减去进位位CY和指定的变量,结果(差)存入A中。

3.2.2 算术运算类指令 1100 1001 设(A)=0C9H,(R2)=54H,(CY)=1。 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=0C9H,(R2)=54H,(CY)=1。 执行指令SUBB A,R2,执行过程如下: 1100 1001 - 0101 0100 - 0000 0001 0111 0100 执行结果(A)=74H,(CY)=0,(AC)=0,(OV)=1。

3.2.2 算术运算类指令 6.减1指令 DEC Rn ;(Rn)-1→(Rn) 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 6.减1指令 DEC Rn ;(Rn)-1→(Rn) DEC direct ;(direct)-1→(direct) DEC @Ri ;((Ri))-1→((Ri)) DEC A ;(A)-1→(A) 该组指令是将工作寄存器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数和累加器A的内容减1,相减的结果仍存放在原单元中。这类指令位不影响各个标志位。

3.2.2 算术运算类指令 设(R0)=7FH,(7EH)=00H,(7FH)=40H。 执行指令: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(R0)=7FH,(7EH)=00H,(7FH)=40H。 执行指令: DEC @R0 ;(7FH)一1=40H—l=3FH→(7FH) DEC R0 ;(R0)一l=7FH—l=7EH→(R0) DEC @R0 ;(7EH)一l=00H—l=FFH→(7EH) 执行结果: (R0)=7EH,(7EH)=FFH,(7FH)=3FH。

3.2.2 算术运算类指令 7.乘法/除法指令 ⑴乘法指令。 MUL AB 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 7.乘法/除法指令 ⑴乘法指令。 MUL AB 该指令是将A和B中两个无符号8位二进制数相乘,所得的16位积的低8位存于A中,高8位存于B中。

3.2.2 算术运算类指令 设(A)=50H(80D),(B)=A0H(160D)。 执行指令: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=50H(80D),(B)=A0H(160D)。 执行指令: MUL AB ;80×160=12800=3200H 执行结果: 乘积 3200H(12800),(A)=00H,(B)=32H,(OV)=1,(CY)=0。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 ⑵除法指令。 DIV AB 该指令是将A中无符号8位二进制数除以B中的无符号8位二进制数,所得商的二进制数部分存于A,余数部分存于B中,并将CY和OV置0。

3.2.2 算术运算类指令 执行指令: DIV AB 设(A)=0FBH(251D),(B)=12H(18D)。 执行结果: 第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 设(A)=0FBH(251D),(B)=12H(18D)。 执行指令: DIV AB 执行结果: (A)=0DH(商13),(B)=11H(余数I7),(OV)=0,(CY)=0。

第3章 MCS-51系列单片机指令系统 3.2.2 算术运算类指令 例3:数的码制转换。把累加器A中无符号二进制整数(00-FFH)转换为三位压缩BCD码(0~255),并存入内存30H和31H单元。 BINBCD:MOV B,#100 DIV AB ;A÷10,百位数在A,余数在B MOV 30H,A ;百位数送30H MOV A,B MOV B,#0AH DIV AB ;余数÷10 ,十位数在A低四位, 个位数在B SWAP A ;十位数放A的高四位 ADD A,B ;十位数和个位数组合后送31H MOV 31H,A RET

第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 逻辑运算类指令主要包括:与、或、异或、清除、求反、移位等,主要用于对两个操作数进行逻辑运算。操作结果保存到累加器A或直接寻址单元。该类指令执行时一般不影响程序状态字PSW,仅当操作数为累加器A时将影响奇偶标志位P,带进位的移位指令将影响CY位。该指令的助记符主要有ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR等。

3.2.3 逻辑运算及移位类指令 1.逻辑“与”运算指令 这组指令的助记符为ANL,用符号“∧”表示: 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 1.逻辑“与”运算指令 这组指令的助记符为ANL,用符号“∧”表示: ANL A,Rn ;(A)←(A)∧(Rn) ANL A,direct ;(A)←(A)∧(direct) ANL A,@Ri ;(A)←(A)∧((Ri)) ANL A,#data ;(A)←(A)∧#data ANL direct,A ;(direct)←(direct)∧(A) ANL direct,#data ;(direct)←(drect)∧#data 该组指令是将目的地址单元中的数和源地址单元中的数按“位”相“与”,其结果放回目的地址单元中。

3.2.3 逻辑运算及移位类指令 设(A)=A3H(1010 0011B),(R0)=AAH(1010 1010B)。 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 设(A)=A3H(1010 0011B),(R0)=AAH(1010 1010B)。 执行指令: ANL A,R0 执行结果: (A)= A2H(1010 0010B)。 设P1=FFH 执行指令: ANL P1,#0F0H P1=F0H,这时P1.7至P1.4位状态不变,P1.3至P1.0位被清零。

3.2.3 逻辑运算及移位类指令 2.逻辑“或”运算指令 这组指令的助记符为ORL,用符号“∨”表示: 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 2.逻辑“或”运算指令 这组指令的助记符为ORL,用符号“∨”表示: ORL A,Rn ;(A)←(A)∨(Rn) ORL A,direct ;(A)←(A)∨(direct) ORL A,@Ri ;(A)←(A)∨((Ri)) ORL A,#data ;(A) ←(A) ∨#data ORL direct,A ;(direct)←(direct)∨(A) ORL direct,#data ;(direct)←(direct)∨#data 该组指令是将目的地址单元中的数和源地址单元中的数按“位”相“或”,其结果放回目的地址单元中。

3.2.3 逻辑运算及移位类指令 设(A)=0A3H(10100011B),(R0)=45H(01000101B)。 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 设(A)=0A3H(10100011B),(R0)=45H(01000101B)。 执行指令: ORL A, R0 执行结果:(A)=E7H(1110 0111B)。 注: 逻辑或运算指令用于强制将指定位置位。即给某些位置1,也就是合并二个数中的“1”。

3.2.3 逻辑运算及移位类指令 3.逻辑“异或”运算指令 这组指令的助记符为XRL,用符号“⊕”表示: 【规则】0⊕0=0 1⊕1=0 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 3.逻辑“异或”运算指令 这组指令的助记符为XRL,用符号“⊕”表示: 【规则】0⊕0=0 1⊕1=0 0⊕1=1 1⊕0=1 【格式】 XRL A,Rn ;(A)←(A)⊕(Rn) XRL A,drect ;(A)←(A)⊕(direct) XRL A,@Ri ;(A)←(A)⊕((Ri)) XRL A,#data ;(A)←(A)⊕#data XRL direct,A ;(direct)←(direct)⊕(A) XRL direct,#data ;(direct)←(direct)⊕#data

3.2.3 逻辑运算及移位类指令 设(A)=0A3H(10100011B),(R0)=045H(01000l0lB)。 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 设(A)=0A3H(10100011B),(R0)=045H(01000l0lB)。 执行指令:XRL A,R0,执行过程为: 1 0 1 0 0 0 1 1 ⊕ 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 执行结果:(A)=E6H(111001l0B)。

3.2.3 逻辑运算及移位类指令 4.累加器移位/循环指令 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 4.累加器移位/循环指令 累加器移位/循环指令包括带进位C和不带进位C的循环左移和循环右移等四条指令。对于带进位的循环移位,C的状态由移入的数位决定,其他状态标志位不受影响。 (1)循环右移指令: RR A 该指令的功能是将累加器的内容逐位循环右移一位,并且a0的内容移到a7,如图3-9(a)所示。此操作不影响标志位。

3.2.3 逻辑运算及移位类指令 设(A)=0A6H(10100110B), 执行RR A指令,执行结果=53H(01010011B)。 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 设(A)=0A6H(10100110B), 执行RR A指令,执行结果=53H(01010011B)。

3.2.3 逻辑运算及移位类指令 (2)带进位循环右移指令: RRC A 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 (2)带进位循环右移指令: RRC A 该指令的功能是将累加器的内容和进位位一起循环右移一位,并且a0移入进位位CY,CY的内容移到a7,如图3-9(b)所示。此操作不影响CY之外的标志位。 设(A)=0B4H(10110100B),(CY)=1, 执行指令:RRC A, 执行结果:(A)=0DAH ( 11011010B),(CY)=0

3.2.3 逻辑运算及移位类指令 (3)循环左移指令: RL A 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 (3)循环左移指令: RL A 该指令是将累加器的内容逐位循环左移一位,并且a7的内容移到a0,如图3-9(c)所示。此操作不影响标志位。 设(A)=3AH(00111010B), 执行指令:RL A 执行结果:(A)=74H(01110l00B)。

3.2.3 逻辑运算及移位类指令 (4)带进位循环左移指令: RLC A 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 (4)带进位循环左移指令: RLC A 该指令的功能是将累加器的内容和进位位一起循环左移一位,并且a7移入进位位CY,CY的内容移到a0,见图 3-9(d)所示。此操作不影响CY之外的标志位。 设(A)=3AH(00111010B),(CY)=1。 执行指令:RLC A 执行结果:(A)=75H(01110101B),(CY)=0

3.2.3 逻辑运算及移位类指令 5.累加器按位取反指令 CPL A 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 5.累加器按位取反指令 CPL A 该指令的功能是对进行累加器的内容逐位取反,结果仍存在A中。此操作不影响标志位。 设(A)=21H(0010 0001B) 执行指令:CPL A 执行结果:(A)=DEH (1101 1110B)。

3.2.3 逻辑运算及移位类指令 6.累加器清0指令 CLR A 该指令的功能对累加器进行清0,此操作不影响标志位。 设(A)=44H, 第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 6.累加器清0指令 CLR A 该指令的功能对累加器进行清0,此操作不影响标志位。 设(A)=44H, 执行指令:CLR A 执行结果:(A)=00H。

第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 例:数据的拆分与拼装,要求:从(30H)== X7X6X5X4X3X2X1X0中取出高5位,从(31H)=Y7Y6Y5Y4Y3Y2Y1Y0中取出低3位,拼装后存入40H中,(40H)=Y2Y1Y0X7X6X5X4X3 ORG 0000H MOV A,30H SWAP A ;X3X2X1X0 X7X6X5X4 RL A ;X2X1X0 X7X6X5X4X3 左移了5位 MOV 40H, A ;此时地址40H中的低5位已经实现题中要求 ANL 40H, #00011111B ;该指令屏蔽掉地址40H所存数据的 高3位,仅留低5位X7X6X5X4X3

第3章 MCS-51系列单片机指令系统 3.2.3 逻辑运算及移位类指令 MOV A, 31H MOV B,#20H MUL AB ;Y2Y1Y0 Y7Y6Y5Y4Y3,左移了5位 ANL A, #11100000B ;屏蔽A的低5位,仅留高3位Y2Y1Y0 ORL 40H, A ;通过将A和地址40H的值进行或运算,实现了 (40H)=Y2Y1Y0X7X6X5X4X3 HERE :AJMP HERE 实现左移5位,采用了两种方法,即移位和乘法。通过将A与#20H相乘实现A的左移5位。因为A左移1位相当于将A的值乘2,故左移5位就要乘32,对应的16进制值就是#20H。

第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 控制转移类指令采用助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP等。控制类转移指令又分为无条件转移、条件转移、绝对转移、相对转移、长转移、短转移、间接转移等

3.2.4 控制转移类指令 1.无条件转移指令 SJMP rel AJMP addrll LJMP addrl6 JMP @A+DPTR 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 1.无条件转移指令 SJMP rel AJMP addrll LJMP addrl6 JMP @A+DPTR 该指令是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。

第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑴短转移指令 SJMP rel 其目标地址是由当前PC(程序计数器)值和指令的第二字节提供的8位带符号的相对地址相加而成的。指令可转向指令前128 B或指令后127 B。rel为8位带符号数。 ⑵绝对转移指令 AJMP addr11 设(PC)=0456H,标号JMPADR所指的单元为0123H。 执行指令为 AJMP JMPADR 机器码为00100001 00100011 执行结果程序转向为(PC)=0123H。

3.2.4 控制转移类指令 ⑶长转移指令 LJMP addr16 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑶长转移指令 LJMP addr16 该指令提供16位地址,目标地址由指令第二字节(高八位地址)和第三字节(低八位地址)组成。因此,程序转向的目标地址可以包含程序存储器的整个64 KB空间。 设(PC)=0123H,标号ADR所指单元地址为3456H。 执行指令: LJMP ADR 执行结果:(PC)=3456H 即程序转向3456H单元执行。

3.2.4 控制转移类指令 ⑷间接转移指令 JMP @A+DPTR 设(A)=05H,(DPTR)=4567H。 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑷间接转移指令 JMP @A+DPTR 设(A)=05H,(DPTR)=4567H。 执行指令: JMP @A+DPTR 执行结果::(PC)=(A)+(DPTR)=05H + 4567H=456CH 即程序转向456CH单元执行。

3.2.4 控制转移类指令 例:散转程序设计,根据A中的数值实现程序散转 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 例:散转程序设计,根据A中的数值实现程序散转 MOV R1,A RL A ADD A,R1 ;(A)×3 MOV DPTR , #TABLE ;散转表首地址送DPTR JMP @A+DPTR TABLE: LJMP PM0 ;转程序PM0 TABLE+3: LJMP PM1;转程序PM1 PM0: …… LJMP是一个三字节指令,因此转移指令入口地址相隔3个字节,A中内容需是3的倍数。

第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 2.条件转移指令 与无条件转移指令不同,条件转移指令仅仅在满足指令中规定的条件(如累加器内容是否为零,二个操作数是否相等)时才执行无条件转移,否则程序顺序执行,相当于执行空操作。这类指令共有6条,可分为判零转移指令和比较转移指令两部分。

3.2.4 控制转移类指令 ⑴累加器判零转移指令 JZ rel ;若(A)=0,则(PC)=(PC+2)+rel 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑴累加器判零转移指令 JZ rel ;若(A)=0,则(PC)=(PC+2)+rel ;若(A)≠0,则(PC)=(PC)+2 JNZ rel ;若(A)≠0,则(PC)= (PC+2)+rel ;若(A)=0,则(PC)=(PC)+2 由上面的指令可以看出,这类指令都是以相对转移的方式转向目标地址的。偏移量rel的计算方法是: rel=目标地址一PC的当前值

3.2.4 控制转移类指令 ⑵数值比较转移指令 CJNE A,direct,rel CJNE A,#data,rel 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑵数值比较转移指令 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,# data,rel CJNE @Ri,#data,rel

第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 例:某温度控制系统,A中存有温度采样值Ta,(20H)=温度下限值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW;若Ta<T20,程序转升温SW;若T30≥Ta≥T20程序转FH返回主程序。 CJNE A,30H LOOP ;当A中的值Ta与地址30H中的 值T30不相等时,去执行LOOP AJMP FH ;Ta等于T30时,转FH LOOP:JNC JW;Ta大于T30,转去执行降温程序段JWC NE A,20H,LOOP1 ;当A中的值Ta与地址20H中的值T20不相等时;转去执行LOOP1 AJMP FH ;Ta等于T20,转FH LOOP1:JC SW Ta小于T20,转去执行升温程序段SW FH:------ ;保温程序段 JW:------ SW∶------

3.2.4 控制转移类指令 3.循环转移指令 DJNZ Rn,rel DJNZ direct,rel 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 3.循环转移指令 DJNZ Rn,rel DJNZ direct,rel 每执行一次循环指令时,先将指定的Rn或direct的内容减1,再判断其内容是否为0。若不为0,转向目标地址,继续执行循环程序;若为0,则结束循环程序段,程序往下执行。这类指令在计数循环结构程序编写时很有用。

3.2.4 控制转移类指令 从P1.7引脚输出5个方波,如图所示。 MOV R2,#10;设定需要输出5个方波,10个状态 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 从P1.7引脚输出5个方波,如图所示。 MOV R2,#10;设定需要输出5个方波,10个状态 LOOP:CPL P1.7 ;P1.7状态变反 DJNZ R2 ,LOOP ;未到设定输出数则转到LOOP执行

3.2.4 控制转移类指令 例:将2000H单元开始的一批数据传送到从3000H开始的单元中,数据长度在内部RAM的30H中。 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 例:将2000H单元开始的一批数据传送到从3000H开始的单元中,数据长度在内部RAM的30H中。 MOV DPTR,#2000H ;源数据区首址 PUSH DPL ;源数据区首址压栈保护 PUSH DPH MOV DPTR,#3000H ;目的数据区首址 MOV R6,DPL ;目的数据区首址存入寄存器 MOV R7,DPH LP:POP DPH ;取源数据区地址指针 POP DPL MOVX A,@DPTR ;取源数据 INC DPTR

3.2.4 控制转移类指令 PUSH DPL PUSH DPH ;更新源数据地址,并将该新地址压栈保护 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 PUSH DPL PUSH DPH ;更新源数据地址,并将该新地址压栈保护 MOV DPL,R6 ;取目的数据区首地址指针 MOV DPH,R7 MOVX @DPTR,A ;将取得的源数据存入目的数据区 INC DPTR MOV R6,DPL MOV R7,DPH ;更新目标数据地址,并将该新地址存入到R6和R7中 DJNZ 30H,LP ;若数据块未移完(即地址30H中的值不为0),则继续 POP DPH POP DPL SJMP $

3.2.4 控制转移类指令 4. 子程序调用指令 ⑴绝对调用指令 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 4. 子程序调用指令 ⑴绝对调用指令 ACALL addr11 设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为0456H。 执行指令:ACALL SUBRTN 执行结果:(PC)+2=0123H+2=0125H→(PC) 将(PC)=0125H压入堆栈: 25H压入(SP)+1=61H 01H压入(SP)十l=62H 此时(SP)=62H PC=0456H

3.2.4 控制转移类指令 ⑵长调用指令 设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为3456H。 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑵长调用指令 LCALL addr16 设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为3456H。 执行指令:LCALL SUBRTN 执行结果:(PC)+3=0123H+3=0126H→(PC)。 将(PC)压入堆栈: 26H压入(SP)+l=6lH, 0lH压入(SP)+l=62H中 此时(SP)=62H, (PC)=3456H

3.2.4 控制转移类指令 5.返回指令 ⑴子程序返回指令 RET 设(SP)=62H,RAM中的(62H)=0lH,(61H)=26H。 第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 5.返回指令 ⑴子程序返回指令 RET 设(SP)=62H,RAM中的(62H)=0lH,(61H)=26H。 执行指令:RET 执行结果∶(SP)=60H,PC=0126H。

第3章 MCS-51系列单片机指令系统 3.2.4 控制转移类指令 ⑵中断返回指令 RETI 设(SP)=62H,中断时断点是0123H,RAM中的(62H)=0lH,(61H)=23H。 执行指令:RETI 执行结果:(SP)=60H,PC=0123H 程序回到断点0123H处继续执行。并清除了内部相应的中断状态寄存器。

第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 MCS-51系列单片机内部有一个布尔(位)处理器,具有较强的布尔变量处理能力。布尔处理器实际上是一位的微处理机,它以进位标志CY作为位累加器,以内部RAM的20H至2FH单元及部分特殊功能寄存器为位存储器,以P0、P1、P2、P3为位I/O。对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状态控制指令、位逻辑操作指令及位条件转移指令。助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等11种。

3.2.5 位操作类指令 1.布尔传送指令 MOV C,bit ;(C)←(bit) MOV bit,C ;(bit)←(C) 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 1.布尔传送指令 MOV C,bit ;(C)←(bit) MOV bit,C ;(bit)←(C) 该指令的功能是将源操作数(位地址或布尔累加器)送到目的操作数(布尔累加器或位地址)中去。 设(C)=0,执行指令为 MOV P1.3,C,执行结果为P1.3口线输出0。

3.2.5 位操作类指令 2.布尔状态控制指令 ⑴位清除(CLR)指令 CLR C ;(C)←0 CLR bit ;(bit)←0 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 2.布尔状态控制指令 ⑴位清除(CLR)指令 CLR C ;(C)←0 CLR bit ;(bit)←0 该指令的功能是将C或指定位(bit)清0。 ⑵位置1(SETB)指令 SETB C ;(C)←l SETB bit ;(bit)←1 该指令的功能是将C或指定位(bit)置1。 ⑶位取反(CPL)指令 CPL C ;(C)←(/C) CPL bit ;(bit)←(/bit) 该指令的功能是将C或指定位(bit)取反。

3.2.5 位操作类指令 3.布尔(位)逻辑操作指令 ⑴位逻辑“与”(ANL)操作指令 ANL C,bit ;(C)←(C)•(bit) 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 3.布尔(位)逻辑操作指令 ⑴位逻辑“与”(ANL)操作指令 ANL C,bit ;(C)←(C)•(bit) ANL C,/bit ;(C)←(C)•(/bit) 该指令的功能是将指定位(bit)的内容或指定位内容取反后(原内容不变)与C的内容进行逻辑与运算,结果仍存于C中。 ⑵位逻辑“或”(ORL)操作指令 ORL C,bit ;(C)←C)十(bit) ORL C,/bit ;(C)←(C)十(/bit) 该指令的功能是将指定位(bit)的内容或指定位内容取反后(原内容不变)与C的内容进行逻辑或运算。结果仍存于C中。

3.2.5 位操作类指令 4.布尔(位)条件转移指令 ⑴布尔累加器条件转移指令 JC rel JNC rel 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 4.布尔(位)条件转移指令 ⑴布尔累加器条件转移指令 JC rel JNC rel 该指令的功能是对布尔累加器C进行检测,对应于上面的两条指令而言,当C分别为1或0时,程序转向由当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和得到的目标地址,否则程序往下顺序执行。因此转移的范围是-128~+127 B。操作不影响标志位。

3.2.5 位操作类指令 ⑵位测试条件转移指令 JB bit,rel JNB bit,rel 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 ⑵位测试条件转移指令 JB bit,rel JNB bit,rel 该指令的功能是检测指定位,对应于上面的两条指令而言,当位变量分别为1或0时,程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因此转移的范围是–128~127B。此操作不影响标志位。

3.2.5 位操作类指令 ⑶位测试条件转移并清0指令 JBC rel 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 ⑶位测试条件转移并清0指令 JBC rel 该指令的功能是检测指定位,当位变量为1时,则将该位清0,且程序转向当前PC值(转移指令地址+2)与第二字节中带符号的相对地址(rel)之和的目标地址,否则程序往下顺序执行。因此转移的范围是–128~127 B。操作不影响标志位。

JB ACC.0,MM ;当A的第0位ACC.0为1时,转去执行 MM SETB C ;当ACC.0为0时,将C置1 并转去执行OUT 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 例:试编写程序实现下述逻辑表达式的功能 Y= X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7 说明:设八位输入信号X0、X1、…、X7 从P1口输入,Y信号从P3.0输出。经化简得到 Y=X0+X1X2+X1X2+X4X5X6X7 MOV A,P1 ;将8位输入信号传到A中 JB ACC.0,MM ;当A的第0位ACC.0为1时,转去执行 MM SETB C ;当ACC.0为0时,将C置1 并转去执行OUT SJMP OUT ;X0=1,转出口

3.2.5 位操作类指令 MM: MOV C,ACC.1 ANL C,/ACC.2 JC OUT ;X1X2=1,转出口 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 MM: MOV C,ACC.1 ANL C,/ACC.2 JC OUT ;X1X2=1,转出口 MOV C,ACC.2 ANL C,/ACC.1 MOV C,ACC.7 ANL C,/ACC.4 ANL C,/ACC.5 ANL C,/ACC.6 ;X4X5X6X7 OUT:MOV P3.0,C …

3.2.5 位操作类指令 CHK1:CJNE A,#1,CHK2 INC 21H ;是“1”,则“1”计数单元加1 SJMP END0 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 CHK1:CJNE A,#1,CHK2 INC 21H ;是“1”,则“1”计数单元加1 SJMP END0 CHK2:CJNE A,#2,CHK3 INC 22H ;是“2”,则“2”计数单元加1 CHK3:CJNE A,#3,CHK4 INC 23H ;是“3” ,则“3” 计数单元加1 CHK4:CJNE A,#4,CHK5 INC 24H ;是“4”,则“4”计数单元加1 CHK5:CJNE A,#5,CHK6 INC 25H ;是“5”,则“5”计数单元加1

3.2.5 位操作类指令 CHK6:CJNE A,#6,CHK7 INC 26H ;是“6”,则“6”计数单元加1 SJMP END0 第3章 MCS-51系列单片机指令系统 3.2.5 位操作类指令 CHK6:CJNE A,#6,CHK7 INC 26H ;是“6”,则“6”计数单元加1 SJMP END0 CHK7:CJNE A,#7,CHK8 INC 27H ;是“7”,则“7”计数单元加1 CHK8:CJNE A,#8,CHK9 INC 28H ;是“8”,则“8”计数单元加1 CHK9:CJNE A,#9,ERR INC 29H ;是“9”,则“9”计数单元加1 END0:DJNZ R0,READ ;判是否全部统计完? HERE:SJMP HERE ERR:… ;非0~9,出错