1、单片机原理与技术 计算机基础计算机基础1.1 计算机软件计算机软件1.2 80C51 80C51体系结构概要体系结构概要1.3 1.1 计算机基础计算机基础 1.1.1 计算机的基本结构 图图1-1 计算机的基本结构图计算机的基本结构图 1.1.2 常用的名词术语和二进编码 1位、字节、字及字长 位(bit)。“位”指一个二进制位。它是计算机中信息存储的最小单位。字节(Byte)。“字节”指相邻的8个二进制位。1024个字节构成1个千字节,用KB表示。1024KB构成1个兆字节,用MB表示。1024MB构成1个千兆字节,用GB表示。B、KB、MB、GB都是计算机存储器容量的单位。字(Word)
2、和字长。“字”是计算机内部进行数据传递处理的基本单位。通常它与计算机内部的寄存器、运算装置、总线宽度相一致。2数字编码 为便于机器识别和转换,计算机中的十进制数的每一位用二进制编码表示,这就是所谓的十进制数的二进制编码,简称二十进制编码(BCD码)。3字符编码 4汉字编码(1)外部码(2)内部码(3)交换码(4)输出码 1.1.3 指令程序和指令系统 就拿两个数相加这一最简单的运算来说,就需要以下几步(假定要运算的数已在存储器中)。第一步:把第一个数从它所在的存储单元(location)中取出来,送至运算器;第二步:把第二个数从它所在的存储单元中取出来,送至运算器;第三步:相加;第四步:把相加
3、的结果,送至存储器中指定的单元。指令通常分成操作码(opcode,即operation code)和操作数(operand)两大部分。操作码表示计算机执行什么操作;操作数是此指令要操作的对象。指令中的操作数部分常规定参加操作的数的本身或操作数所在的地址。1.1.4 初级计算机 1CPU的结构 图图1-3 微型机结构图微型机结构图 图图1-4 一个模型机的一个模型机的CPU结构结构 图图1-5 模型机的存储器结构图模型机的存储器结构图 图图1-6 存储器读操作示意图存储器读操作示意图 图图1-7 存储器写操作示意图存储器写操作示意图 1.1.5 简单程序举例 若要求机器把两个数7和10相加。在编
4、程序时首先要查一下机器的指令系统,看机器能用什么指令完成这样的操作。查到可用表1-1所示的3条指令完成两数相加的操作。名名 称称助助 记记 符符操操 作作 码码说说 明明立即数立即数取取入累加入累加器器MOV AL,n10110000 B0 n n这是一条两字节指令,把指令这是一条两字节指令,把指令第二字节的立即数第二字节的立即数n送累加送累加器器AL加立即数加立即数ADD AL,n00000100 04 n n这是一条两字节指令,累加器这是一条两字节指令,累加器AL中的内容与指令第二字中的内容与指令第二字节的立即数相加,结果在节的立即数相加,结果在AL中中停停 机机 HLT 11110100
5、 F4停止操作停止操作表表1-1完成两数相加的指令完成两数相加的指令 第一条指令1011 0000(MOV AL,n)0000 0111(n=7)第二条指令0000 0100(ADD AL,n)0000 1010(n=10)第三条指令1111 0100(HLT)总共是3条指令5个字节。图图1-8 指令的存放指令的存放 图图1-9 取第一条指令的操作示意图取第一条指令的操作示意图 图图1-10 取立即数的操作示意图取立即数的操作示意图 图图1-11 取第二条指令的操作示意图取第二条指令的操作示意图 1.1.6 寻址方式 1立即寻址(immediate addressing)上例中的操作数就包含在
6、指令中,这种规定操作数的方式,称为立即寻址。指令中的操作数称为立即数。2寄存器寻址(register addressing)若操作数在某一寄存器中,这种寻址方 式称为寄存器寻址。例如指令 MOV AL,BL 图图1-12 执行第二条指令的操作示意图执行第二条指令的操作示意图 3直接寻址(direct addressing)图图1-13 直接寻址方式示意图直接寻址方式示意图 4寄存器间接寻址(register indirect addressing)图图1-14 寄存器间接寻址方式示意图寄存器间接寻址方式示意图 图图1-15 寄存器间接寻址加法指令示意图寄存器间接寻址加法指令示意图 指令名称指令
7、名称寻寻 址址 方方 式式助助 记记 符符操操 作作 码码说说 明明取数指令取数指令立即寻址立即寻址MOV AL,n B0 n把指令第二字节的立即数送把指令第二字节的立即数送累加器(累加器(AL)中;)中;nAL立即寻址立即寻址MOV BL,nB3 n把指令第二字节的立即数送把指令第二字节的立即数送至寄存器(至寄存器(BL)中;)中;nBL表表1-2 4 种寻址方式及相应的指令种寻址方式及相应的指令 指令名称指令名称寻寻 址址 方方 式式助助 记记 符符操操 作作 码码说说 明明取数指今取数指今寄存器寻寄存器寻址址MOV AL,BL8A C3把把BL中的内容送至中的内容送至AL中;中;BLAL
8、MOV BL,AL8A D8把把AL中的内容送至中的内容送至BL中,中,ALBL寄存器间寄存器间接寻址接寻址MOV AL,BL8A 07以以BL中的内容为操作数的地中的内容为操作数的地址,操作数送至址,操作数送至AL中;中;BLAL直接寻址直接寻址MOV AL,nA0 n指令中的第二字节为操作数指令中的第二字节为操作数的地址,操作数送至的地址,操作数送至AL中;中;nAL续表续表 指令名称指令名称寻寻 址址 方方 式式助助 记记 符符操操 作作 码码说说 明明存数指令存数指令直接寻址直接寻址MOV n,ALA2 n指令中的第二字指令中的第二字节为地址,把节为地址,把AL中的内容中的内容存入此地
9、址单存入此地址单元;元;ALn寄存器间接寄存器间接寻址寻址MOV BL,AL88 07以以BL中的内容作中的内容作为地址,把为地址,把AL中的内容中的内容存入此地址单存入此地址单元;元;ALBL续表续表 指令名称指令名称寻寻 址址 方方 式式助助 记记 符符操操 作作 码码说说 明明加法指令加法指令立即寻址立即寻址ADD AL,n 04 nn为立即数;为立即数;AL+nAL寄存器寻址寄存器寻址ADD AL,BL02 C3BL中的内容为操作数;中的内容为操作数;AL+BLAL寄存器间接寄存器间接寻址寻址ADD AL,BL02 07以以BL中的内容为中的内容为操作数的地址;操作数的地址;AL+BL
10、AL续表续表 图图1-16 程序在存储器中存放示意图程序在存储器中存放示意图 图图1-17 取出第一条指令后取出第一条指令后CPU的状态图的状态图 图图1-18 直接寻址方式操作示意图直接寻址方式操作示意图 图图1-19 取操作数过程示意图取操作数过程示意图 图图1-20 计算机的基本硬件结构计算机的基本硬件结构 图图1-21 三总线的微型机结构三总线的微型机结构 图图1-22 典型的三总线结构典型的三总线结构1.2 计算机软件计算机软件 1.2.1 系统软件 以上这些都是由机器的设计者提供的,为了使用和管理计算机的软件,统称为系统软件。系统软件包括:各种语言和它们的汇编或解释、编译程序;机器
11、的监控管理程序(moniter)、调试程序(debug)、故障检查和诊断程序;程序库(为了扩大计算机的功能,便于用户使用,机器中设置了各种标准子程序,这些子程序的总和就形成了程序库);操作系统。1.2.2 应用软件 用户利用计算机和它所提供的各种系统软件,来编制解决用户各种实际问题的程序,称之为应用软件。应用软件也可以逐步标准化、模块化,逐步形成解决各种典型问题的应用程序的组合,将其称为软件包(package)。1.2.3 支撑(或称为支持)软件1.3 80C51体系结构概要体系结构概要 1.3.1 80C51简介 表表1-3 不同不同ROM的的80C51系列编号系列编号 图图1-23 805
12、1核的方框图核的方框图 图图1-24 8051的体系结构图的体系结构图 1.3.2 80C51单片机的CPU结构 图图1-25 80C51单片机功能方框图单片机功能方框图 图图1-26 80C51的的CPU (1)运算电路(2)控制电路(3)CPU的通用寄存器(4)CPU的系统寄存器 图图1-27 CPU的通用寄存器体的通用寄存器体 位名位名分类分类位位7位位6位位5位位4位位3位位2位位1位位0状态位状态位CYACOVP控制位控制位RS1RS0保留位保留位F0-表表1-4PSW的位分配的位分配第第2章章 存储器存储器 存储器存储器2.180C5180C51中的存储器组织的特点中的存储器组织的
13、特点2.2 程序存储器程序存储器2.3 数据存储器数据存储器2.42.1 存存 储储 器器 2.1.1 读写存储器(RAM)1SRAM基本存储电路 图图2-1 SRAM基本存储电路基本存储电路 2DRAM基本存储电路 图图2-2 DRAM的单管存储电路的单管存储电路 2.1.2 只读存储器(ROM)1掩膜只读存储器 图图2-3 掩膜掩膜ROM举例举例 位位 字字位位1位位2位位3位位4字字10(1)1(0)1(0)0(1)字字20(1)1(0)0(1)1(0)字字31(0)0(1)1(0)0(1)字字40(1)0(1)0(1)0(1)表表2-1ROM的内容的内容 2可擦除的可编程序的只读存储器
14、(EPROM)图图2-4 EPROM的基本存储电路的基本存储电路 3新一代电可擦除的可编程的只读存储器FLASH存储器 图图2-5 闪存的典型结构闪存的典型结构 图图2-6 FLASH 擦除与编程说明示意图擦除与编程说明示意图2.2 80C51中的存储器组织的特点中的存储器组织的特点 8051系列存储器组织的特点是程序存储器与数据存储器在逻辑上分离。程序存储器与数据存储器截然分开,分为两个不同的地址空间,并且配备各自独立的寻址机构、寻址方式与操作指令。这种体系结构是由Harward Aiken于1944年提出的,称为“Harward(哈佛)体系结构”。8051系列采用的就是这种哈佛体系结构。图
15、图2-7 80C51存储器结构存储器结构 设设 备备ROM/EPROM(字节)(字节)寄存器寄存器RAM(字节)(字节)80C51FA无无ROM25683C51FA8K25687C51FA8K EPROM25683C51FB16K ROM25687C51FB16K EPROM25683C51FC32K ROM25687C51FC32K EPROM256表表2-2 8051系列的片内系列的片内ROM及寄存器及寄存器2.3 程序存储器 图图2-8 8051系列的程序存储器系列的程序存储器 图图2-9 从外部程序存储器执行从外部程序存储器执行2.4 数据存储器 2.4.1 外部数据存储器空间 图图2
16、-10 访问外部数据存储器访问外部数据存储器 2.4.2 内部数据存储器 图图2-11 内部数据存储器内部数据存储器 图图2-12 内部内部RAM的低的低128B 1寄存器体区域 2可位寻址区域 3普通RAM区 图图2-13 寄存器体寄存器体 图图2-14 可位寻址区域的位地址可位寻址区域的位地址 图图2-15 内部内部RAM的复合功能的复合功能 图图2-16 内部内部RAM的高的高128B 2.4.3 堆栈 1什么是堆栈 堆栈是在片内RAM中开辟的一块具有特殊用途的读写存储器区域。2为什么要用堆栈 图图2-17 调用子程序示意图调用子程序示意图 3堆栈的操作 硬件自动操作。用户用堆栈操作指令
17、,即用入栈指令PUSH把数据推入堆栈和用出栈指令POP从堆栈弹出数据。图图2-18 用堆栈保护与恢复断点用堆栈保护与恢复断点 4注意事项 2.4.4 特殊功能寄存器空间 图图2-19 SFR空间空间 表表2-3 SFR的符号、名称和地址的符号、名称和地址符符 号号名名 称称地地 址址 *ACC累加器累加器 0E0H *BB寄存器寄存器 0F0H *PSW程序状态字程序状态字 0D0H SP堆栈指针堆栈指针 81H续表续表符符 号号名名 称称地地 址址 DPTR DPL DPH数据指针寄存器数据指针寄存器 2B低字节低字节高字节高字节 82H 83H *P0端口端口0 80H *P1端口端口1
18、90H *P2端口端口2 0A0H *P3端口端口3 0B0H续表续表符符 号号名名 称称地地 址址 *IP中断优先权控制中断优先权控制 0B8H *IE中断启用控制中断启用控制 0A8H TMOD定时器定时器/计数器方式控制计数器方式控制 89H *TCON定时器定时器/计数器控制计数器控制 88H *+T2CON定时器定时器/计数器计数器2控制控制 0C8H TH0定时器定时器/计数器计数器0高字节高字节 8CH TL0定时器定时器/计数器计数器0低字节低字节 8AH续表续表符符 号号名名 称称地地 址址 TH1定时器定时器/计数器计数器1高字节高字节 8DH TL1定时器定时器/计数器计
19、数器1低字节低字节 8BH +TH2定时器定时器/计数器计数器2高字节高字节 0CDH +TL2定时器定时器/计数器计数器2低字节低字节 0CCH +RCAP2H定时器定时器/计数器计数器2捕获寄存器高字节捕获寄存器高字节 0CBH *SCON串行控制串行控制 98H SBUF串行数据缓冲器串行数据缓冲器 99H PCON电源控制电源控制 87H 表表2-4复位后复位后SFR的内容的内容寄寄 存存 器器以二进制表示的值以二进制表示的值 *ACC 00000000 *B 00000000 *PSW 00000000续表续表寄寄 存存 器器以二进制表示的值以二进制表示的值 SP 00000111
20、DPTR DPL DPH 00000000 00000000 *P0 11111111 *P1 11111111 *P2 11111111 *P3 11111111 寄寄 存存 器器以二进制表示的值以二进制表示的值 *IP 8051xxx00000 8052xx000000 *IE 80510 xx00000 80520 x000000 TMOD 00000000 *TCON 00000000 *+T2CON 00000000 TH0 00000000 TL0 00000000续表续表 续表续表寄寄 存存 器器以二进制表示的值以二进制表示的值 TH1 00000000 TL1 00000000
21、 +TH2 00000000 +TL2 00000000 +RCAP2H 00000000 *SCON 00000000 SBUF 不确定不确定 PCON HMOS0 xxxxxxx CHMOS0 xxx0000 分分 类类用用 途途寄存器符号寄存器符号寄存器地址寄存器地址复复 位位 值值与与CPU内核内核相关相关CPU内核内核ACCE0H00HBF0H00HDPH83H00HDPL82H00HSP81H07H与功能部件与功能部件或外围模或外围模块相关块相关中断系统中断系统IEA8H0 000000BIPB8H000000B并行端口并行端口P080HFFHP190HFFHP2A0HFFHP3B
22、0HFFH表表2-6SFR的功能分类的功能分类 分分 类类用用 途途寄存器符号寄存器符号 寄存器地址寄存器地址复复 位位 值值与功能部与功能部件或外件或外围模块围模块相关相关串口串口PCON87H00000BSBUF99HHSCON98H00H定时器定时器0和和1TCON88H00HTH08CH00HTL08AH00HTH18DH00HTL18BH00HTMOD89H00H续表续表第3章MCS-51指令系统 数据传送数据传送3.3 寻址方式寻址方式3.2 程序状态字程序状态字3.1 算术指令算术指令3.4 跳转指令跳转指令3.7 MCS-51 MCS-51指令集小结指令集小结 3.8 布尔指令
23、布尔指令3.6 逻辑指令逻辑指令3.53.1 程序状态字程序状态字 程序状态字(program status word,PSW)包含反映当前CPU状态的若干状态位。图图3-1 在在MCS-51设备中的设备中的PSW(程序状态字)(程序状态字)3.2 寻寻 址址 方方 式式 3.2.1 立即寻址 某些指令用包含在指令中的数据作为源操作数,这些操作数称为立即操作数(简称立即数)。常数的值能跟在程序存储器的操作码后,例如:MOVA,#100 指令:MOVDPTR,#DATA16 3.2.2 寄存器寻址 指令:MOVA,Rn 图图3-2 立即寻址示意图立即寻址示意图 图图3-3 寄存器寻址示意图寄存器
24、寻址示意图 3.2.3 直接寻址 图图3-4 直接寻址示意图直接寻址示意图 3.2.4 隐含寻址 3.2.5 间接寻址 在间接寻址中,指令规定包含操作数地址的寄存器。内部RAM与外部RAM都能间接寻址。对于8位地址,地址寄存器可以是所选择的寄存器体的R0或R1或堆栈指针。对于16位地址,其地址寄存器只能是“数据指针”寄存器DPTR。例如指令:MOVA,Ri 图图3-5 间接寻址示意图间接寻址示意图 3.2.6 变址寻址 只有程序存储器能用变址寻址方式访问且只能用于读。此寻址方式用于在程序存储器中查找表项。一16位基寄存器(DPTR或程序计数器PC)指向表的基地址,而累加器作为表的入口偏移。在程
25、序存储器中的表项的地址由累加器数据加至基指针形成。这种寻址方式的指令只有两条:MOVC A,A+PC MOVC A,A+DPTR 变址寻址示意图如图3-6所示。图图3-6 变址寻址示意图变址寻址示意图表表3-1 寻址方式小结寻址方式小结分分 类类寻寻 址址 方方 式式采用的寄存采用的寄存器变量器变量寻寻 址址 空空 间间与与字字节节数数据据有有关关立即寻址立即寻址 程序存储器(程序存储器(ROM)的全部空间)的全部空间(最大(最大64KB)直接寻址直接寻址 片内片内128 RAM空间和空间和SFR空间空间隐含寻址隐含寻址A、AB、DPTR4个个SFR的字节地址:的字节地址:80H、F0H、82
26、H、83H 分分 类类寻寻 址址 方方 式式采用的寄存器采用的寄存器变量变量寻寻 址址 空空 间间与与字字节节数数据据有有关关寄存器寻寄存器寻址址R7R0片内片内RAM低低32B空间(空间(00H31H)间接寻址间接寻址R1、R0片内片内RAM的的128B空间(空间(8052系列可为系列可为256B)R1、R0限于片外限于片外RAM的任何一项(的任何一项(256B)空间)空间DPTR片外片外RAM的全部空间(最大的全部空间(最大64KB)变址寻址变址寻址A+DPTR、A+PC程序存储器(程序存储器(ROM)的全部空间(最大)的全部空间(最大84KB)续表续表分分 类类寻寻 址址 方方 式式采用
27、的寄存器变量采用的寄存器变量寻寻 址址 空空 间间与跳与跳转地转地址有址有关关相对跳转寻址相对跳转寻址PC+rel限于程序存储器(限于程序存储器(ROM)的的256B范围范围绝对跳转寻址绝对跳转寻址程序存储器(程序存储器(ROM)的全)的全部空间(最大部空间(最大64KB)变址跳转寻址变址跳转寻址A+DPTR程序存储器(程序存储器(ROM)的全)的全部空间(最大部空间(最大64KB)与位与位数据数据有关有关隐含位寻址隐含位寻址CCY(位地址:(位地址:D7H)直接位寻址直接位寻址片内片内RAM区内的区内的20H2FH字节和字节和SFR区内的区内的实有的实有的83个可寻址位个可寻址位3.3 数数
28、 据据 传传 送送 3.3.1 指令中的常用符号 Rn-当前选择的寄存器体的寄存器R7R0。Direct-8位内部的数器单元的地址。只能是一内部RAM的数据单元(0127)或一SFR(即I/O端口、控制寄存器、状态寄存器等(128255)。Ri -通过寄存器R1或R0间接寻址的8位内部RAM单元(0255)。#data-包含在指令中的8位常数。#data16-包含在指令中的16位常数。addr16-16位目的地址。由LCALL与LJMP使用。能分支至64KB程序存储器地址空间内的任一处。addr11-11位目的地址。由LCALL与LJMP使用。分支在程序存储器的同一2KB页内作为下一条指令的第
29、一字节。rel -带符号的8位偏移字节。由SJMP与所有条件跳转指令使用。范围是相对于下一条指令的第一个字节的128+127。bit-在内部RAM或特殊功能寄存器中的直接地址位。-表示数据传送方向。-代表算术“加法”运算符。-代表算术“减法”运算符。-代表算术“乘法”运算符。-代表算术“除法”运算符。-代表逻辑“与”运算符。-代表逻辑“或”运算符。-代表逻辑“异或”运算符。-出现在位地址前面时,表示将对应位操作数取反。-出现在特定寄存器前面时,表示被用作间接寻址寄存器。#-用在指令中的操作数前面时,表示该操作数为一个立即数,即常数。3.3.2 内部RAM表表3-2 访问内部访问内部RAM的的M
30、CS-51数据传送指令清单数据传送指令清单助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即MOV A,A=1MOV,A=A1MOV,=2续表续表助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即MOV DPTR,#data16DPTR=16位立位立即常数即常数2PUSH INC SP:MOV“esp”,2续表续表助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即POP MOV ,“esp”:DEC SP2 助助 记记 符符操操
31、 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即XCH A,累加器与累加器与交换数据交换数据1XCHD A,Ri累加器与累加器与Ri交交换低半字节换低半字节1续表续表 图图3-7 把把BCD数向右移两个数字数向右移两个数字 图图3-8 向右移向右移BCD数一个数字数一个数字 3.3.3 外部RAM 地地 址址 宽宽 度度助助 记记 符符操操 作作执行时间执行时间(s)8位位MOVX A,Ri读外部读外部RAMRi28位位MOVX Ri,A写外部写外部RAMRi216位位MOVX A,DPTR读外部读外部RAMDPTR216位位MOVX DPTR,A写外部写
32、外部RAMDPTR2表表3-3 访问外部访问外部RAM空间的空间的MCS-51数据传送指令清单数据传送指令清单 3.3.4 查找表 助助 记记 符符操操 作作执行时间执行时间(s)MOVC A,A+DPTR在(在(A+DPTR)读程序存储器)读程序存储器2MOVC A,A+PC在(在(A+PC)读程序存储器)读程序存储器2表表3-4 MCS-51读查找表指令读查找表指令3.4 3.4 算算 术术 指指 令令 表表3-5 元元MCS-51算术指今清单算术指今清单 助助 记记 符符操操 作作寻址方式寻址方式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即数立即数ADD A,字节字节A=A+字
33、字节节1ADDC A,A=A+C1续表续表助助 记记 符符操操 作作寻址方式寻址方式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即数立即数SUBB A,A=A C1INC AA=A+1只适用于累加器只适用于累加器1INC=+11续表续表助助 记记 符符操操 作作寻址方式寻址方式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即数立即数INC DPTRDPTR=DPTR+1只适用于只适用于DPTR2DEC AA=A 1只适用于累加器只适用于累加器1DEC 11续表续表助助 记记 符符操操 作作寻址方式寻址方式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即数立即数MUL ABB
34、:A=BA只适用于累加器与只适用于累加器与B4DIV ABA=IntA/BB=ModA/B只适用于累加器与只适用于累加器与B4DA A十进制调整十进制调整只适用于累加器只适用于累加器1 若在50H、51H与60H、61H存放着两个16位数(地址高的为高字节),求它们的和放至在自70H单元开始的存储单元中。MOVA,50H;取第一个数的低字节至累加器AADDA,60H;与第二个数的低字节相加,若有进位保留在标志C中MOV70H,A;把相加的和送至RAMMOVA,51H;取第一个数的第二个字节ADDC A,61H;与第二个数的第二个字节以及进位位一起相加MOV71H,A;和写至RAMMOVA,#0
35、0H;清零累加器AADDC A,#00H;两位16位数相加,可能产生进位,与进位位相加MOV72H,A;存进位位3.5 3.5 逻逻 辑辑 指指 令令 表表3-6 MCS-51逻辑指令清单逻辑指令清单助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存寄存器器立即立即ANL A,A=A“与与”1ANL ,A=“与与”A1ANL ,#DATA=“与与”#DATA2 续表续表助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即ORL A,A=A“或或”1ORL ,A=“或或”A1ORL ,#DATA=“或或
36、”#DATA2XRL A,A=A“异或异或”1续表续表助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即XRL ,A=“异或异或”A1XRL ,#DATA=“异或异或”#DATA2续表续表助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即CRL AA=0只用于累加器只用于累加器1CPL AA=“非非”A只用于累加器只用于累加器1RL A累加器左旋转累加器左旋转1位位只用于累加器只用于累加器1RLC A带进位位左旋转带进位位左旋转只用于累加器只用于累加器1RR A累加器右旋转累加器右旋
37、转1位位只用于累加器只用于累加器1RRC A带进位位右旋转带进位位右旋转只用于累加器只用于累加器1SWAP A在在A中半字节交换中半字节交换只用于累加器只用于累加器1 ANL A,指令能取以下形式的任一种:ANL A,7FH(直接寻址)ANL A,R1(间接寻址)ANL A,R6(寄存器寻址)ANL A,#53H(立即常数)1逻辑“与”指令 2逻辑“或”指令 MOV A,51H;把第二个单元的00000111取入累加器ASWAP A;使A中的高4位与低4位交换,变为01110000ORL A,50H;与50H单元的00000100相“或”,变为01110100MOV 60H,A;结果存至60H
38、单元 3逻辑“异或”指令 4旋转指令(RL A、RLC A等)图图3-9 旋转指令旋转指令 5SWAP A指令 MOV B,#10 DIV AB SWAP A ADD A,B3.6 布布 尔尔 指指 令令 助助 记记 符符操操 作作执行时间执行时间(s)ANL C,bitC=C“与与”bit2ANL C,/bitC=C“与与”“”“非非”bit2OR C,bitC=C“或或”bit2OR C,/bitC=C“或或”“”“非非”bit2MOV C,bit C=bit1MOV bit,C Bit=C1CLR CC=01CLR bitBit=01表表3-7MCS-51布尔指令清单布尔指令清单续表续表
39、助助 记记 符符操操 作作执行时间执行时间(s)SETB CC=11SETB bitBit=11CPL CC=“非非”C1CPL bitBit=“非非”bit1JC rel若若C=1跳转跳转2JNC rel若若C=0跳转跳转2JB bit,rel若若bit=1跳转跳转2JNB bit,rel若若bit=0跳转跳转2JBC bit,rel若若bit=1跳转,清除跳转,清除bit2 隐含寻址方式直接寻址方式 CLRC CLR CY SETB C SETB CY CPLC CPL CY JC rel JB CY,rel JNCrel JNB CY,rel3.7 跳跳 转转 指指 令令 助助 记记 符
40、符操操 作作执行时间执行时间(s)JMP addr跳转至跳转至addr2JMP A+DPTR跳转至跳转至A+DPTR2CALL addr在在addr调用子例程调用子例程2RET从子例程返回从子例程返回2RETI从中断返回从中断返回2NOP无操作无操作1表表3-8 MCS-51设备中的无条件跳转指令设备中的无条件跳转指令 1相对短跳转SJMP SJMP是一相对跳转指令,指令为2字节,指令第二字节是一8位符号数的相对于指令指针的偏移量。2绝对近跳转AJMP AJMP指令是2字节长,由操作码,在它的高3位中包全地址的高3位,a10a8和指令码中的另一地址字节a7a0形成了11位目标地址。当指令执行时
41、,这11位简单地替换在PC中的低11位,高5位保持。因此,目的地址在AJMP指令的下一条指令的相同的2KB块内。此指令既继承了SJMP指令编码短的优点,又扩展了跳转的范围。3绝对远跳转LJMP LJMP指令是一条3字节指令,指令的第2、第3字节形成了16位目的地址。把这16位地址送至PC,程序能跳转至64KB程序存储器空间的任一处。4绝对变址跳转 JMP A+DPTR指令,采用变址寻址方式,支持情况(case)跳转,目的地址在执行时计算,用DPTR 16位寄存器与累加器之和作为目的地址。3.7.2 子程序调用与返回指令 1近调用ACALL PC PC+2,SP SP+1,(SP)PCL,SP
42、SP+1,(SP)PCH,PC10 0 addr11 2远调用LCALL PC PC+3,SP SP+1,(SP)PCL,SP SP+1,(SP)PCH,PC addr16 3返回指令 PCH (SP),SP SP-1,PCL (SP),SP SP-1 3.7.3 条件跳转指令 助助 记记 符符操操 作作寻寻 址址 方方 式式执行执行时间时间(s)直接直接间接间接寄存器寄存器立即立即JZ rel若若A=0跳转跳转只适用于累加器只适用于累加器2JNZ rel若若A 0跳转跳转只适用于累加器只适用于累加器2表表3-9 在在MCS-51设备中的条件跳转指令设备中的条件跳转指令续表续表助助 记记 符符
43、操操 作作寻寻 址址 方方 式式执行时执行时间间(s)直接直接间接间接寄存器寄存器立即立即DJNE ,rel减量,若减量,若不为不为0跳转跳转2CJNE A,rel若若A 跳跳转转2CJNE ,#data,rel若若#data跳转跳转2 1判0跳转 指令JZ rel,判断累加器A,若其内容为0,则跳转。指令JNZ rel,也判断累加器A,若其内容不为0,则跳转。2减1不为0跳转 DJNZ指令有两种,一种为:DJNZ Rn,rel Rn Rn 1,若Rn 0,则PC PC+2+rel 这是寄存器寻址方式,先使寄存器减1,若其不等于0,则满足条件,跳转。另一种指令为:DJNZ direct,rel
44、 direct (direct)1,若(direct)0,则PC PC+2+rel MOV COUNTER,#10 LOOP:(开始循环)(终止循环)DJNZCOUNTER,LOOP(继续)3.8 MCS-51指令集小结指令集小结 3.8.1 指令对标志位的影响 指指 令令标标 志志COVACADDADDCSUBBMUL0DIV0DA表表3-10影响标志设置的指令影响标志设置的指令 续表续表指指 令令标标 志志COVACRRCRLCSETB1CLR C0CPL CANL C,bit续表续表指指 令令标标 志志COVACANL C,/bitORL C,bitORL C,/bitMOV C,bit
45、CJNE 助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)算术运算算术运算ADD A,Rn加寄存器至累加器加寄存器至累加器112ADD A,direct加直接地址字节单元内容至累加器加直接地址字节单元内容至累加器212ADD A,Ri加间接寻址的加间接寻址的RAM内容至累加器内容至累加器112ADD A,#data加立即数至累加器加立即数至累加器212表表3-11MCS-51指令集指令集续表续表 助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)ADDC A,Rn加寄存器至累加器,带进位位加寄存器至累加器,带进位位112ADDC A,direct加直接地址字节
46、单元内容至累加器,加直接地址字节单元内容至累加器,带进位带进位212ADDC A,Ri加间接寻址的加间接寻址的RAM内容至累加器,带内容至累加器,带进位进位112ADDC A,#data加立即数至累加器,带进位加立即数至累加器,带进位212SEBB A,Rn从累加器减寄存器,带借位从累加器减寄存器,带借位112SUBB A,direct从累加器减直接寻址字节单元内容,从累加器减直接寻址字节单元内容,带借位带借位212 助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)SUBB A,Ri从累加器减间接寻址字节单元内容,从累加器减间接寻址字节单元内容,带借位带借位112SUBB A
47、,#data从累加器减立即数,带借位从累加器减立即数,带借位212INC A增量累加器内容增量累加器内容112INC Rn增量寄存器中的内容增量寄存器中的内容112INC direct增量直接寻址的内存单元内容增量直接寻址的内存单元内容212INC Ri增量间接寻址的内存单元内容增量间接寻址的内存单元内容112DEC A减量累加器内容减量累加器内容112DEC Rn减量寄存器中的内容减量寄存器中的内容112DEC direct减量直接寻址的内存单元内容减量直接寻址的内存单元内容212续表续表续表续表助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)DEC Ri减量间接寻址的内存
48、单元内容减量间接寻址的内存单元内容112INC DPTR增量数据指针寻址的内存单元内容增量数据指针寻址的内存单元内容124MUL AB乘乘A与与B148DIV ABA被被B除除148DA A对累加器进行十进制调整对累加器进行十进制调整112续表助助 记记 符符描描 述述字字 节节振荡振荡器器频率频率(MHz)逻辑运算逻辑运算ANL A,Rn累加器与寄存器做逻辑累加器与寄存器做逻辑“与与”运运算算112ANL A,direct累加器与直接寻址内存单元内容累加器与直接寻址内存单元内容做逻辑做逻辑“与与”运算运算212ANL A,Ri累加器与间接寻址内存单元内容累加器与间接寻址内存单元内容做逻辑做逻
49、辑“与与”运算运算112ANL A,#data累加器与立即数做逻辑累加器与立即数做逻辑“与与”运运算算212ANL direct,A直接寻址内存单元的内容与累加直接寻址内存单元的内容与累加器做逻辑器做逻辑“与与”运算运算212续表续表助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)ANL direct,#data直接寻址内存单元的内容与立直接寻址内存单元的内容与立即数做逻辑即数做逻辑“与与”运算运算324ORL A,Rn累加器与寄存器做逻辑累加器与寄存器做逻辑“或或”运算运算112ORL A,direct累加器与直接寻址内存单元的累加器与直接寻址内存单元的内容做逻辑内容做逻辑
50、“或或”运算运算212ORL A,Ri累加器与间接寻址内存单元的累加器与间接寻址内存单元的内容做逻辑内容做逻辑“或或”运算运算112ORL A,#data累加器与立即数做逻辑累加器与立即数做逻辑“或或”运算运算212ORL direct,A直接寻址内存单元的内容与累直接寻址内存单元的内容与累加器做逻辑加器做逻辑“或或”运算运算212续表续表助助 记记 符符描描 述述字字 节节振荡器振荡器频率频率(MHz)ORL direct,#data直接寻址内存单元的内容与立直接寻址内存单元的内容与立即数做逻辑即数做逻辑“或或”运算运算324XRL A,Rn累加器与寄存器做累加器与寄存器做“异或异或”运运算