第1章单片微型计算机概述 1.1单片微型计算机定义和特点 1.2微计算机系统概念 1.3单片微型计算机发展概况 1.4单片机的应用特点 ■1.5单片机的开发与应用方法简述 1.1单片微型计算机定义和特点 ■所谓单片机微型计算机就是把CPU、寄存器、RAM/ROM、I/0接口电路集成在一块集 成电路芯片上,构成一个完整的微型计算机,见图 ■特点 (1)体积小、功耗低、性价比髙 (2)数据大都在单片机内部传送,抗干扰能力强,可靠性高 (3)结构灵活,应用广泛。 几种单片机封装形式 1.2微计算机系统概念 1.3单片微型计算机发展概况 ■数据位长1→4→8→16→32位 ■CPU处理能力和速度不断提高 ■增大片内RAM和ROM容量 ■增加片内I/O口和功能模块种类和数量 ■扩大对外部RAM/I0口和程序存储器寻址能力。 ■缩小体积,降低功耗。 1.4单片机的应用特点 ■控制应用:应用范围广泛,从实时性角度可分为离线应用和在线应用 ■软硬件结合:软硬件统筹考虑,不仅要会编程,还要有硬件的理论和实践知识。 ■应用现场环境恶劣:电磁干扰、电源波动、冲击震动、髙低温等环境因素的影响。 要考虑芯片等级选择、接地技术、屏蔽技术、隔离技术、滤波技术、抑制反电势干 扰技术等 ■应用空间大:工业自动化、仪器仪表、家用电器、信息和通信产品、军事装备等 领域。 1.5单片机的开发与应用方法简述 ■由于单片机本身没有开发编程的能力,所以必须借助开发工具。 ■硬开发工具:各种编程器、仿真开发机等编程开发设备:软开发工具:各种编辑、 汇编、模拟调试等工具软件 开发过程:总体设计、硬件设计、制版与安装、软件设计、调试运行,见图。 ■硬件仿真调试:借助于各种实时在线开发仿真器,对目标程序进行多种方式的联 机运行调试,从而发现程序中的错误之处并改正之,见图 软件模拟仿真调试:借助于PC机系统,利用模拟(仿真)调试工具软件来进行目 标程序的运行调试。 仿真器和逻辑测试仪 编程器
第1章 单片微型计算机概述 ◼ 1.1单片微型计算机定义和特点 ◼ 1.2 微计算机系统概念 ◼ 1.3 单片微型计算机发展概况 ◼ 1.4 单片机的应用特点 ◼ 1.5单片机的开发与应用方法简述 1.1 单片微型计算机定义和特点 ◼ 所谓单片机微型计算机就是把CPU、寄存器、RAM/ROM、I/O接口电路集成在一块集 成电路芯片上,构成一个完整的微型计算机 ,见图。 ◼ 特点: (1)体积小、功耗低、性价比高。 (2)数据大都在单片机内部传送,抗干扰能力强,可靠性高。 (3)结构灵活,应用广泛。 几种单片机封装形式 1.2 微计算机系统概念 1.3 单片微型计算机发展概况 ◼数据位长 1→4→8→16 →32位。 ◼CPU处理能力和速度不断提高 。 ◼增大片内RAM和ROM容量 。 ◼增加片内I/O口和功能模块种类和数量 。 ◼扩大对外部RAM/IO口和程序存储器寻址能力 。 ◼缩小体积,降低功耗。 1.4 单片机的应用特点 ◼控制应用:应用范围广泛,从实时性角度可分为离线应用和在线应用。 ◼软硬件结合:软硬件统筹考虑,不仅要会编程,还要有硬件的理论和实践知识。 ◼应用现场环境恶劣:电磁干扰、电源波动、冲击震动、高低温等环境因素的影响。 要考虑芯片等级选择、接地技术、屏蔽技术、隔离技术、滤波技术、抑制反电势干 扰技术等。 ◼应用空间大:工业自动化、仪器仪表、家用电器、信息和通信产品、军事装备等 领域。 1.5单片机的开发与应用方法简述 ◼ 由于单片机本身没有开发编程的能力,所以必须借助开发工具。 ◼ 硬开发工具:各种编程器、仿真开发机等编程开发设备;软开发工具:各种编辑、 汇编、模拟调试等工具软件。 ◼ 开发过程:总体设计、硬件设计、制版与安装、软件设计、调试运行,见图。 ◼ 硬件仿真调试:借助于各种实时在线开发仿真器,对目标程序进行多种方式的联 机运行调试,从而发现程序中的错误之处并改正之,见图。 ◼ 软件模拟仿真调试:借助于PC机系统,利用模拟(仿真)调试工具软件来进行目 标程序的运行调试。 仿真器和逻辑测试仪 编程器
编程器和芯片座 编程器软件界面 各种实验板 Dais单片机微机仿真实验系统 第2章MS-51单片机的硬件结构 2.1MCS-51单片机的物理结构及逻辑结构 2.2MS-51单片机的片外总线结构 2.3MCS-51单片机的存储器配置 2.4CPU的时序及辅助电路 2.1MS-51单片机的物理结构及逻辑结构 2.1.1MCS-51单片机的封装和引脚分配 2.1.2MCS-51单片机的系统结构 2.1.3MCS-51单片机的引脚定义 2.1.4MCS-51单片机硬件结构要点 2.1.5MS-51单片机内部结 2.1.6输入/输出(I/0)端口结构 2.1.2MCS-51单片机的系统结构 (1)一个8位微处理器CPU 2)数据存储器RAM和特殊功能寄存器SFR (3)内部程序存储器ROM。 (4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。 (5)四个8位可编程的I/0(输入/输出)并行端口,每个端口既可做输入,也可做 输出。 (6)一个串行端口,用于数据的串行通信。 (7)中断控制系统。 (8)内部时钟电路。 2.1.3MCS-51单片机的引脚定义 输入输出口:PO、P1、P2、P3 RST(复位)/WPD(后备电源引入端) EA(读内/外ROM控制)/Vpp(编程电压) ALE(地址低8位锁存)/PROG(编程脉冲) PSEN外部ROM读选通信号 XTALI、XTAL2外接晶振端 V +5v电源 V: 地 ·P3口的第二功能
编程器和芯片座 编程器软件界面 各种实验板 Dais单片机微机仿真实验系统 第2章 MCS-51单片机的硬件结构 2.1 MCS-51单片机的物理结构及逻辑结构 2.2 MCS-51单片机的片外总线结构 2.3 MCS-51单片机的存储器配置 2.4 CPU的时序及辅助电路 2.1 MCS-51单片机的物理结构及逻辑结构 2.1.1 MCS-51单片机的封装和引脚分配 2.1.2 MCS-51单片机的系统结构 2.1.3 MCS-51单片机的引脚定义 2.1.4 MCS-51单片机硬件结构要点 2.1.5 MCS-51单片机内部结 2.1.6 输入/输出(I/O)端口结构 2.1.2 MCS-51单片机的系统结构 (1)一个8位微处理器CPU。 (2)数据存储器RAM和特殊功能寄存器SFR。 (3)内部程序存储器ROM。 (4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。 (5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做 输出。 (6)一个串行端口,用于数据的串行通信。 (7)中断控制系统。 (8)内部时钟电路。 2.1.3 MCS-51单片机的引脚定义 • 输入输出口:P0、P1、P2、P3 • RST(复位)/ VPD(后备电源引入端) • EA (读内/外ROM控制)/Vpp(编程电压) • ALE(地址低8位锁存)/ PROG(编程脉冲) • PSEN 外部ROM读选通信号 • XTAL1、XTAL2 外接晶振端 • Vcc +5v电源 • Vss 地 • P3口的第二功能
2.1.4MCS-51单片机硬件结构要点 1.内部程序存储器(ROM)和内部数据存储器(RM)容量(如表2-1所示) 2.输入/输出(I/0)端口 3.外部程序存储器和外部数据存储器寻址空间 4.中断与堆栈 5.定时/计数器与寄存器区 6.指令系统 2.1.5MCS-51单片机内部结构 1.运算器 运算器由8位算术逻辑运算单元ALU( Arithmetic Logic Unit)、8位累加器ACC ( Accumulator)、8位寄存器B、程序状态字寄存器PSW( Program Status Word)、 8位暂存寄存器TMP1和TMP2等组成。 2.控制器 主要由程序计数器PC、指令寄存器IR、指令译码器ID、堆栈指针SP、数据指针DPTR、 时钟发生器及定时控制逻辑等组成 2.1.6输入/输出(I/0)端口结构 MCS-51单片机有4个双向并行的8位I/0口P0~P3,P0口为三态双向口,可驱 动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故 称为准双向口),其负载能力为4个TTL电路。 1.P0口的结构 2.P1口的结构 3.P2口的结构 4.P3口的结构 2.2MCS-51单片机的片外总线结构 微型计算机中的总线通常分为 (1)地址总线(AB):地址总线宽度为16位,由P0口经地址锁存器提供低8位地址 (Ao-A);P2口直接提供高8位地址(A~A5)。地址信号是由CPU发出的,故地 址总线是单方向的 (2)数据总线(DB):数据总线宽度为8位,用于传送数据和指令,由PO口提供 (3)控制总线(CB):控制总线随时掌握各种部件的状态,并根据需要向有关部件 发出命令。 2.3MCS-51单片机的存储器配置 2.3.1存储器空间分配 2.3.2片内数据存储器 2.3.3片外数据存储器 2.3.4程序存储器 2.3.1存储器空间分配 空间分配图 物理上有四个存储器空间
2.1.4 MCS-51单片机硬件结构要点 1.内部程序存储器(ROM)和内部数据存储器(RAM)容量(如表2-1所示)。 2.输入/输出(I/O)端口 3.外部程序存储器和外部数据存储器寻址空间 4.中断与堆栈 5.定时/计数器与寄存器区 6.指令系统 2.1.5 MCS-51单片机内部结构 1.运算器 运算器由8位算术逻辑运算单元ALU(Arithmetic Logic Unit)、8位累加器ACC (Accumulator)、8位寄存器B、程序状态字寄存器PSW(Program Status Word)、 8位暂存寄存器TMP1和TMP2等组成。 2.控制器 主要由程序计数器PC、指令寄存器IR、指令译码器ID、堆栈指针SP、数据指针DPTR、 时钟发生器及定时控制逻辑等组成。 2.1.6 输入/输出(I/O)端口结构 MCS-51单片机有4个双向并行的8位I/O口P0~P3,P0口为三态双向口,可驱 动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故 称为准双向口),其负载能力为4个TTL电路。 1.P0口的结构 2.P1口的结构 3.P2口的结构 4.P3口的结构 2.2 MCS-51单片机的片外总线结构 微型计算机中的总线通常分为: (1)地址总线(AB):地址总线宽度为16位,由P0口经地址锁存器提供低8位地址 (A0-A7);P2口直接提供高8位地址(A8~A15)。地址信号是由CPU发出的,故地 址总线是单方向的。 (2)数据总线(DB):数据总线宽度为8位,用于传送数据和指令,由P0口提供。 (3)控制总线(CB):控制总线随时掌握各种部件的状态,并根据需要向有关部件 发出命令。 2.3 MCS-51单片机的存储器配置 2.3.1 存储器空间分配 2.3.2 片内数据存储器 2.3.3 片外数据存储器 2.3.4 程序存储器 2.3.1 存储器空间分配 空间分配图 物理上有四个存储器空间:
(a)程序存储器[片内、片外] (b)数据存储器[片内、片外] 逻辑上有三个存储空间: (a)片内外统一的64KB程序存储地址空间 (b)256B内部数据存储器地址空间 (c)64KB外部数据存储器地址空间 使用上有五个存储器空间: ●可被直接寻址的数据地址空间 位地址空间 外部的数据地址空间 程序地址空间 ●可间接寻址的数据空间 特点:1、数据、程序存储器空间分开。 2、物理存储器有内外之分。 2.3.2片内数据存储器 片内数据存储器低128单元,00H-7FH (1)寄存器区:32个8位寄存器,00H-1FH分为4组。每组8个寄存器,分别为R0—R7,4 个组的选择由状态字中的RS1、RS0的值确定。见教材P20 (2)位地址区:20H-2FH,共16个字节单元,128个位单元。 (3)用户RAM区:3OH-7FH,通常堆栈放在此区。 2.片内数据存储器高128单元,80H-0FFH。 (1)专用(特殊功能)寄存器SFR:22个,其中21个可寻址,PC不可寻址。 A、程序计数器PC(16位):用于存放将要执行的指令地址(程序存储器地址),并 具有自动加1的功能。 B、累加器A(8位):存放运算中的操作数据及运算后的结果。 C、B寄存器(8位):用于乘除法中的第二个操作数和运算后的结果。 D、程序状态字PSW(8位):寄存着程序运行中的状态信息,各位代表的状态见教材 P20。 E、栈指针寄存器SP(8位):其值始终指向栈的顶部,PUSH时值先加1,后存数。 F、其它专用寄存器:数据指针寄存器DPTR(16位)、端口寄存器P0/P1/P2/P3(8 位)、串行数据缓冲器SBUF(8位)、定时/计数器T0/T1(16位)、控制寄存器 IP/IE/TMOD/TCON/SCON/PCON(86)
(a)程序存储器 [片内、片外] (b)数据存储器 [片内、片外] 逻辑上有三个存储空间: (a)片内外统一的64KB程序存储地址空间 (b) 256B内部数据存储器地址空间 (c) 64KB外部数据存储器地址空间 使用上有五个存储器空间: ⚫ 可被直接寻址的数据地址空间 ⚫ 位地址空间 ⚫ 外部的数据地址空间 ⚫ 程序地址空间 ⚫ 可间接寻址的数据空间 特点:1、数据、程序存储器空间分开。 2、物理存储器有内外之分。 2.3.2 片内数据存储器 • 片内数据存储器低128单元,00H—7FH。 (1)寄存器区:32个8位寄存器,00H—1FH分为4组。每组8个寄存器,分别为R0—R7,4 个组的选择由状态字中的RS1、RS0的值确定。见教材P20 (2)位地址区:20H—2FH,共16个字节单元,128个位单元。 (3)用户RAM区:30H—7FH,通常堆栈放在此区。 2. 片内数据存储器高128单元,80H—0FFH。 (1)专用(特殊功能)寄存器SFR:22个,其中21个可寻址,PC不可寻址。 A、程序计数器PC(16位):用于存放将要执行的指令地址(程序存储器地址),并 具有自动加1的功能。 B、累加器A(8位):存放运算中的操作数据及运算后的结果。 C、B寄存器(8位):用于乘除法中的第二个操作数和运算后的结果。 D、程序状态字PSW(8位):寄存着程序运行中的状态信息,各位代表的状态见教材 P20。 E、栈指针寄存器SP(8位):其值始终指向栈的顶部,PUSH时值先加1,后存数。 F、其它专用寄存器:数据指针寄存器DPTR(16位)、端口寄存器P0/P1/P2/P3(8 位)、串行数据缓冲器SBUF(8位)、定时/计数器T0/T1(16位)、控制寄存器 IP/IE/TMOD/TCON/SCON/PCON(8位)
(2)专用寄存器的字节寻址:只能使用直接寻址方式,在指令中既可以使用寄存器 符号表示,也可以使用寄存器地址表示。 3)专用寄存器的位寻址:21个SFR中的11个可以位寻址。见教材P22表2-4 2.3.2片外数据存储器 外部数据存储器又称外部RAM,当片内RAM不能满足数量上的要求时,可通过 总线端口和其他I/0口扩展外部数据RAM,其最大容量可达64K字节 在片外数据存储器中,数据区和扩展的I/0口是统一编址的,使用的指令也 完全相同,因此,用户在应用系统设计时,必须合理地进行外部RAM和I/0端口的 地址分配,并保证译码的唯一性 2.3.3程序存储器 程序存储器的包括片内和片外程序存储器两个部分。其主要用来存放编好的用 户程序和表格常数,它以16位的程序计数器PC作为地址指针,故寻址空间为64KB 805片内有4kB(0000—0FFH),其中特殊保留单元:系统复位后PC=0000 0000H-0002H 无条件转移指令 0003H-000AHNT0中断地址区 00OBH-0012H T0中断地址区 0013H-001 AH INTI中断地址区 00lBH-0022H T1中断地址区 0023H-002AH串行中断地址区 2.4CPU的时序及辅助电路 2.4.1单片机的时钟电路 2.4.2振荡周期、时钟周期、机器周期和指令周期 2.4.3MCS-51单片机指令的取指和执行时序 2.4.4单片机复位电路及复位状态 2.4.1单片机的时钟电路 单片机时钟电路通常有两种形式: 1.内部振荡方式:MS-51单片机片内有一个用于构成振荡器的高增益反相放大器, 引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。把放大器与作为反馈元件的 晶体振荡器或陶瓷谐振器连接,就构成了内部自激振荡器并产生振荡时钟脉冲(如 图1所示)。 2.外部振荡方式:外部振荡方式就是把外部已有的时钟信号引入单片机内(如图2 所示)。 2.4.2振荡周期、时钟周期、机器周期和指令周期 1.振荡周期:为单片机提供时钟信号的振荡源的周期。 2.时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 3.机器周期:通常将完成一个基本操作所需的时间称为机器周期。 4.指令周期:是指CPU执行一条指令所需要的时间。一个指令周期通常含有1~4
(2)专用寄存器的字节寻址:只能使用直接寻址方式,在指令中既可以使用寄存器 符号表示,也可以使用寄存器地址表示。 (3)专用寄存器的位寻址:21个SFR中的11个可以位寻址。见教材P22表2-4 2.3.2 片外数据存储器 外部数据存储器又称外部RAM,当片内RAM不能满足数量上的要求时,可通过 总线端口和其他I/O口扩展外部数据RAM,其最大容量可达64K字节。 在片外数据存储器中,数据区和扩展的I/O口是统一编址的,使用的指令也 完全相同,因此,用户在应用系统设计时,必须合理地进行外部RAM和I/O端口的 地址分配,并保证译码的唯一性。 2.3.3 程序存储器 程序存储器的包括片内和片外程序存储器两个部分。其主要用来存放编好的用 户程序和表格常数,它以16位的程序计数器PC作为地址指针,故寻址空间为64KB。 8051片内有4kB(0000H—0FFFH),其中特殊保留单元:系统复位后PC=0000H 0000H—0002H 无条件转移指令 0003H—000AH INT0中断地址区 000BH—0012H T0中断地址区 0013H—001AH INT1中断地址区 001BH—0022H T1中断地址区 0023H—002AH 串行中断地址区 2.4 CPU的时序及辅助电路 2.4.1 单片机的时钟电路 2.4.2 振荡周期、时钟周期、机器周期和指令周期 2.4.3 MCS-51单片机指令的取指和执行时序 2.4.4 单片机复位电路及复位状态 2.4.1 单片机的时钟电路 单片机时钟电路通常有两种形式: 1.内部振荡方式:MCS-51单片机片内有一个用于构成振荡器的高增益反相放大器, 引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。把放大器与作为反馈元件的 晶体振荡器或陶瓷谐振器连接,就构成了内部自激振荡器并产生振荡时钟脉冲(如 图1所示)。 2.外部振荡方式:外部振荡方式就是把外部已有的时钟信号引入单片机内(如图2 所示)。 2.4.2 振荡周期、时钟周期、机器周期和指令周期 1.振荡周期:为单片机提供时钟信号的振荡源的周期。 2.时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 3.机器周期:通常将完成一个基本操作所需的时间称为机器周期。 4.指令周期:是指CPU执行一条指令所需要的时间。一个指令周期通常含有1~4
个机器周期。 若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为: 振荡周期=1/12MHz=1/12us=0.0833s 时钟周期=1/6us=0.167us 机器周期=1us 指令周期=1~4us 2.4.3MCS-51单片机指令的取指和执行时序 2.4.4单片机复位电路及复位状态 1.复位电路 单片机复位电路包括片内、片外两部分。外部复位电路就是为内部复位电路提 供两个机器周期以上的高电平而设计的。MCS-51单片机通常采用上电自动复位和 按键手动复位两种方式。如图所示 2.单片机复位后的状态 单片杋运行出错或进入死循环时,可按复位键重新运行。21个特殊功能寄存器 复位后的状态为确定值,如表所示。 复位后,P0一P3口输出高电平,初值07H写入栈指针SP,清“0”其余的特殊 功能寄存器和程序计数器PC。只要 RESET保持高电平,单片机循环复位 RESET由高 变低后,单片机从0地址开始执行程序。单片机初始复位不影响内部RAM的状态, 包括工作寄存器RO一R7。 第3章MCS-51单片机指令系统 3.1MCS-51指令系统概述 3.2寻址方式 3.3分类指令 MCS-51单片机指令系统有如下特点 (1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘或相除 4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。 3.1MCS-51指令系统的概述 3.1.1指令分类 指令格式 3.1.3指令描述符号介绍 3.1.1指令分类 ·按指令功能,MS-51指令系统分为数据传递与交换、算术运算、逻辑运算、程序 转移、布尔处理操作、CPU控制等6类。 ·布尔处理操作类指令又称位操作指令
个机器周期。 若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为: 振荡周期=1/12MHz=1/12μs=0.0833μs 时钟周期=1/6μs=0.167μs 机器周期=1μs 指令周期=1~4μs 2.4.3 MCS-51单片机指令的取指和执行时序 2.4.4 单片机复位电路及复位状态 1.复位电路 单片机复位电路包括片内、片外两部分。外部复位电路就是为内部复位电路提 供两个机器周期以上的高电平而设计的。MCS-51单片机通常采用上电自动复位和 按键手动复位两种方式。如图所示。 2.单片机复位后的状态 单片机运行出错或进入死循环时,可按复位键重新运行。21个特殊功能寄存器 复位后的状态为确定值,如表所示。 复位后,P0—P3口输出高电平,初值07H写入栈指针SP,清“0”其余的特殊 功能寄存器和程序计数器PC。只要RESET保持高电平,单片机循环复位RESET由高 变低后,单片机从0地址开始执行程序。单片机初始复位不影响内部RAM的状态, 包括工作寄存器R0—R7。 第3章 MCS-51单片机指令系统 3.1 MCS-51指令系统概述 3.2 寻址方式 3.3 分类指令 MCS-51单片机指令系统有如下特点: (1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。 3.1 MCS-51指令系统的概述 3.1.1 指令分类 3.1.2 指令格式 3.1.3 指令描述符号介绍 3.1.1 指令分类 • 按指令功能,MCS-51指令系统分为数据传递与交换、算术运算、逻辑运算、程序 转移、布尔处理操作、CPU控制等6类。 • 布尔处理操作类指令又称位操作指令
3.1.2指令格式 在MCS-51指令中,一般指令主要由操作码、操作数组成 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地址。 (3)指定操作结果存放的地址。 3.1.3指令描述符号介绍 Rn一当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。 Ri一一当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1) direct-8位的内部数据存储器单元中的地址。 #data-—包含在指令中的8位常数 #data16——包含在指令中的16位常数。 adr16—16位目的地址。 addr11-11位目的地址 rel——8位带符号的偏移字节,简称偏移量。 DPTR—一数据指针,可用作16位地址寄存器 bit一一内部RAM或专用寄存器中的直接寻址位 A—一累加器。 B—一专用寄存器,用于乘法和除法指令中。 C一一进位标志或进位位,或布尔处理机中的累加器。 @—一间址寄存器或基址寄存器的前缀,如@Ri,DPTR /—一—位操作数的前缀,表示对该位操作数取反,如/bit 一一片内RAM的直接地址或寄存器。 (×)一一由×寻址的单元中的内容 箭头左边的内容被箭头右边的内容所代替。 3.2寻址方式 3.2.1立即寻址 3.2.2直接寻址 3.2.3寄存器寻址 3.2.4寄存器间接寻址 3.2.5变址寻址 3.2.6相对寻址 3.2.7位寻址 3.2.1立即寻址 指令中跟在操作码以后的第一个字节就是实际的操作数。操作数前面加有#号。 例如:MOVA,#7OH;A←#7OH Mov DPTR, #1600H DPTR+#1600H MOV3OH,#4OH;30H单元←#4OH
3.1.2 指令格式 • 在MCS-51指令中,一般指令主要由操作码、操作数组成。 • 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地址。 (3)指定操作结果存放的地址。 3.1.3 指令描述符号介绍 Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。 Ri——当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。 direct—8位的内部数据存储器单元中的地址。 #data——包含在指令中的8位常数。 #data16——包含在指令中的16位常数。 addr16——16位目的地址。 addr11——11位目的地址。 rel——8位带符号的偏移字节,简称偏移量。 DPTR——数据指针,可用作16位地址寄存器。 bit——内部RAM或专用寄存器中的直接寻址位。 A——累加器。 B——专用寄存器,用于乘法和除法指令中。 C——进位标志或进位位,或布尔处理机中的累加器。 @——间址寄存器或基址寄存器的前缀,如@Ri,@DPTR。 / ——位操作数的前缀,表示对该位操作数取反,如/bit。 ×——片内RAM的直接地址或寄存器。 (×)——由×寻址的单元中的内容。 ——箭头左边的内容被箭头右边的内容所代替。 3.2 寻址方式 3.2.1 立即寻址 3.2.2 直接寻址 3.2.3 寄存器寻址 3.2.4 寄存器间接寻址 3.2.5 变址寻址 3.2.6 相对寻址 3.2.7 位寻址 3.2.1 立即寻址 • 指令中跟在操作码以后的第一个字节就是实际的操作数。操作数前面加有#号。 例如:MOV A,#70H ;A←#70H MOV DPTR,#1600H ;DPTR←#1600H MOV 30H,#40H ;30H单元←#40H
3.2.2直接寻址 ·指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器 和内部数据RAM。 例如: Mov PSW,#2OH;PSW←#2OH,PSW为直接寻址寄存器的符号地址 MOVA,3OH;A←30H内部RAM单元中的内容,30H为直接给出的内部RAM的地 址。 ANL 70H, #48H 把RAM中70H单元内容同48H相“与”结果一〉7OH单元中 3.2.3寄存器寻址 以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及R0~R7。 例如:CLRA;A←0 INC DPTR;DPTR←DPTR+1 ADd R5, 20H R5+#20H+R5 3.2.4寄存器间接寻址 ·以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储 器空间包括内部数据RAM和外部数据RAM ·能用于寄存器间接寻址的寄存器有RO,R1,DPTR,SP。其中R0、R1必须是工作寄 存器组中的寄存器。SP仅用于堆栈操作 例如:MOV@R0,A:内部RAM(R0)←A其指令操作过程示意图如图所示。 又如:MOXA,@R1:A←外部RAM(P2R1)其指令操作过程示意图如图所示 再如:MOVX@DPTR,A;外部RAM(DPTR)←A 其指令操作过程示意图如图所示。 3.2.5变址寻址 ·变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变 址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图所示) 例如: MOVC A,@A+DPTR;A←(A+DPTR) 又如, MOVC A,@A+PC A←(A+PC) 这条指令与上条指令不同的是,基址寄存器是PC 3.2.6相对寻址 ·以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形 成新的PC值的寻址方式 相对寻址用于修改PC值,主要用于实现程序的分支转移。 例如,SJMP08H PC←PC+2+08H 指令操作示意图如图所示
3.2.2 直接寻址 • 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器 和内部数据RAM。 例如:MOV PSW,# 20H ;PSW←#20H, PSW为直接寻址寄存器的符号地址。 MOV A,30H ;A←30H内部RAM单元中的内容,30H为直接给出的内部RAM的地 址。 ANL 70H ,#48H 把RAM中70H单元内容同48H相“与”结果—〉70H单元中 3.2.3 寄存器寻址 • 以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B 、DPTR以及R0~R7 。 例如:CLR A ;A←0 INC DPTR ;DPTR←DPTR+1 ADD R5,# 20H ;R5←#20H+R5 3.2.4 寄存器间接寻址 • 以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储 器空间包括内部数据RAM和外部数据RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄 存器组中的寄存器。SP仅用于堆栈操作。 例如:MOV @R0,A ;内部RAM(R0)←A其指令操作过程示意图如图所示。 又如:MOVX A,@R1;A←外部RAM(P2R1)其指令操作过程示意图如图所示。 再如:MOVX @DPTR,A;外部RAM(DPTR)←A 其指令操作过程示意图如图 所示。 3.2.5 变址寻址 • 变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变 址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图所示)。 例如:MOVC A,@ A+DPTR;A←(A+DPTR) 又如,MOVC A,@ A+PC ;A←(A+PC) 这条指令与上条指令不同的是,基址寄存器是PC。 3.2.6 相对寻址 • 以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形 成新的PC值的寻址方式。 • 相对寻址用于修改PC值,主要用于实现程序的分支转移。 例如,SJMP 08H ;PC←PC+2+08H 指令操作示意图如图 所示
3.2.7位寻址 位寻址只能对有位地址的单元作位寻址操作 位寻址其实是一种直接寻址方式,不过其地址是位地址。 例如:SETB1OH ;将1OH位置1若22H单元中存放着数据40H,22H单元 的D位的位地址为1OH,执行上述指令后(22H)=4H 又如:MoV32H,C 32H←进位位C ORL C, 32H C←CV32H 3.3分类指令 数据传送类指令 ·3.3.2算术运算类指令 ·3.3.3逻辑运算与循环类指令 ·3.3.4程序转移类指令 ·3.3.5调用子程序及返回指令 ·3.3.6位操作指令 ·3.3.7空操作指令 3.3.1数据传送类指令 数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数 不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX MOWC、XCH、XCHD、SWAP、PUSH、POP8种。 ·源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的 操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内 数据传送途径如图所示。 1.以A为目的操作数 MOVA,Rn;A←Ran Mov A, direct A←( direct) Mov A, Ri A←(Ri) A←#data 2.以Rn为目的操作数 MOV Rn, A: RI A MOv Rn, direct n←( direct) MOv Rn, #data Rn +#data 3.以直接地址为目的操作数 MOV ORi, A (Ri) MOV ORi, direct (direct) Mov Ri, #data (Ri)←#data 4.以间接地址为目的操作数 Mov @Ri, A (Ri) A Mov @Ri, direct (Ri)+(direct)
3.2.7 位寻址 • 位寻址只能对有位地址的单元作位寻址操作。 • 位寻址其实是一种直接寻址方式,不过其地址是位地址。 例如:SETB 10H ;将10H位置1若22H单元中存放着数据40H,22H单元 的D0位的位地址为10H,执行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H←进位位C ORL C ,32H ;C←C∨32H 3.3 分类指令 • 3.3.1 数据传送类指令 • 3.3.2 算术运算类指令 • 3.3.3 逻辑运算与循环类指令 • 3.3.4 程序转移类指令 • 3.3.5 调用子程序及返回指令 • 3.3.6 位操作指令 • 3.3.7 空操作指令 3.3.1 数据传送类指令 • 数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数 不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、 MOVC、XCH、XCHD、SWAP、PUSH、POP8种。 • 源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的 操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内 数据传送途径如图所示。 1.以A为目的操作数 MOV A,Rn ;A← Rn MOV A,direct ;A←(direct) MOV A,@Ri ;A←(Ri) MOV A,#data ;A← #data 2.以Rn为目的操作数 MOV Rn,A ;Rn ← A MOV Rn,direct ;Rn ←(direct) MOV Rn,#data ;Rn ← #data 3.以直接地址为目的操作数 MOV @Ri,A ;(Ri) ← A MOV @Ri,direct ;(Ri) ←(direct) MOV @Ri,#data ;(Ri) ← #data 4.以间接地址为目的操作数 MOV @Ri,A ;(Ri) ← A MOV @Ri,direct ;(Ri) ←(direct)
MoV ORi, #data (Ri)+#data 例如:设(3OH)=6FH,R=4OH,执行MOV@Rl,30H后,30H单元中数据取出送入R1 间接寻址的4OH单元,(4OH)=6FH 5.以DPTR为目的操作数 Mov DPTR, #datal6: dPtR + #datal6 例如执行 MOV DPTR,#2000H后, DPTR)=200OH。 6.访问外部数据RAM MoVX A, ODPTR A (DPTR) MOVX DPTR, A (DPTR) A movX A, GRi: A (PeRi MoVX GRi, A (P2Ri)←A 7.读程序存储器 Movc A, @A+DPTR A +(A+DPTR) MoVC A, A+PC (A+PC) 例如已知A=30H,DPTR=3000H, 程序存储器单元(3030H)=50H,执行 MOVC A,@A+DPTR后,A=5OH 8.数据交换 字节交换 XCH A, Rn: A Rn XcH a, direct A(direct) XcH A, @Ri A(Ri) 半字节交换 XCHD A, @Ri Ao-3(Ri) SWAP A Ao-3A-7 9.堆栈操作 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据 的进栈出栈由指针$P统一管理。堆栈的操作有如下两条专用指令: PusH direct;SP←(SP+1),(SP)←( direct) poP direct;( direct)←(SP),SP←SP-1 ·PUSH是进栈(或称为压入操作)指令。指令执行过程如图所示 【例3.1】将片内RAM30H单元与40H单元中的内容互换。 方法1(直接地址传送法) mov 31H, 30H mov 30H, 40H Mov 40H, 31H SJMP S 方法2(间接地址传送法)
MOV @Ri,#data ;(Ri) ← #data 例如:设(30H)=6FH,R1=40H,执行MOV @R1,30H后,30H单元中数据取出送入R1 间接寻址的40H单元,(40H)=6FH。 5.以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR ← #data16 例如执行 MOV DPTR,#2000H 后, (DPTR)= 2000H。 6.访问外部数据RAM MOVX A,@DPTR ;A ← (DPTR) MOVX @DPTR,A ;(DPTR) ← A MOVX A,@Ri ;A ← (P2Ri) MOVX @Ri,A ;(P2Ri)← A 7.读程序存储器 MOVC A,@A+DPTR ;A ← (A+DPTR) MOVC A,@A+PC ;A ← (A+PC) 例如已知A=30H,DPTR=3000H, 程序存储器单元(3030H)=50H,执行MOVC A,@ A+DPTR后,A=50H。 8.数据交换 字节交换 XCH A,Rn ;A Rn XCH A ,direct ;A(direct) XCH A,@Ri ;A(Ri) 半字节交换 XCHD A,@Ri ;A0~3(Ri)0~3 SWAP A ;A0~3A4~7 9.堆栈操作 • 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据 的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令: PUSH direct;SP←(SP+1),(SP)←(direct) POP direct ;(direct)←(SP),SP ← SP-1 • PUSH是进栈(或称为压入操作)指令。指令执行过程如图所示。 【例3.1】 将片内RAM 30H单元与40H单元中的内容互换。 方法1(直接地址传送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H SJMP $ 方法2(间接地址传送法): MOV R0,#40H MOV R1,#30H