1、单片机原理及应用全册配套单片机原理及应用全册配套 最完整精品课件最完整精品课件2 第第0章:概述章:概述 单片机原理及其接口技术单片机原理及其接口技术 本书分为三个单元本书分为三个单元 第一单元:基础知识第一单元:基础知识 第二单元:第二单元:5151单片机系统单片机系统 第三单元:单片机应用系统第三单元:单片机应用系统 第第0章:概述章:概述 第一单元:第一单元: 第第0 0、1 1章章 第二单元:第二单元: 第第2 2、3 3、4 4章章 第三单元:第三单元: 第第5 5、6 6、7 7、8 8、9 9、1010章章 实验课:实验课: 重点是第二、第三单元。重点是第二、第三单元。 第第0章
2、:概述章:概述 课程目的:课程目的: 通过本课程的学习,掌握单片微型计算机的通过本课程的学习,掌握单片微型计算机的 原理结构、工作原理、指令系统、汇编语言编原理结构、工作原理、指令系统、汇编语言编 程方法、接口技术和实际应用。为应用单片机程方法、接口技术和实际应用。为应用单片机 技术解决实际问题打下基础。通过本课程学习,技术解决实际问题打下基础。通过本课程学习, 能够独立设计常用的单片机应用系统,能够编能够独立设计常用的单片机应用系统,能够编 写多种功能的汇编应用程序。通过该课程学习,写多种功能的汇编应用程序。通过该课程学习, 培养工程观念和规范意识,建立起完整的单片培养工程观念和规范意识,建
3、立起完整的单片 机应用系统的概念。机应用系统的概念。 第第0章:概述章:概述 课程的基本要求课程的基本要求 1 1要求以要求以MCS-51MCS-51系列单片机为基础掌握他们的结系列单片机为基础掌握他们的结 构、引脚、存储器配置,理解构、引脚、存储器配置,理解CPUCPU的时序、复的时序、复 位电路、输入位电路、输入/ /输出端口结构和工作原理。输出端口结构和工作原理。 2 2要求掌握要求掌握MCS-51MCS-51单片机寻址方式、指令系统,单片机寻址方式、指令系统, 理解汇编语言源程序基本知识,学会编写汇编理解汇编语言源程序基本知识,学会编写汇编 语言源程序的基本方法,能够编写简单汇编应语言
4、源程序的基本方法,能够编写简单汇编应 用程序。用程序。 3 3要求理解要求理解MCS-51MCS-51单片机中断系统的结构和工作单片机中断系统的结构和工作 原理,掌握单片机中断系统的应用,掌握中断原理,掌握单片机中断系统的应用,掌握中断 服务编程的编写。服务编程的编写。 第第0章:概述章:概述 4 4要求理解要求理解MCS-51MCS-51单片机定时器的结构和工作原单片机定时器的结构和工作原 理,掌握单片机定时器的应用及应用程序的编理,掌握单片机定时器的应用及应用程序的编 写。写。 5 5要求理解单片机程序存储器、数据存储器的扩要求理解单片机程序存储器、数据存储器的扩 展方法,了解有关的接口芯
5、片。展方法,了解有关的接口芯片。 6 6要求掌握单片机与键盘、显示器的接口技术,要求掌握单片机与键盘、显示器的接口技术, 理解单片机与理解单片机与A/DA/D、D/AD/A的接口技术。的接口技术。 7 7了解串行通信的基本概念,理解了解串行通信的基本概念,理解MCS-51MCS-51串行口串行口 的工作原理,理解单片机串行通信的程序,了的工作原理,理解单片机串行通信的程序,了 解串行通信的编程方法。解串行通信的编程方法。 第第0章:概述章:概述 19461946年由美国宾夕法尼亚大学研制年由美国宾夕法尼亚大学研制 ENIACENIAC(Electronic Numerical Electron
6、ic Numerical Integrator And calculatorIntegrator And calculator),运算速度),运算速度 50005000次次/ /秒,功耗秒,功耗150kw/h150kw/h, 占地占地170m2 170m2 ,造价,造价100100万美元。万美元。 1946-19581946-1958 第一代电子管计算机第一代电子管计算机。磁鼓存储器,机器语。磁鼓存储器,机器语 言、汇编语言编程。世界上第一台数字计算机言、汇编语言编程。世界上第一台数字计算机ENIAC。 1958-19641958-1964 第二代晶体管计算机第二代晶体管计算机。磁芯作主存储器
7、磁芯作主存储器, , 磁磁 盘作外存储器,开始使用高级语言编程。盘作外存储器,开始使用高级语言编程。 1964-19711964-1971 第三代集成电路计算机第三代集成电路计算机。使用。使用半导体存储器,半导体存储器, 出现多终端计算机和计算机网络。出现多终端计算机和计算机网络。 1971-1971- 第四代大规模集成电路计算机第四代大规模集成电路计算机。出现微型计算出现微型计算 机、单片微型计算机,外部设备多样化。机、单片微型计算机,外部设备多样化。 1981-1981- 第五代人工智能计算机第五代人工智能计算机。模拟人的智能和交流模拟人的智能和交流 方式。方式。 计算机发展趋势计算机发展
8、趋势 微型化微型化 便携式、低功耗便携式、低功耗; 巨型化巨型化 尖端科技领域的信息处理,需要超大容量、尖端科技领域的信息处理,需要超大容量、 高速度高速度; 智能化智能化 模拟人类大脑思维和交流方式,多种处理能模拟人类大脑思维和交流方式,多种处理能 力力; 系列化、标准化系列化、标准化 便于各种计算机硬、软件兼容和升便于各种计算机硬、软件兼容和升 级级; 网络化网络化 网络计算机和信息高速公路网络计算机和信息高速公路; 多机系统多机系统 大型设备、生产流水线集中管理大型设备、生产流水线集中管理(独立控独立控 制、故障分散、资源共享制、故障分散、资源共享) 微型计算机组成结构微型计算机组成结构
9、 微型计算机系统 硬件 微型计算机 (主机) 微处理器微处理器 (CPU) 软件 外围设备 运算器 控制器 存储器存储器 (内存) RAM ROM 外部设备 辅助设备 输入设备(键盘、扫描仪、语音识别仪) 输出设备(显示器、打印机、绘图仪、) 辅助存储器(磁带、磁盘、光盘) 输入输入/ /输出接口输出接口(PIO、SIO、CTC、ADC、DAC) (I/O接口接口) 总线 (AB、DB、CB) 系统软件(操作系统,编辑、编译程序,故障诊断,监控程序) 应用软件(科学计算,工业控制,数据处理) 程序设计语言(机器语言、汇编语言、高级语言) 电源电路 时钟电路 单片机简介单片机简介 单片机单片机即
10、单片机微型计算机,即单片机微型计算机,是将计算机主机是将计算机主机( (CPUCPU、 内存内存和和I/I/O接口接口) )集成在一小块硅片上的微型机。集成在一小块硅片上的微型机。 单片机开发系统有单片单板机和仿真器。实现单片机 应用系统的硬、软件开发。 单片机为工业测控而设计,又称微控制器。具有三高单片机为工业测控而设计,又称微控制器。具有三高 优势优势(集成度高、可靠性高、性价比高集成度高、可靠性高、性价比高)。 主要应用于工业检测与控制、计算机外设、智能仪器主要应用于工业检测与控制、计算机外设、智能仪器 仪表、通讯设备、家用电器等。仪表、通讯设备、家用电器等。 特别适合于嵌入式微特别适合
11、于嵌入式微 型机应用系统。型机应用系统。 单片机发展概况单片机发展概况 1976-1978 初级8位单片机 Intel MCS-48 系列 1978-高档8位单片机 Intel MCS-51系列: -51-51子系列:子系列:8031/8051/87518031/8051/8751 -52-52子系列:子系列:8032/8052/87528032/8052/8752 低功耗型(80C31)高性能型(80C552)廉价型 (89C2051/1051) 1983- 16位单片机 Intel MCS-96 系列 8098/80968098/8096、80C198/80C19680C198/80C19
12、6 32位单片机 80960 第第1章:微型计算机基础章:微型计算机基础 本章基本要求:本章基本要求: 单片微型计算机的含义单片微型计算机的含义 各系列单片机的特点各系列单片机的特点 5151系列系列单片机的概念及指标单片机的概念及指标 单片微机工业产品概念单片微机工业产品概念 1.1计算机中的数制及数的转换计算机中的数制及数的转换 计算机中的数:二进制计算机中的数:二进制 在计算机内,必须以二进制来考虑各种运算。在计算机内,必须以二进制来考虑各种运算。 自行强化概念:二进制、十进制、八进制、十六自行强化概念:二进制、十进制、八进制、十六 进制等的描述特点,转化方法。进制等的描述特点,转化方法
13、。 定点数的表示方法:小数点的位置固定。可以由定点数的表示方法:小数点的位置固定。可以由 使用者来定义小数点的位置。使用者来定义小数点的位置。 一般,采用定点整数、定点小数来描述计算机中一般,采用定点整数、定点小数来描述计算机中 的定点数。的定点数。 定点数的特点:运算规则简单,描述数据的范围定点数的特点:运算规则简单,描述数据的范围 较小。较小。 十进制十进制N ND D有十个数码0-9、逢十进一逢十进一。 十进制用于计算机输入输出,人机交互。 二进制二进制N NB B两个数码:0、1, 逢二进一逢二进一。 二进制为机器中的数据形式。 十六进制十六进制N NH H十六个数码:0-9, A-F
14、, 逢十六进一逢十六进一。 十六进制用于表示二进制数。 不同进位制数以下标或后缀区别,十进制数可 不带下标。 如如:101:101、101D101D、101B101B、101H 101H 、102102H H 进位计数制进位计数制 表 1-2-1 不同进位记数制对照表 十进制二进制十六进制十进制二进制十六进制 000000810008 100011910019 200102101010A 300113111011B 401004121100C 501015131101D 601106141110E 701117151111F 进位计数制进位计数制 十进制十进制N ND D 有十个数码:有十个数
15、码:0-90-9,逢十进一。,逢十进一。 例例 1234.5=11234.5=110103 3 +2 +210102 2 +3 +310101 1 +4 +410100 0 +5 +51010-1 -1 加权展开式以加权展开式以1010称为基数,各位系数为称为基数,各位系数为0-90-9。 一般表达式:一般表达式: N ND D= d= dn-1 n-1 1010n-1 n-1+d +dn-2 n-2 1010n-2 n-2 + +d +d0 010100 0 +d +d-1 -1 1010-1 -1+ + 进位计数制进位计数制 二进制二进制N NB B 两个数码:两个数码:0 0、1, 1,
16、 逢二进一逢二进一。 例例 1101.101B=1 1101.101B=12 23 3+1+12 22 2+0+02 21 1+1+12 20 0+1+12 2-1 -1+1 +12 2-3 -3 加权展开式以加权展开式以2 2为基数,各位系数为为基数,各位系数为0 0、1 1。 一般表达式:一般表达式: N NB B = b = bn-1 n-1 2 2n-1 n-1 + b + bn-2 n-2 2 2n-2 n-2 + +b +b0 02 20 0 +b +b-1 -1 2 2-1 -1+ + 进位计数制进位计数制 十六进制十六进制N NH H 十六个数码十六个数码0-90-9、A-FA
17、-F,逢十六进一,逢十六进一。 例:例:DFC.8H=13DFC.8H=1316162 2 +15 +1516161 1 +12 +1216160 0 +8 +81616-1 -1 展开式以十六为基数,各位系数为展开式以十六为基数,各位系数为0-90-9,A-FA-F。 一般表达式:一般表达式: N NH H= h= hn-1 n-1 1616n-1 n-1+ h + hn-2 n-2 1616n-2 n-2+ + h + h0 016160 0+ h+ h-1 -1 1616-1 -1+ + 进位计数制进位计数制 1-2-2 不同进位计数制之间的转换 先展开,然后按照十进制运算法则求和。先展
18、开,然后按照十进制运算法则求和。 举例: 1011.1010B=11011.1010B=12 23 3+1+12 21 1+1+12 20 0+1+12 2-1 -1+1 +12 2-3 -3=11.625 =11.625 DFC.8H =13DFC.8H =1316162 2+15+1516161 1+12+1216160 0+8+81616-1 -1 = 3580.5 = 3580.5 (一)二、十六进制数转换成十进制数(一)二、十六进制数转换成十进制数 进位计数制的一般表达式进位计数制的一般表达式: Nr= aNr= an-1 n-1r rn-1 n-1+a +an-2 n-2r rn-
19、2 n-2+ + +a +a1 1r r1 1a a0 0r r0 0a a-1 -1r r-1 -1 a a-m -mr r-m -m 一个r1进制的数转换成r2进制数的方法: 先展开,然后按r2进制的运算法则求和计算。 1-2-2 不同进位计数制之间的转换 (二)二进制与十六进制数之间的转换(二)二进制与十六进制数之间的转换 24=16 ,四位二进制数对应一位十六进制数。,四位二进制数对应一位十六进制数。 举例:举例: 3AF.2H3AF.2H = = 00110011 10101010 11111111. .00100010 = 1110101111.001B = 1110101111.
20、001B 3 A F 2 3 A F 2 1111101.11B1111101.11B = = 01110111 11011101. .11001100 = 7D.CH = 7D.CH 7 D C 7 D C (三)十进制数转换成二、十六进制数十进制数转换成二、十六进制数 整数、小数分别转换整数、小数分别转换 1.整数转换法整数转换法 “除基取余除基取余”:十进制整数不断除以转换进制基数,直至商为:十进制整数不断除以转换进制基数,直至商为0。 每除一次取一个余数,从低位排向高位。举例:每除一次取一个余数,从低位排向高位。举例: 1. 39转换成二进制数 39 =100111B 2 39 1 (
21、 b0) 2 19 1 ( b1) 2 9 1 ( b2) 2 4 0 ( b3) 2 2 0 ( b4) 2 1 1 ( b5) 0 2. 208转换成十六进制数 208 = D0H 16 208 余余 0 16 13 余余 13 = DH 0 2.小数转换法小数转换法 “乘基取整乘基取整”:用转换进制的基数乘以小数部分,直至:用转换进制的基数乘以小数部分,直至小数为小数为0 或达到转换精度要求的位数。每乘一次取一次整数,从最高位排或达到转换精度要求的位数。每乘一次取一次整数,从最高位排 到最低位。举例:到最低位。举例: 1. 0.625转换成二进制数 0.625 2 1.250 1 (b-
22、1) 2 0.5 0 0 (b-2) 2 1.0 1 (b-3) 0.625 = 0.101B 2. 0.625转换成十六进制数 0.625 16 = 10.0 0.625 = 0.AH 3. 208.625 转换成十六进制数 208.625 = D0.AH (三)十进制数转换成二、十六进制数(三)十进制数转换成二、十六进制数 1.2计算机中的数的表示方法计算机中的数的表示方法 浮点数的表示方法:小数点的位置是浮动的。浮点数的表示方法:小数点的位置是浮动的。 浮点数的特点:数的描述范围大,运算规则比浮点数的特点:数的描述范围大,运算规则比 较复杂。较复杂。 二进制数的运算:二进制数的运算: 机
23、器数:使用二进制来描述数的符号和数值的机器数:使用二进制来描述数的符号和数值的 形式。形式。 机器数可以有:原码、反码、补码等形式等三机器数可以有:原码、反码、补码等形式等三 种基本形式。种基本形式。 带符号数的表示方法带符号数的表示方法 机器数:机器中数的表示形式,其位数通常为8的倍数 真值: 机器数所代表的实际数值。 举例:一个8位机器数与它的真值对应关系如下: 真值:真值:X1=+84=+1010100B X1=+84=+1010100B X2=-84= -1010100B X2=-84= -1010100B 机器数:机器数:X1X1机 机= 01010100 X2 = 01010100
24、 X2机 机= 11010100 = 11010100 在计算机中,数的符号用在计算机中,数的符号用“0 0”、“1 1” 表示。表示。 最高位作符号位,最高位作符号位,“0 0”表示表示“+ +”,“1 1”表示表示“- -”。 (一)机器数与真值(一)机器数与真值 最高位为符号位,最高位为符号位,0 0表示表示 “+ +”,1 1表示表示“”。 数值位与真值数值位相同数值位与真值数值位相同。 例例 8位原码机器数:位原码机器数: 真值:真值: x1 = +1010100B x2 = 1010100B 机器数: 机器数:x1原 原 = 01010100B x2原 原 = 11010100B
25、原码表示简单直观原码表示简单直观, ,但但0 0的表示不唯一,加减运算复杂。的表示不唯一,加减运算复杂。 有符号数通常使用三种表示方法:有符号数通常使用三种表示方法: (二二)原码原码(True Form) 带符号数的表示方法带符号数的表示方法 正数的反码与原码表示相同。 负数反码符号位为 1,数值位为原码数值各位取反。 例 8位反码机器数: x= +4 : x原= 00000100B x反= 00000100B x= -4 : x原= 10000100B x反= 11111011B (三)反码(三)反码(Ones Complement) 带符号数的表示方法带符号数的表示方法 (四)补码(四)
26、补码(Twos Complement) 正数的补码表示与原码相同。正数的补码表示与原码相同。 负数补码的符号位为负数补码的符号位为1 1,数值位等于反码加,数值位等于反码加1 1。 例:求例:求 8位补码机器数:位补码机器数: x=+4x=+4 x x原 原=x =x反 反=x =x补 补= 00000100B = 00000100B x=-4x=-4 x x原 原 = 10000100B = 10000100B x x反 反 = 11111011B = 11111011B x x补 补 = 11111100B = 11111100B 补码表示的优点:补码表示的优点:0 0的表示唯一,加减运算
27、方便。的表示唯一,加减运算方便。 带符号数的表示方法带符号数的表示方法 数的补码与数的补码与“模模”有关有关, ,“模模”即计数系统的量程。即计数系统的量程。 当当X0X0,XX补 补= = 模模- -X X。 举例:钟表校时。举例:钟表校时。 设时钟系统设时钟系统“模模”为为1212,标准时间为,标准时间为7 7点整。点整。 8 8位二进制数的模为:位二进制数的模为: 2 28 8 = 256 = 256 当当X0X9 AC=1 则(则(A30) (A30)+06H 若若(A74)9 CY=1 则(则(A74) (A74)+60H 注意:注意:DA 指令不能对指令不能对BCD码减法的结果进行
28、调整码减法的结果进行调整 D4H 机器码机器码 单字节指令单字节指令 BCDH BCDL A A B C D E F 0 1 2 3 4 5 6 7 8 9 BCD 合法合法 非法!非法! 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 二进制数二进制数 0 0 0 00 0 0 11 0 0 0 0 10 0 0 11 1 合法合法 例例 设(设(A)=37H;(;(R3)=36H,执行
29、下面的程序:,执行下面的程序: 0 0 1 1 0 1 1 1 (37H) 0 0 1 1 0 1 1 0 (36H) (6DH) 0 1 1 0 1 1 0 1 过过“9” 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 补补“6” (73H) ;(;(A) = 6DH ;(;(A) = 73H 0 1 1 1 0 0 1 1 (73H) 1 0 0 1 1 0 0 1 (99H) 1 0 0 0 0 1 1 0 0 (0CH) CY 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 (72H) ;(;(A) = 0CH CY=1 ;(;(A) = 72H 过过
30、“9” 补补“6” 1 1 0 111 1 0 0 ADD A,R3 DA A ADD A,#99H DA A “+ 99”就等于减就等于减“- 1” 互补互补 DA A 只能跟在加法指令之后只能跟在加法指令之后 5、减法指令、减法指令SUBB 累加器减立即数和借位标志累加器减立即数和借位标志 SUBB A,#data 双字节指令双字节指令 94H 立即数立即数 机器码机器码 累加器减寄存器内容和借位标志累加器减寄存器内容和借位标志 SUBB A,Rn(n=07) 单字节指令单字节指令 98H 9FH 机器码机器码 ;A (A)- #data-CY ;A (A)- (Rn) -CY 累加器减累
31、加器减RAM内容和借位标志内容和借位标志 SUBB A,Ri(i=0,1) 单字节指令单字节指令 96H 97H 机器码机器码 累加器内容减内累加器内容减内RAM内容或内容或SFR和借位标志和借位标志 SUBB A,direct 双字节指令双字节指令 95H 直接地址直接地址 机器码机器码 ;A (A)- (Ri)-CY ;A (A)- (direct) -CY SUBB类指令小结类指令小结 指令助记符指令助记符说说 明明字字 节节 2 2 1 1 1 1 2 2 SUBB A,#data SUBB A,Rn SUBB A,Ri SUBB A,direct 累加器减立即数和借位累加器减立即数和
32、借位 累加器减寄存器内容和借位累加器减寄存器内容和借位 累加器减累加器减RAM内容和借位内容和借位 累加器减直接地址内容和借位累加器减直接地址内容和借位 6、减量、减量 DEC 累加器内容减累加器内容减“1” DEC A ;A (A)- 1 单字节指令单字节指令 寄存器内容减寄存器内容减“1 DEC Rn ;Rn (Rn)-1 单字节指令单字节指令 18H 1FH 机器码机器码 14H 机器码机器码 内内RAM或或SFR内容减内容减 “1 DEC direct ;(Ri) (Ri)-1 单字节指令单字节指令 16H16H 17H17H机器码机器码 内内RAM内容减内容减“1 DEC Ri ;d
33、irect (direct)-1 双字节指令双字节指令 15H15H 直接地址直接地址 机器码机器码 DEC 类指令小结类指令小结 指令助记符指令助记符说说 明明字字 节节 1 1 1 1 2 2 1 1 DEC A DEC Rn 累加器内容减累加器内容减“1 1” 寄存器内容减寄存器内容减“1 1” DEC direct内内RAM或或SFR内容减内容减“1” DEC Ri内内RAM内容减内容减“1” 7、MUL MUL A B DIV A B A4H机器码机器码 单字节指令单字节指令 ;执行执行 (A)(B) (B A) 的操作的操作 CY= 0 8、DIV 单字节指令单字节指令 84H 机
34、器码机器码 ;执行执行 (A)/(B) 后,商后,商 A 余余 B CY= 0 二、逻辑运算类(二、逻辑运算类(24条)条) 用到的指令助记符有用到的指令助记符有9种:种: 包括与、或、异或、清除、求反、移位等操作包括与、或、异或、清除、求反、移位等操作 ANL、ORL、XRL、 CLR、CPL、 RL、RLC、RR、RRC 1、逻辑与、逻辑与ANL(6条)条) 累加器内容逻辑与立即数累加器内容逻辑与立即数 ANL A,#data ;A (A)#data 双字节指令双字节指令 54H 立即数立即数 机器码机器码 累加器内容逻辑与寄存器内容累加器内容逻辑与寄存器内容 ANL A,Rn(n=07)
35、 ;A (A)(Rn) 单字节指令单字节指令 58H 5FH 机器码机器码 累加器内容逻辑与内累加器内容逻辑与内RAM内容内容 ANL A,Ri(i=0,1) ;A (A) (Ri) 单字节指令单字节指令 56H 57H机器码机器码 累加器内容逻辑与内累加器内容逻辑与内RAM内容或内容或SFR ANL A,direct ;A (A) (direct) 双字节指令双字节指令 55H 直接地址直接地址 机器码机器码 累加器内容逻辑与内累加器内容逻辑与内RAM或或SFR ANL direct,A 52H 直接地址直接地址 机器码机器码 二字节指令二字节指令 ;direct (direct) A 立即
36、数逻辑与立即数逻辑与RAM或或SFR ANL direct,#data 三字节指令三字节指令 直接地址直接地址 立即数立即数 53H 机器码机器码 ;direct (direct)#data ANL 类传送指令小结类传送指令小结 ANL A,#data立即数逻辑与累加器立即数逻辑与累加器 ANL A,Rn寄存器内容逻辑与累加器寄存器内容逻辑与累加器 ANL A,direct直接地址内容逻辑与累加器直接地址内容逻辑与累加器 ANL A,Ri内内RAM内容逻辑与累加器内容逻辑与累加器 指令助记符指令助记符说说 明明字字 节节 2 2 1 1 2 2 1 1 ANL direct,A ANL dir
37、ect,#data 累加器逻辑与内累加器逻辑与内RAM或或SFR 立即数逻辑与立即数逻辑与RAM或或SFR 2 2 3 3 2、逻辑或、逻辑或 ORL(6条)条) 累加器内容逻辑或立即数累加器内容逻辑或立即数 ORL A,#data ;A (A)#data 双字节指令双字节指令 44H 立即数立即数 机器码机器码 累加器内容逻辑或寄存器内容累加器内容逻辑或寄存器内容 ORL A,Rn(n=07) ;A (A) (Rn) 单字节指令单字节指令 48H 4FH 机器码机器码 累加器内容逻辑或内累加器内容逻辑或内RAM内容内容 ORL A,Ri(i=0,1) ;A (A) (Ri) 单字节指令单字节
38、指令 46H 47H 机器码机器码 累加器内容逻辑或内累加器内容逻辑或内RAM内容或内容或SFR ORL A,direct ;A (A) (direct) 双字节指令双字节指令 45H 直接地址直接地址 机器码机器码 累加器内容逻辑或内累加器内容逻辑或内RAM或或SFR ORL direct,A 42H 直接地址直接地址 机器码机器码 二字节指令二字节指令 ;direct (direct) (A) 立即数逻辑或立即数逻辑或RAM或或SFR ORL direct,#data 三字节指令三字节指令 直接地址直接地址 立即数立即数 43H 机器码机器码 ;direct (direct)#data O
39、RL 类传送指令小结类传送指令小结 ORL A,#data立即数逻辑或累加器立即数逻辑或累加器 ORL A,Rn寄存器内容逻辑或累加器寄存器内容逻辑或累加器 ORL A,direct直接地址内容逻辑或累加器直接地址内容逻辑或累加器 ORL A,Ri内内RAM内容逻辑或累加器内容逻辑或累加器 指令符号指令符号说说 明明字字 节节 2 2 1 1 2 2 1 1 ORL direct,A ORL direct,#data 累加器逻辑或内累加器逻辑或内RAM或或SFR 立即数逻辑或立即数逻辑或RAM或或SFR 2 2 3 3 3、逻辑异或、逻辑异或XRL(6条)条) 累加器内容逻辑异或立即数累加器内
40、容逻辑异或立即数 XRL A,#data 双字节指令双字节指令 64H 立即数立即数 机器码机器码 累加器内容逻辑异或寄存器内容累加器内容逻辑异或寄存器内容 XRL A,Rn(n=07) 单字节指令单字节指令 68H 6FH机器码机器码 ;A (A) #data + ;A (A) (Rn) + 累加器内容逻辑异或内累加器内容逻辑异或内RAM内容内容 XRL A,Ri(i=0,1) 单字节指令单字节指令 66H 67H 机器码机器码 累加器内容逻辑异或内累加器内容逻辑异或内RAM内容或内容或SFR XRL A,direct 双字节指令双字节指令 65H 直接地址直接地址 机器码机器码 ;A (A
41、) (Ri) + ;A (A) (direct) + 累加器内容逻辑异或内累加器内容逻辑异或内RAM或或SFR XRL direct,A 62H 直接地址直接地址 机器码机器码 二字节指令二字节指令 立即数逻辑异或立即数逻辑异或RAM或或SFR XRL direct,#data 三字节指令三字节指令 直接地址直接地址 立即数立即数 63H 机器码机器码 ;direct (direct) (A) + ;direct (direct) #data + XRL类传送指令小结类传送指令小结 XRL A,# data立即数逻辑异或累加器立即数逻辑异或累加器 XRL A,Rn寄存器内容逻辑异或累加器寄存器
42、内容逻辑异或累加器 XRL A,direct直接地址内容逻辑异或累加器直接地址内容逻辑异或累加器 XRL A,Ri内内RAM内容逻辑异或累加器内容逻辑异或累加器 指令助记符指令助记符说说 明明字字 节节 2 2 1 1 2 2 1 1 XRL direct,A XRL direct,#data 累加器逻辑异或内累加器逻辑异或内RAM或或SFR 立即数逻辑异或立即数逻辑异或RAM或或SFR 2 2 3 3 例:根据累加器中例:根据累加器中40的状态修改的状态修改P1端口位端口位40的状态的状态 ANL A,#00011111B ANL P1,#11100000B ORL P1,A ;A屏蔽前屏蔽
43、前3位,保留后位,保留后5位位 ;A的后的后5位是位是“1”, 使使P1口口 相应位置相应位置“1”,P1前前3位不位不 变变 ;P1屏蔽后屏蔽后5位,保留前位,保留前3位位 仅修改了仅修改了 P1 口的后口的后 5 位位 4 累加器清除与求反指令(累加器清除与求反指令(2条)条) 累加器累加器A清零清零 CLR A 单字节指令单字节指令 ;A 00H E4H 机器码机器码 累加器累加器A按位取反按位取反 CPL AF4H 机器码机器码 ;A (A) 单字节指令单字节指令 例:例: 给出下面程序分析执行结果给出下面程序分析执行结果 CLR A CPL A ;(;(A)= 00H ;(;(A)=
44、 FFH 4 移位指令(移位指令(4条)条) 累加器内容循环左移一位累加器内容循环左移一位 RL A A7A0 单字节指令单字节指令 23H 机器码机器码 累加器内容连同进位标志循环左移一位累加器内容连同进位标志循环左移一位 A7A0 单字节指令单字节指令 RLC A33H机器码机器码 CY 累加器内容循环右移一位累加器内容循环右移一位 RR A A7A0 单字节指令单字节指令 03H 机器码机器码 累加器内容连同进位标志循环右移一位累加器内容连同进位标志循环右移一位 A7A0 单字节指令单字节指令 RRC A 13H 机器码机器码 CY 移位指令小结移位指令小结 指令助记符指令助记符说说 明
45、明字字 节节 1 1 1 1 1 1 1 1 RL A RLC A RR A RRC A 累加器循环左移累加器循环左移 累加器连同进位循环左移累加器连同进位循环左移 累加器循环右移累加器循环右移 累加器连同进位循环右移累加器连同进位循环右移 1 1 CLR A CPL A 累加器累加器A清零清零 累加器累加器A按位取反按位取反 累加器清除与求反指令小结累加器清除与求反指令小结 例:设(例:设(A)=5AH、CY=1 RL A RLC A RR A RRC A ;(;(A)= B4H ;(;(A)= 2DH ;(;(A)= B5H ;(;(A)= ADH 01011010 01011010 01
46、01101001011010 01011010010110101 1 CYCY 01011010010110101 1 CYCY 0 0 1 1 0 0 1 1 0 0 0 0 3.5控制转移和位操作指令控制转移和位操作指令 控制转移指令用来控制程序执行的流向,是控制转移指令用来控制程序执行的流向,是 程序设计中应用最为灵活的指令。程序设计中应用最为灵活的指令。 控制转移指令的实质是:控制转移指令的实质是:更改更改PCPC的值。的值。 一、控制转移指令共有一、控制转移指令共有17条条 无条件转移指令无条件转移指令 条件转移指令条件转移指令 子程序的调用返回等子程序的调用返回等 1 1、无条件转
47、移指令、无条件转移指令 长转移长转移 LJMP addr16 ;PC addr16 addr158 02H 机器码机器码 addr70 三字节指令三字节指令 绝对转移绝对转移 AJMP addr11 ; PC100 A100 AJMP 将程序存储器分为将程序存储器分为32个区,由个区,由PC1511决定,每决定,每 个区个区2KB,分分8页页,由,由A10A9A8决定。双字节指令决定。双字节指令 A10A9A800001 A7 A0 机器码机器码 ; PC (PC)+2 转移范围转移范围 2KB 转移范围转移范围 64KB A7 A0A10A9A8 00001 PC15 PC11PCPC101
48、0PCPC9 9PCPC8 8PCPC7 7 PCPC0 0 . 在在2区形成区形成 11位目标地址位目标地址 . . . . . . . . . AJMP 0区区 1区区 31区区 0000H 07FFH 0800H 0FFFH 1000H 17FFH F800H FFFFH . . . 1000H 17FFH 保持高保持高5位地址位地址 以确定某区以确定某区 0 0 0 1 0 例如例如 AJMP add11 在在2区的执行过程区的执行过程 2区区 2KB 范围内范围内 页内地址页内地址页地址页地址 操作码操作码 00001 短转移短转移 SJMP rel ;PC (PC)+rel 指令中
49、的指令中的rel是是8位带符号补码,范围位带符号补码,范围-128+127。可。可 由汇编自动计算并填入指令代码,也可手工计算。由汇编自动计算并填入指令代码,也可手工计算。 ;PC (PC)+2 10000000 rel 机器码机器码 双字节指令双字节指令 计算式:计算式:rel =目标地址目标地址 -(PC+2) 在编写程序时,只需要在:在编写程序时,只需要在:SJMP后面写地址标号,不用写地址偏移量,后面写地址标号,不用写地址偏移量, 在汇编时,汇编程序会自动计算偏移量在汇编时,汇编程序会自动计算偏移量 例:分析指令例:分析指令 SJMP $ $ 符号符号“$”指本指令执行前的指本指令执行
50、前的PC值,指令值,指令SJMP $执行后,程序仍然转移回此指令继续执行,计执行后,程序仍然转移回此指令继续执行,计 算机于是不断的执行这一指令,进入等待状态。算机于是不断的执行这一指令,进入等待状态。 原地踏步原地踏步 rel = 0FEH =(-2)补 补 间接长转移间接长转移 JMP A+DPTR ;PC (A)+(DPTR) 73H机器码机器码 单字节指令单字节指令 散转指令与长转移指令一样,可以在散转指令与长转移指令一样,可以在64K64K 的的ROMROM空间任意转移,但用于累加器空间任意转移,但用于累加器A A和和 DPTRDPTR中的数据都可以变化,故使用起来中的数据都可以变化