
江苏开放大学 JIANGSU OPEN UNIVERSITY 单片机技术及应用 (讲义) 顾筠编 2018年11月
单片机技术及应用 (讲义) 顾筠 编 2018 年 11 月


前言与目录 单片机面向控制,在各种机电、电子产品或机电技术中得到广泛应用。单片机误 程融合了数字电子技术、控制技术、软件编程等知识与技能。 本误程围绕MCS-51系列单片机进行学习,课程主要包括有关单片机的基本枚念 和基本知识,单片机的组成结构,寻址方式、指令系统和程序设计方法,单片机内部 IO接口单元及应用,外围设备与接口等。 通过本谋程的学习,要求: 1。理解单片机相关的基础知识,单片机敏小系统: 2.掌握MCS-51的寻址方式和指令系统: 3.掌握单片机程序设计方法: 4。理解单片机接口应用方法:并行口、中断系统、定时计数器、串行口: 5.了解常用外设的接口方法和程序设计方法:AD和D/A按口、I.FD显示。 本讲义依据单片机的功能应用划分成单元,共有10个单元的学习内容。 第1单元单片机基础概述 第2单元单片机组成结构 第3单元单片机的存储器 第4单元单片机指令系统 第5单元单片机程序设计 第6单元并行接口 第7单元中断系统 第8单元定时器/计数器 第9单元申行接口 第10单元外由设备与接口 每个单元都设置有习题,供同学们思考练习,以巩固学习内容
单片机技术及应用 (讲义) 顾筠 编 2017 年 1 月 前言与目录 单片机面向控制,在各种机电、电子产品或机电技术中得到广泛应用。单片机课 程融合了数字电子技术、控制技术、软件编程等知识与技能。 本课程围绕 MCS-51 系列单片机进行学习,课程主要包括有关单片机的基本概念 和基本知识,单片机的组成结构,寻址方式、指令系统和程序设计方法,单片机内部 I/O 接口单元及应用,外围设备与接口等。 通过本课程的学习,要求: 1.理解单片机相关的基础知识,单片机最小系统; 2.掌握 MCS-51 的寻址方式和指令系统; 3.掌握单片机程序设计方法; 4.理解单片机接口应用方法:并行口、中断系统、定时计数器、串行口; 5.了解常用外设的接口方法和程序设计方法:A/D 和 D/A 接口、LED 显示。 本讲义依据单片机的功能应用划分成单元,共有 10 个单元的学习内容。 第 1 单元 单片机基础概述 第 2 单元 单片机组成结构 第 3 单元 单片机的存储器 第 4 单元 单片机指令系统 第 5 单元 单片机程序设计 第 6 单元 并行接口 第 7 单元 中断系统 第 8 单元 定时器/计数器 第 9 单元 串行接口 第 10 单元 外围设备与接口 每个单元都设置有习题,供同学们思考练习,以巩固学习内容

草片机技水及应用 第4单元 单片机指令系统 【导言】 本学习单元主要讲述MCS-5]单片机寻址方式和指令系统。学习竿捉本单元内容,是学 习单片机编程应用的基础。 学习提示:学习本单元要求具备第2单元一一“MCS51单片机的组成结构”中的单片 机硬件知识。 【学习目标】 掌握:寻址方式、MCS-51指令系统. 指令与伪指令的正确格式, 五类指令的功能和使用。 理解:七种子址方式的使用及寻址方式的含义。 【学习重点和难点】 1,重点:寻址方式、MCS-51指令系统, 2,难点:寻址方式。 【学习内容】 4,1寻址方式 4,2指令系统椒述 4,3数据传送癸指令 4.4算术运算类指令 4.5逻辑运算类指令 4.6控制转移类指令 4.7布尔变量操作类指令
单片机技术及应用 1 第 4 单元 单片机指令系统 【导言】 本学习单元主要讲述 MCS-51 单片机寻址方式和指令系统。学习掌握本单元内容,是学 习单片机编程应用的基础。 学习提示:学习本单元要求具备第 2 单元——“MCS-51 单片机的组成结构”中的单片 机硬件知识。 【学习目标】 掌 握:寻址方式、MCS-51 指令系统。 指令与伪指令的正确格式。 五类指令的功能和使用。 理 解:七种寻址方式的使用及寻址方式的含义。 【学习重点和难点】 1.重点:寻址方式、MCS-51 指令系统。 2.难点:寻址方式。 【学习内容】 4.1 寻址方式 4.2 指令系统概述 4.3 数据传送类指令 4.4 算术运算类指令 4.5 逻辑运算类指令 4.6 控制转移类指令 4.7 布尔变量操作类指令

第4单元单作机指女爪能 指令是指挥计算机执行某种操作的命令。一台计算机所能识别的全部指令的集合称为指 令系统。计算机只能识别二进制代码,以二进制代码来描述指令功能的语言称为机器语言, 用机器语言组成的程序,称为日标程序。计算机只能识别和执行机器语言指令。由于机器语 言只是一种用二进制0、1组成的代码,人们不易辨识、记亿和书写,因此使用不使、易错, 程序设计也较困难。 为了既能体现机器语言的特点,又能便于人们理解、记忆和使用,计算机常采用助记符 米编写指令。这种用指令的助记符、符号地址,标号等符号书写程序的语言称为汇编语言。 用汇编语言编写的源程序需翻译成机器语言指令才能在计算机上运行,汇编语言与计算机的 类型有关,各种类型的计算机都有相应的汇编程序,能将孔编语言指令编成机器指令。汇 编程序是将汇编语言指令開译成机器指令的秋件。本学习单元介绍MCS51指令的寻址方式 和指令的格式,分类介绍MCS51指令系统的功能和使用方法。 4.1寻址方式 一条汇编语言指令要指出进行什么操作,这由指令的操作码米完成,另外要涉及操作数 和操作结果,即要指出操作数的值为多少或者放在什么地方,还些指出操作结果送到哪里去 所以,一条指令除了木身的操作码外,还要指出操作数的来源。指令查找操作数的方法称为 寻址方式。 MCS-51系列单片机共有7种寻址方式:寄存器寻址、立即子址、直接寻址、寄存器间 接寻址、基址寄存器加变址济存器间接寻址,相对寻址、位寻址。 4.1,1寄存器寻址 操作数在济存器中,指令中指出将存器名,这种寻址方式称为济存器寻址。济存器寻址 方式可用于访问选定寄存器区的8个工作寄存器R0一R7,还可以访问ACC、B、DPTR. 例如:指令 MOV A,RO A -(R0) 其功能为将寄存器R0的内容送到累加器A中。 若(R0)-8H,则执行该指令后,(A)-8FH 在该条指令中,源操作数和日的操作数是山寻址R0和A寄存器得到的,故属于将存墨 寻址。 R0一R7是工作寄存卷,在内部RAM的低128B中的00H一1FH,共有4组,由编程PsW
第 4 单元 单片机指令系统 2 指令是指挥计算机执行某种操作的命令。一台计算机所能识别的全部指令的集合称为指 令系统。计算机只能识别二进制代码,以二进制代码来描述指令功能的语言称为机器语言, 用机器语言组成的程序,称为目标程序。计算机只能识别和执行机器语言指令。由于机器语 言只是一种用二进制 0、1 组成的代码,人们不易辨识、记忆和书写,因此使用不便、易错, 程序设计也较困难。 为了既能体现机器语言的特点,又能便于人们理解、记忆和使用,计算机常采用助记符 来编写指令。这种用指令的助记符、符号地址、标号等符号书写程序的语言称为汇编语言。 用汇编语言编写的源程序需翻译成机器语言指令才能在计算机上运行。汇编语言与计算机的 类型有关,各种类型的计算机都有相应的汇编程序,能将汇编语言指令汇编成机器指令。汇 编程序是将汇编语言指令翻译成机器指令的软件。本学习单元介绍 MCS-51 指令的寻址方式 和指令的格式,分类介绍 MCS-51 指令系统的功能和使用方法。 4.1 寻址方式 一条汇编语言指令要指出进行什么操作,这由指令的操作码来完成,另外要涉及操作数 和操作结果,即要指出操作数的值为多少或者放在什么地方,还要指出操作结果送到哪里去。 所以,一条指令除了本身的操作码外,还要指出操作数的来源。指令查找操作数的方法称为 寻址方式。 MCS-51 系列单片机共有 7 种寻址方式:寄存器寻址、立即寻址、直接寻址、寄存器间 接寻址、基址寄存器加变址寄存器间接寻址、相对寻址、位寻址。 4.1.1 寄存器寻址 操作数在寄存器中,指令中指出寄存器名,这种寻址方式称为寄存器寻址。寄存器寻址 方式可用于访问选定寄存器区的 8 个工作寄存器 R0~R7,还可以访问 ACC、B、DPTR。 例如:指令 MOV A,R0 ;A ←(R0) 其功能为将寄存器 R0 的内容送到累加器 A 中。 若(R0)=8FH,则执行该指令后,(A)=8FH。 在该条指令中,源操作数和目的操作数是由寻址 R0 和 A 寄存器得到的,故属于寄存器 寻址。 R0~R7 是工作寄存器,在内部 RAM 的低 128B 中的 00H~1FH,共有 4 组,由编程 PSW

单木机技米及应用 中的RS1、RSD二位来决定是塌一组R0-R7。若RSI RS0-O0H,则R0的地址为00H。 MOVA,R0指令的机器码为E8H,指令执行过程如图4-I所示: 内部RAM 101000 位 RO 8FH 地 DOH 0 址 0 ACC 0 A7/ Psw■■☐O0■ RSI RSO 图4-】MOVA,R0指令执行过程示登图 4.1.2立即寻址 操作数包含在指令学节巾,即操作数以指令学节的形式存放于程序存储器中,这种寻址 方式为立即寻址。指令中用符号#表示立即数。 例如:指令 ADD A.#50H 1A-50H 其功能为将累加器A中的数据加上50H,结果仍送到累加器A中。 若(A)=32H.则执行该指令后,(A)=82H。 在该条指令中,源操作数是立即数0H,属于立即寻址 ADDA,N50川指令的机器码为241H50,指令执行过程如图42所示. PC 00100100 慢作码 PC+1 01010000 立即量 ALU 图4-2ADDL,*50阳指令执行过程示意图 3
单片机技术及应用 3 中的 RS1、RS0 二位来决定是哪一组 R0~R7。若 RS1 RS0=00H,则 R0 的地址为 00H。 MOV A,R0 指令的机器码为 E8H,指令执行过程如图 4-1 所示。 4.1.2 立即寻址 操作数包含在指令字节中,即操作数以指令字节的形式存放于程序存储器中,这种寻址 方式为立即寻址。指令中用符号 # 表示立即数。 例如:指令 ADD A,#50H ;A ← 50H 其功能为将累加器 A 中的数据加上 50H,结果仍送到累加器 A 中。 若(A)=32H,则执行该指令后,(A)=82H。 在该条指令中,源操作数是立即数 50H,属于立即寻址。 ADD A,#50H 指令的机器码为 24H 50H,指令执行过程如图 4-2 所示。 图 4-2 ADD A,#50H 指令执行过程示意图 0 0 1 0 0 1 0 0 ALU 操作码 立即数 ACC PC PC+1 0 1 0 1 0 0 0 0 图 4-1 MOV A,R0 指令执行过程示意图 1 1 1 0 1 0 0 0 0 0 0 A0 A7 八 位 地 址 内部 RAM ACC RS1 RS0 PC 0 0 R0 00H 8FH PSW

常4兼元 单岸机指女系桃 4.1.3直接寻址 指令中给出操作数的直接地址,该执址是参与操作的数裙所在的字节单元的珀址,这种 寻址方式为直接寻址。 例如:指令 MOV A,40H ;A-(40H) 其功能为把内部RAM中4川单元的内容传送到累加器A中。 若内部RAM中(40H)-5FH,则执行该指令后,(A)-5FH, 在该条指令中,源操作数是直接地址,在内部RAM的4OH单元,属于直接寻址。 MOV A,0阳指令的机器码为E5H40H,指令执行过程如图43所示. PC 11001D 操作码 40H 内郭RAM 5F用 ACC PC+l- 40H 直接址 图4-3指令MOVA,40执行过程示意图 MCS-51系列单片机的直接寻址方式可用于访问内部数据存储器,也可以用于访问程序 存储器。 直楼寻址方式用于访问内部数据存储器时,可以访问两种存储空间:特殊功能寄存器 (SFR)和内部RAM低128B.采用直接寻址方式的指令是双字节指令,其中第一个字节是 操作码,第二个字节是内都RAM低128B或特殊功使寄存器的直接地址。 特殊功能寄存器的地址由0川开始计,对于80518031单片机,片内RAM只有128个 单元,它与SFR的地址不重叠:但对于8032/8052单片机,片内RAM有256个单元,其高 128B(8OH-FFH)与SFR的地址是重叠的,故单片机规定,直接寻址方式不能用于内部RAM 的高128字节,若要访问内部RAM高128B只能用寄存器间接寻址,而访问特陈功能寄存器 只能用直接寻址。另外,访问特殊功能寄存器($FR)可在指令巾使用该寄存器的名字米纪 替地址,如MOVA,0H,可以写成MOVA,P,因为P0口的的地址为80H. 直接诗址方式用于访间程序存储器时,是在转移指令或调用指令中直接给出程序存储器 的地址。有长转移IJMP addr16与绝对转移AMPd11指令、长调用1.CA1L.dd16 与绝对调用ACALL addr11指令。这些指令都直接给出了程序行储器的16位地址(寻址范 围覆盖64KB)或1】位地址(寻址范围覆盖2KB》。执行这些指令后,程序计数器PC的16 位或低11位地址将替换为指令直接给出的地址,从而实现程序的转移或诗用:
第 4 单元 单片机指令系统 4 4.1.3 直接寻址 指令中给出操作数的直接地址,该地址是参与操作的数据所在的字节单元的地址,这种 寻址方式为直接寻址。 例如:指令 MOV A,40H ;A ←(40H) 其功能为把内部 RAM 中 40H 单元的内容传送到累加器 A 中。 若内部 RAM 中(40H)=5FH,则执行该指令后,(A)=5FH。 在该条指令中,源操作数是直接地址,在内部 RAM 的 40H 单元,属于直接寻址。 MOV A,40H 指令的机器码为 E5H 40H,指令执行过程如图 4-3 所示。 MCS-51 系列单片机的直接寻址方式可用于访问内部数据存储器,也可以用于访问程序 存储器。 直接寻址方式用于访问内部数据存储器时,可以访问两种存储空间:特殊功能寄存器 (SFR)和内部 RAM 低 128B。采用直接寻址方式的指令是双字节指令,其中第一个字节是 操作码,第二个字节是内部 RAM 低 128B 或特殊功能寄存器的直接地址。 特殊功能寄存器的地址由 80H 开始计,对于 8051/8031 单片机,片内 RAM 只有 128 个 单元,它与 SFR 的地址不重叠;但对于 8032/8052 单片机,片内 RAM 有 256 个单元,其高 128B(80H~FFH)与 SFR 的地址是重叠的。故单片机规定,直接寻址方式不能用于内部 RAM 的高 128 字节,若要访问内部 RAM 高 128B 只能用寄存器间接寻址,而访问特殊功能寄存器 只能用直接寻址。另外,访问特殊功能寄存器(SFR)可在指令中使用该寄存器的名字来代 替地址,如 MOV A,80H,可以写成 MOV A,P0,因为 P0 口的的地址为 80H。 直接寻址方式用于访问程序存储器时,是在转移指令或调用指令中直接给出程序存储器 的地址。有长转移 LJMP addr16 与绝对转移 AJMP addr11 指令、长调用 LCALL addr16 与绝对调用 ACALL addr11 指令。这些指令都直接给出了程序存储器的 16 位地址(寻址范 围覆盖 64KB)或 11 位地址(寻址范围覆盖 2KB)。执行这些指令后,程序计数器 PC 的 16 位或低 11 位地址将替换为指令直接给出的地址,从而实现程序的转移或调用。 图 4-3 指令 MOV A,40H 执行过程示意图 1 1 1 0 0 1 0 1 操作码 内部 RAM 直接地址 ACC PC PC+1 40H 40H 5FH

单岸机故术及应用 4.1.4寄存器间接寻址 操作数在内部RAM或外部致据存储器中,操作数所在的存储器的地址在某一个寄存器 中,这种寻址方式称为寄存器间接寻址。将存器间接寻址用符号@表示。能够用于寄存器间 楼寻址的寄存器有:RO、R」,DPTR和SP。其中,SP仅用于堆栈操作. 例如:指令 ANL A.@RD A -(A)((RO)) 其功能为由R0指出的内部RAM单元的内容和嚣加器A的内容进行菱料与,结果送紫 加器A中, 若(R0)-60H,内部RAM的(60H)=FOH,(A)-7AH,则执行该指令后,(A》-70H。 在该条指令中,源操作数采用寄存器间接寻址方式,指令执行过程如图44所示。 内部RAM FOH 扶行后 RO 60H 7和H 执行前 7AH 图4-4指令ANIA,@)执行过程示意图 寄存器问接子址的存储器空问包括内部数据RAM和外部数据RAM 当访间内部RAM时,由于内部RAM共有128字节(8032/8052有256B),寄存器间 接寻址使用所选定的R0或R1作地址指针米寻址整个空问(00,1或00~FFI)· 当访问外部数据存储器副,寄存器问接寻址使用R0、R1或DPTR作为地址指针,由于 外部数据存储器最大可达64KB,仅仪用R0或R1无法寻址坚个空间。为此,在MCS-51单片 机指令中,当用R0或R]对外部数据RAM作间接寻址时,由P2增口提供高8位地址,由 R0或R1提供低8位地址,由此共司寻址6KB范国。对外部数菇RAM还可以用16位的 DPTR作济存器间接寻址。访问外部数据存储器的指令仅用MOVX的符号形式: 在执行堆找操作时(USH和POP),也采用寄存器问楼寻址.这时堆找指针SP用作 问址寄存器。堆栈操作仅在内部RAM中进行。 4.1.5基址寄存器加变址寄存器间接寻址 操作数在程序存储器中,而其地址由#址寄存器(DPTR或PC)的内容和安量济存器(A) 的内容相形成,这种寻址方式为基址寄存器变址寄存塔间接寻址方式,简称为基变址寻
单片机技术及应用 5 4.1.4 寄存器间接寻址 操作数在内部 RAM 或外部数据存储器中,操作数所在的存储器的地址在某一个寄存器 中,这种寻址方式称为寄存器间接寻址。寄存器间接寻址用符号@表示。能够用于寄存器间 接寻址的寄存器有:R0、R1、DPTR 和 SP。其中,SP 仅用于堆栈操作。 例如:指令 ANL A,@R0 ;A ← (A)((R0)) 其功能为由 R0 指出的内部 RAM 单元的内容和累加器 A 的内容进行逻辑与,结果送累 加器 A 中。 若(R0)=60H,内部 RAM 的(60H)=F0H,(A)=7AH,则执行该指令后,(A)=70H。 在该条指令中,源操作数采用寄存器间接寻址方式,指令执行过程如图 4-4 所示。 寄存器间接寻址的存储器空间包括内部数据 RAM 和外部数据 RAM。 当访问内部 RAM 时,由于内部 RAM 共有 128 字节(8032/8052 有 256B),寄存器间 接寻址使用所选定的 R0 或 R1 作地址指针来寻址整个空间(00~7FH 或 00~FFH)。 当访问外部数据存储器时,寄存器间接寻址使用 R0、R1 或 DPTR 作为地址指针,由于 外部数据存储器最大可达 64KB,仅用 R0 或 R1 无法寻址整个空间。为此,在 MCS-51 单片 机指令中,当用 R0 或 R1 对外部数据 RAM 作间接寻址时,由 P2 端口提供高 8 位地址,由 R0 或 R1 提供低 8 位地址,由此共同寻址 64KB 范围。对外部数据 RAM 还可以用 16 位的 DPTR 作寄存器间接寻址。访问外部数据存储器的指令仅用 MOVX 的符号形式。 在执行堆栈操作时(PUSH 和 POP),也采用寄存器间接寻址。这时堆栈指针 SP 用作 间址寄存器。堆栈操作仅在内部 RAM 中进行。 4.1.5 基址寄存器加变址寄存器间接寻址 操作数在程序存储器中,而其地址由基址寄存器(DPTR 或 PC)的内容和变址寄存器(A) 的内容相加形成,这种寻址方式为基址寄存器加变址寄存器间接寻址方式,简称为基变址寻 图 4-4 指令 ANL A,@R0 执行过程示意图 内部 RAM 60H A R0 60H F0H 7AH A 70H 执行前 执行后

常4草完草作机指南系就 址。 例如:指令 MOVC A,@A+DPTR A -((A)+DPTR) 其功能为A的内容作为无符号数和DPTR的内容抑加得到一个16位的地址,由该地址 指出的程序存储器单元的内容送累加器A。 若(A》=30H,(DPTR)=200H,外部数据RAM中(1230H)=55H,则执行该指令 后,(A)-55H。 在该条指令中,源操作数采用基变址寻址方式,指令执行过程如图45所示。 执行前 程序存储器 执行日 A 301H 55H 1230H DPTR 120001 图4-5指令MOVCA,@A+DPIR执行过程示意图 4.1.6相对寻址 以当前程序计数器PC的值加上指令给出的一字节偏移量而构成实际操作疑地址,这 种寻址方式为相对寻址。相对寻址只用于悠改P℃的值,故访问的地址空间是程序存储器, 主要用于实现程序的分支转移。 例如:指令 JZ05SH:P℃+(C+2+05 其功能为当前P℃值(即本条指令的电址P℃值+2)加上偏移量05H,作为新的C值, 即指令执行后,转移到地址为PC+05H处执行程序。 若本条指令地址为(PC)=0100H,则执行该指令后,(P℃)=0107H。 JZ05H指令的机器码为60HD5H,指令执行过程如图46所示。 在使用相对指令时要注意以下两点: 第一,当前℃值是指相对转移指令所在地址(一服称:为源地址)加上转移指令字节数, 即:当前P℃值-湖地址+转移指令字节数. 第二,偏移量是有符号的单字节数,以补码表示,其相对值的范围是-128一+127《即 O0一FFH),正数表示从当前地址向下转移,负数表示从当前地址向上转移。所以,相对 转移指令满足条件后,转移的地址(一般称为月的地址)应为: 目的地址一当前C值+【一源地址+转移指令字节颈+©l
第 4 单元 单片机指令系统 6 址。 例如:指令 MOVC A,@A+DPTR ;A ← ((A)+DPTR) 其功能为 A 的内容作为无符号数和 DPTR 的内容相加得到一个 16 位的地址,由该地址 指出的程序存储器单元的内容送累加器 A。 若(A)=30H,(DPTR)=1200H,外部数据 RAM 中(1230H)=55H,则执行该指令 后,(A)=55H。 在该条指令中,源操作数采用基变址寻址方式,指令执行过程如图 4-5 所示。 4.1.6 相对寻址 以当前程序计数器 PC 的值加上指令给出的一字节偏移量 rel 而构成实际操作数地址,这 种寻址方式为相对寻址。相对寻址只用于修改 PC 的值,故访问的地址空间是程序存储器, 主要用于实现程序的分支转移。 例如:指令 JZ 05H ;PC ← (PC)+2+05 其功能为当前 PC 值(即本条指令的地址 PC 值+2)加上偏移量 05H,作为新的 PC 值, 即指令执行后,转移到地址为 PC+05H 处执行程序。 若本条指令地址为(PC)=0100H,则执行该指令后,(PC)=0107H。 JZ 05H 指令的机器码为 60H 05H,指令执行过程如图 4-6 所示。 在使用相对指令时要注意以下两点: 第一,当前 PC 值是指相对转移指令所在地址(一般称为源地址)加上转移指令字节数, 即:当前 PC 值=源地址+转移指令字节数。 第二,偏移量 rel 是有符号的单字节数,以补码表示,其相对值的范围是-128~+127(即 00H~FFH),正数表示从当前地址向下转移,负数表示从当前地址向上转移。所以,相对 转移指令满足条件后,转移的地址(一般称为目的地址)应为: 目的地址=当前 PC 值+ rel = 源地址 + 转移指令字节数 + rel 图 4-5 指令 MOVC A,@A+DPTR 执行过程示意图 程序存储器 1230H A A 30H 55H 55H + DPTR 1200H 执行前 执行后

草芹机技求及应用 C值 序存储西 0100H 601 01011 05I rel 0102 当前℃值-一一 0107 图-6指令几0州执行注程示意图 例如在上面的例子巾,指令Z05用的地址为0100川,这是一条2字岸指令,所以,当 前PC值为0102H,偏移量l为05H,则转移地止为0107H,即向下转移到0107H处。 4.1.7位寻址 MCS-5引系列单片机具有位寻址功能。位寻址是一种直接寻址方式,即指令中直接给出 位地址,而对位地址中的内容作位操作的寻址方式。 由于单片机中只有内部RAM的128位和特殊功能膏存器中的93位有位地址,因此位寻 址只能对有位地址的这两个空可作寻址操作。内部RAM中的学节地址单元20H一2F甲可以 位寻址,特殊功能寄存器中地址能被8整除的字节地址单元可以位子址,两者统一编址,地 量空间为00H一FFH, 例如:指令 MOV C,P0.D C -(P0.0) 其功能为P0口领存器的第0位的值送C中。 若(P0)=01101110B,则执行该指令后,(C)=0. 在该条指令中,源操作数与目的操作数均采用位寻址方式,指令执行过程如图47所示。 图7指◆MVC..D执行过程示意图 综上所述,MCS-51指令操作数的寻址主要有七种方式,这七种寻址方式以及它们的寻 址空问是: 7
单片机技术及应用 7 例如在上面的例子中,指令 JZ 05H 的地址为 0100H,这是一条 2 字节指令,所以,当 前 PC 值为 0102H,偏移量 rel 为 05H,则转移地址为 0107H,即向下转移到 0107H 处。 4.1.7 位寻址 MCS-51 系列单片机具有位寻址功能。位寻址是一种直接寻址方式,即指令中直接给出 位地址,而对位地址中的内容作位操作的寻址方式。 由于单片机中只有内部 RAM 的 128 位和特殊功能寄存器中的 93 位有位地址,因此位寻 址只能对有位地址的这两个空间作寻址操作。内部 RAM 中的字节地址单元 20H~2FH 可以 位寻址,特殊功能寄存器中地址能被 8 整除的字节地址单元可以位寻址,两者统一编址,地 址空间为 00H~FFH。 例如:指令 MOV C,P0.0 ;C ← (P0.0) 其功能为 P0 口锁存器的第 0 位的值送 C 中。 若(P0)=01101110B,则执行该指令后,(C)=0。 在该条指令中,源操作数与目的操作数均采用位寻址方式,指令执行过程如图 4-7 所示。 综上所述,MCS-51 指令操作数的寻址主要有七种方式,这七种寻址方式以及它们的寻 址空间是: 图 4-7 指令 MOV C,P0.0 执行过程示意图 P0 C 7 6 5 4 3 2 1 0 0 1 1 0 1 1 1 0 图 4-6 指令 JZ 08H 执行过程示意图 程序存储器 0100H 05H 60H rel + 0107H 当前 PC 值 PC 值 0101H 0102H 0107H