单片机原理及应用教材_第1页
单片机原理及应用教材_第2页
单片机原理及应用教材_第3页
单片机原理及应用教材_第4页
单片机原理及应用教材_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.单片机原理及应用常州轻工职业技术学院前言当今,单片微型计算机技术迅速发展,由单片机技术开发的智能化测控设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高。企业迫切需要大量熟练掌握单片机技术,并能开发、应用和维护管理这些智能化产品的高级工程技术人材。单片机以体积小、功能强、可靠性好、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。本教材内容分为十章。以MCS-51系列单片机为介绍对象,分别介绍MCS-51系列单片机结构原理、MCS-51单片机指令系统、汇编语言程序设计、并行I/O口的使用、并行I/O口的扩展方法及使用、中断系统和

2、定时/计数器、A/D转换接口和D/A转换接口技术、键盘与显示器接口技术等内容。本教材由杨文新、龚益民、韩迎辉老师编写,谢丽华、刘军良老师参与本书图表的绘制。编者2004年7月目 录第一章 认识单片机 3第二章 MCS-51单片机指令系统14第三章 汇编语言程序设计 27第四章 并行I/O口 33第五章 并行I/O口的扩展 40第六章 中断系统 49第七章 定时/计数器 55第八章 A/D转换接口 60第九章 D/A转换接口 63第十章 键盘与显示器接口 67附录一 WAVE软件的操作使用附录二 ASCII码表附录三 MCS-51单片机指令系统表附录四 单片机练习题附录五 单片机实验指导书:65

3、第一章 认识单片机一、什么是单片机单片机是将CPU、存储器、输入/输出接口、定时/计数器等集成在一块芯片上,是目前销量最大、应用面最广、价格最便宜的微型计算机。如图1-1所示:I/O口CPU程序存储器定时/计数器外设取指令图1-1 单片机结构框图例1-1 单片机彩灯控制系统(单片机控制8个发光二极管每隔0.1秒轮流点亮。)使用单片机实验板进行演示。 二、典型单片机产品1MCS-51系列美国Intel公司生产的8位字长单片机。基本型产品有8051、8031、8751等。2AT89C51系列美国ATMEL公司生产的8位字长单片机。与MCS-51系列单片机兼容,内含4KB的flash存储器。三、MC

4、S-51单片机的内部的硬件结构及引脚 (一) MCS-51单片机内部的总体硬件结构8051单片机的内部基本结构,如图1-2所示。(二) MCS-51单片机的引脚8051单片机是HMOS工艺制造,外形为40条引脚,如图1-3所示。因为受芯片引脚数量的限制,有很多引脚具有双功能。1、主电源引脚 VCC:芯片工作电源端,接5V。Vss:电源接地端。2、时钟振荡电路引脚XTAL1:内部晶体振荡电路的反相器输入端。接法如图1-5。XTAL2:内部晶体振荡电路的反相器输出端。接法如图1-5。3、控制信号引脚RST RST为复位信号输入端。外部接复位电路。接法如图1-4。ALEALE为地址锁存允许信号。 在

5、不访问外部存储器时,ALE以时钟振荡频率的16的固定频率输出,用示波器观察ALE引脚上的脉冲信号是判断单片机芯片是否正常工作的一种简便方法。 外部程序存储器ROM的读选通信号。到外部ROM取指令时,自动向外发送负脉冲信号。 为访问程序存储器的控制信号。 振荡器和时钟电路程序存储器4KB ROM数据存储器256B RAM/SFR8051CPU两个16位定时器/计数器中断系统64K字节总线扩展控制并行I/O端口全双工串行口外部时钟源 外部计数脉冲 外中断 控制 外部设备 串行通讯图1-2 8051单片机的内部基本结构4、并行I端口引脚P0口(P0.0 P0.7);P1口(P1.0 P1.7);P2

6、口(P2.0 P2.7);P3口(P3.0 P3.7)。(a)引脚图 (b) 逻辑符号图1-3 MCS-51引脚图(三)复位电路与时钟电路1复位电路(1)复位电路 单片机的RST引脚是复位信号输入端,RST引脚上保持两个机器周期(24个时钟周期)以上的高电平时,可使单片机内部可靠复位。 单片机常用的外部复位电路如图1-4。(a)上电复位电路 (b)上电复位兼手动复位电路图1-4 MCS-51的复位电路(2)复位状态复位后,单片机内部的各寄存器的内容将被初始化,包括程序计数器PC和特殊功能寄存器,其中(PC)=0000H,特殊功能寄存器的状态见表1-1。复位不影响片内RAM和片外RAM中的内容。

7、表1-1 复位后特殊功能寄存器的初始状态SFR名称初始状态SFR名称初始状态ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0 P3FFHSBUF不确定IP00000BSCON00HIE000000BPCON0B2时钟电路时钟电路用于产生时钟信号,时钟信号是单片机内部各种微操作的时间基准,在此基础上,控制器按照指令的功能产生一系列在时间上有一定次序的信号,控制相关的逻辑电路工作,实现指令的功能。电容容量范围为30PF10PF,石英晶体频率的范围为1212MHZ,常用6MHZ或12MHz。图1-5 8

8、051的外接石英晶体的时钟电路3时序单位OSC时钟ALE图1-6 时序图(1)时钟周期(是时钟信号频率fosc的倒数)时钟周期 = 1 / fosc(2)机器周期:机器周期 = 12 时钟周期(3)指令周期一条指令从被读取到被执行的整个过程所需的时间称为指令周期。思考题: fosc分别为6MHZ和12MHZ时,机器周期分别为多少?四、MCS-51单片机的内部硬件的主要功能(一)中央处理单元CPU它由运算器和控制器两部分组成。1运算器运算器是进行各种算术运算和逻辑运算的部件。与运算器有关的寄存器包括ACC、B、PSW。(1)累加器ACC(8位寄存器)(2) B寄存器(8位)(3)程序状态字寄存器

9、PSW (8位) PSW主要用于存放程序状态信息以及运算结果的标志,所以又称标志寄存器。其格式如下(D1位没有定义):D7 D6 D5 D4 D3 D2 D1 D0CYACF0RS1RS0OVPCY 进位标志位。AC 辅助进位标志位。F0 用户标志位 RS1、RS0 工作寄存器区选择控制位 OV 溢出标志位。P 奇偶标志位。2控制器(1)控制器的组成控制器是由程序计数器PC、指令寄存器、译码器、定时与控制电路等组成的。(2)程序计数器PC PC是一个16位的寄存器,PC中的内容是下一条将要执行的指令代码的起始存放地址。当单片机复位之后,(PC)=0000H,引导CPU到0000H地址读取指令代

10、码,CPU每读取一个字节的指令,PC的内容会自动加1,指向下一个地址,使CPU按顺序去读取后面的指令,从而引导CPU按顺序执行程序。(二)存储器18051的存储器分为两大存储空间:程序存储器(ROM)空间(1)片内4KB 的程序存储器,其地址为0000H0FFFH(2)片外64KB的程序存储器,其地址为0000HFFFFH数据存储器(RAM)空间 (1)片内256B的数据存储器,00H7FH为通用的数据存储区,80HFFH为专用的特殊功能寄存器区 FFFFH FFFFH 1000H0FFFH 0FFFH FFH 80H7FH 0000H 0000H 00H 0000H 程序存储器 内部数据存储

11、器 外部数据存储器60KB外部ROM4KB内部 ROM(EA=1)4KB外部ROM(EA=0)特殊功能寄存器内部RAM64KB外部RAM图1-7 8051的存储器结构(2)片外64KB的数据存储器,其地址为0000HFFFFH与8051不同的是,8751片内包含4KB的EPROM程序存储器,而8031内部不包含程序存储器。2程序存储器(1)程序存储器主要用于存放程序和表格常数。(2)程序存储器分为片内、片外两部分,总容量最大为64KB,地址为0000HFFFFH。(3)引脚的接法对于8051、8751等片内有程序存储器的芯片, 引脚应该接高电平;对于8031这种片内无程序存储器的芯片,引脚应该

12、接低电平。3数据存储器数据存储器主要用于存放各种数据。以下只对内部数据存储器进行介绍。 用户区位寻址区(位地址007F)工作寄存器区3(R0R7)工作寄存器区2(R0R7)工作寄存器区1(R0R7)工作寄存器区0(R0R7)7FH 30H 2FH 20H 1FH 00H 图1-8 内部数据存储器的结构(1) 低128B的内部数据存储器按其功能不同划分为三个区域。工作寄存器区( 00H1FH )该区均分为四个小区,任何时候,只有一个区的工作寄存器可以工作,称为当前工作寄存器区。当前区的选择可通过对寄存器PSW中的RS1、RS0两个位的设置来进行,见表1-2。 表1-2 当前工作寄存器区的选择RS

13、1RS0当前工作寄存器区000区011区102区113区思考题:单片机复位时,当前工作寄存器区是哪个? 位寻址区(20H2FH) 位寻址区有16个单元组成,共128个位,每个位具有位地址,表1-3中表格数据是每个位的位地址。每个单元也可作一般的数据缓冲单元使用。位地址映象7FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49

14、H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H表1-3 片内RAM的位寻址 字节地址 2FH2EH2DH2CH2BH2AH29H28H27H26H 25H24H23H22H21H20H用户区 ( 30H7F

15、H) 为一般数据缓冲区,堆栈区通常也设置在这个区域内。(2)高128字节(特殊功能寄存器区)8051内部有21个特殊功能寄存器(简称SFR),它们均为8位的寄存器,离散分布在80HFFH区域,剩下107个单元是没有定义的,用户不能使用。见表1-4。有11个SFR的字节地址可被8整除(地址以0和8结尾),可以位寻址(表中已给出它们的位地址)。表1-4 特殊功能寄存器地址对照表SPR名称符号D7 位地址/位定义 D0字节地址B寄存器BF7F6F5F4F3F2F1F0(F0H)累加器AACCE7E6E5E4E3E2E1E0(E0H)程序状态字PSWD7D6D5D4D3D2D1D0(D0)CYACF0

16、RS1RS0OV-P中断优先级控制IPBFBEBDBCBBBAB9B8(B8H)-PSPT1PX1PT0PX0I/O端口3P3B7B6B5B4B3B2B1B0(B0H)P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0中断允许控制IEAFAEADACABAAA9A8(A8H)EA-EAET1EX0ET0EX0I/O端口2P2A7A6A5A4A3A2A1A0(A0H)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行数据缓冲SBUF(99H)串行控制SCON9F9E9D9C9B9A9998(98H)SW0SW1SW2RENTB8RB8TIRII/O端口1P1979

17、6959493929190(90H)P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0定时/计数器1(高字节)TH1(8DH)定时/计数器0(高字节)TH0(8CH)定时/计数器1(低字节)TL1(8BH)定时/计数器0(低字节)TL0(8A)定时/计数器方式选择TWODGATEC/TW1W0GATEC/TW1W0(89H)定时/计数器控制TCON8F8E8D8C8B8A8988(88H)TF1TR1TF0TR0IE1IT1IE0IT0电源控制与波特率选择PCON(87H)数据指针高字节DPH(83H)数据指针低字节DPL(82H)堆栈指针SP(81H)I/O端口0P087868

18、58483828180(80H)P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 五、 计算机中的数制与编码(一)常用数制数制也就是进位制,计算机中常用的进位制有二进制(B字母结尾)、十进制(D字母结尾,可省略)、十六进制(H字母结尾)等。其中二进制是计算机内部使用的,十进制、十六进制通常是人们书写程序或描述计算机工作过程时使用的。(二)数制间的转换三种进制的对应关系见表1-5。表1-5 三种进制数对照表二进制(B)十六进制(H)十进制(D)二进制(B)十六进制(H)十进制(D)0000001000880001111001990010221010.A100011331011B1

19、10100441100C120101551101D130110661110E140111771111F151十进制转换为二进制 整数部分的转换方法称为“除2取余法”。小数部分的转换方法称为“乘2取整法”。2二进制转换成十进制将二进制数的各个非零位分别乘以位权之后相加求和。3十进制转换成十六进制整数部分的转换方法称为“除16取余法”。小数部分的转换方法称“乘16取整法”。4十六进制转换成十进制将十六进制数的各个非零位分别乘以位权后相加求和。5二进制与十六进制之间的转换二进制数转换成十六进制数的方法是:4位二进制数对应于1位十六进制数(对应关系见表1-4)。十六进制数转换为二进制数的方法是:将每1

20、位十六进制数用对应的4位二进制数替换。练习:1 将194转换成二进制数2 将120转换成十六进制数3 将10101000B转换成十进制数4将19BH转换成十进制数5将二进制数1011011110B转换为十六进制数6将十六进制数 7B25H 转换为二进制数(三)常用二进制编码1 二进制编码的十进制数十进制数用二进制编码的形式来表示,称为二十进制编码,即:BCD码(Binary Code Decimal)。最常用的是8421BCD码。表1-5列出了BCD码(8421码)与十进制数的对照表。互换时,可以按4位对应1位的原则,进行转换。表1-6 BCD(8421)码与十进制数的对照表十进制数BCD码十

21、进制数BCD码00000501011000160110200107011130011810004010091001 课堂练习:(1)将79.32转换成BCD码(2)将BCD码100001100101转换成十进制2 字符编码(ASCll码)计算机中的各种字符,包括 0 9数字、大小写英文字母、标点符号及用于控制的特殊符号等,也必须用二进制编码表示。在计算机中一般统一使用ASCII码来表示字符。ASCII码是美国信息交换标准代码的简称。每个字符的ASCII码是由7位二进制数构成,第八位(最高位)通常定为奇偶校验位。例如:数字 09的ASCII码为30H39H;大写字母AZ的ASCII码为41H5A

22、H。(四)带符号数的表示在计算机中是使用数字“0”和“1”来表示数的符号的。如,“+”号用“0”表示;“”号用“1”表示。一个数在计算机中有三种表示方法:原码、反码、补码。下面以8位带符号数为例进行介绍。1、 原码最高位(D7位)作符号位,用“0”或“1”表示数的正或负,其余位为数值位,用来表示该数的大小,即绝对值。例: + 112 原码 = 01110000B 112 原码 = 11110000B原码所能表示的十进制范围是: 127 +127。2、反码正数的反码与原码相同;负数的反码,符号位为1,数值位是将原码的数值位按位取反(即原来是“0”的,取为“1”,原来是“1”的,取为“0”)。例:

23、+112 反码 = 01110000B 112 反码 =10001111B反码可表示的十进制范围是: 127 + 127。3、补码表示法正数的补码与原码相同;负数的补码,符号位为“1”,数值位是将反码的数值位加1形成。例:+112 补码 = 01110000B 112 补码= 10010000B用补码可表示的十进制范围是: 128 +127。因为带符号数用补码表示,可以简化运算,所以较常用。 (五)无符号数无符号的8位二进制数没有符号位,8位均为数值位。即:8位无符号二进制数对应的十进制范围为(0 255)。第二章 MCS-51单片机指令系统一、指令的表达形式每条指令有两种不同的表达形式:1二

24、进制代码(机器码)指令2助记符(汇编语言)指令助记符指令: MOV A, # 30H 二进制代码指令: 01110100 00110000助记符指令必须转换成二进制代码指令才能存入存储器。本章仅介绍助记符指令格式,对应的机器码格式可参考附录。二、汇编语言指令格式操作码 第一操作数 ,第二操作数 ,第三操作数(1)操作码:用来规定指令进行何种操作,是指令中不能空缺的部分。(2)操作数:表示参与指令操作的数据或数据所在的地址。为可选项。有两个操作数时,前一个为目的操作数,后一个为源操作数。三、指令中有关操作数符号的说明Rn工作寄存器R0R7(n= 0、1、27)。Ri 工作寄存器R0和R1(i=0

25、或1)。Direct内部RAM的单元地址,地址范围为00FFH。# data8位立即数,即常数。# data1616位立即数。addr1616位目的地址。Addrll 11位目的地址。四、MCS-51单片机指令系统MCS51的指令按功能分为五大类:数据传送、算术运算、逻辑运算、控制转移和位操作指令。(一) 数据传送类指令 注意:源操作数在传送前后保持不变。1 内部数据传送指令 指令 功能说明MOV A,Rn ; A(Rn)MOV A, direct ; A(direct)MOV A,Ri ; A (Ri)MOV A,#data ; A#dataMOV Rn,A ; Rn(A) MOV Rn,d

26、irect ; Rn(direct)MOV Rn,# data ; Rn# dataMOV direct , A ;direct (A)MOV direct , Rn ;direct (Rn)MOV direct , Ri ; direct (Ri)MOV direct1,direct2 ; direct1(direct2)MOV direct, #data ; direct#dataMOV Ri, A ; ( Ri) ( A)MOV Ri, direct ; ( Ri) ( direct)MOV Ri, #data ; ( Ri) #dataMOV DPTR, #data16 ;DPTR#d

27、ata16 【例2-1】 设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。MOV R0,#30H ; R0#30HMOV A, R0 ; A(30H),(A)= 40HMOV R1, A ; R1(A),(R1)=40HMOV B, R1 ; B(40H),(B)=10HMOV R1, P1 ; (R1) (P1),(40H)=0CAHMOV P2, P1 ; P2(P1),(P2)=0CAH结果是:(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH2外部数据传送指令此类指令完成对片外RAM单元中数据的读/写操作。(1)读指令 M

28、OVX A ,DPTR ;A(DPTR) MOVX A , Ri ; A(Ri) (2)写指令 MOVX DPTR , A ;(DPTR)(A) MOVX Ri , A ; (Ri)(A) 注意:用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。使用时,要先将低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。 【例2-2】 将片外RAM1000H单元中的内容送到2000H单元。 方法一 MOV DPTR ,#1000H ; DPTR#1000H MOVX A ,DPTR ; A(DPTR) MOV DPTR ,#2000H ;

29、 DPTR# 2000H MOVX DPTR ,A ;(DPTR)(A)方法二 MOV P2 ,#10H ;P2#10H MOV R0 ,#00H ;R0#00HMOVX A,R0 ;A(R0) MOV P2 ,#20H ;P2#20H MOVX R0,A ;(R0)(A) 注意:在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。 3访问程序存储器的传送指令(查表指令) MOVC A,A+PC ;PC(PC)+1 , A(A)+(PC)MOVC A,A+DPTR ;A(A)+(DPTR) 其功能是到程序存储器中查表格数据送入累加器A。程序存储器中除了存放程

30、序之外,还会放一些表格数据,又称查表指令。指令中的操作数为表格数据。前一条指令将A中的内容与PC的内容相加得到16位表格地址;后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。4数据交换指令XCH A,Rn ; (A)(Rn ) XCH A,direct ; (A)(direct ) XCH A,Ri ;(A)(Ri) XCHD A, Ri ; (A)30 (Ri)30 5堆栈操作指令在片内RAM的00H7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复CPU的工作现场。(1)进栈指令 PUSH direct ; SP(SP)+1 ; (SP)(direct);(2)出栈指

31、令POP direct ; direct(SP); SP (SP)1;二、算术运算类指令注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。(一)加法指令ADD A, Rn ;A(A)+(Rn ) ADD A, direct ;A(A)+(direct) ADD A, Ri ;A(A)+((Ri)) ADD A, # data ;A(A)+ data 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

32、+(CY) 如果把参加运算的两个操作数看作是无符号数(0255),加法运算对CY标志位的影响如下:(1) 若结果的第7位向前有进位(C7= 1),CY=1(2) 若结果的第7位向前无进位(C7= 0),CY=0【例2-3】 设有两个无符号数放在A和R2中,设(A)= 0C6H(198),(R2)= 68H(104),执行指令:ADD A,R2 试分析运算结果及对标志位的影响。 解: 写成竖式 (A) 11000110 198 (R2) + 01101000 + 104 (A) 1 00101110 302 结果是:(A)= 2EH, CY=1。(二)加1指令INC A ;A(A)+1 INC

33、Rn ;Rn(Rn)+1 INC direct ;direct(direct)+1 INC Ri ;(Ri)(Ri)+1 INC DPTR ;DPTR(DPTR)+1 这组指令的功能是使源操作数的值加1。【例2-4】 设有两个16位无符号数,被加数存放在内部RAM的30H(低位字节)和31H(高位字节)中,加数存放在40H(低位字节)和41H(高位字节)中。试写出求两数之和,并把结果存放在30H和31H单元中的程序。参考程序为:MOV R0,#30H ; 地址指针R0赋值MOV R1,#40H ; 地址指针R1赋值MOV A,R0 ;被加数的低8位送AADD A,R1 ;被加数与加数的低8位相

34、加,和送A,并影响CY标志MOV R0, A ;和的低8位存30H单元INC R0 ;修改地址指针R0INC R1 ;修改地址指针R1MOV A,R0 ;被加数的高8位送AADDC A,R1 ;被加数和加数的高8位与CY相加,和送AMOV R0, A ;和的高8位存31H单元(三)减法指令1带借位减法指令 SUBB A, Rn ;A(A)(Rn)(CY) SUBB A, direct ;A(A)(direct)(CY) SUBB A,Ri ;A(A)(Ri)(CY) SUBB A,#data ;A(A) data (CY) 该组指令的功能是从累加器A减去源操作数及标志位CY,其结果再送累加器A

35、。CY位在减法运算中是作借位标志。SUBB指令对标志位的影响如下:(1)若第7位向前有借位(C7= 1),则CY=1;(2)若第7位向前无借位(C7= 0),则CY=0,【例2-5】 在A和R3中存有两个无符号数, 设(A)=98H,(R3)=6AH,CY=1,执行指令:SUBB A, R3分析执行结果及对标志位的影响解: (A) 10011000 98H (R3) 01101010 6AH CY 1 1 (A) 00101101 2DH结果是: (A)=2DH,CY=02减1指令DEC A ; A(A)-1 DEC Rn ; Rn(Rn)-1 DEC direct ; direct(dire

36、ct)-1 DEC Ri ; (Ri) (Ri)-1 这组指令的功能是使源操作数的值减1。 (四)十进制调整指令 DA A 指令专用于实现BCD码的加法运算,其功能是将累加器A中按二进制相加后的结果调整成BCD码相加的结果。(1) ADD或ADDC指令的结果是二进制数之和。(2) DA 指令的结果是BCD码之和十进制调整指令执行时会对Cy位产生影响。【例2-6】MOV A, #75H MOV R3, #69H ADD A, R3 ;(A)=DEH,CY=0 MOV B, A ;(B)= DEH DA A ; (A)=44H,CY=1(五)乘法指令MUL AB ; BA(A)(B) 指令的功能是

37、把累加器A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。乘法运算指令执行时会对标志位产生影响:CY标志总是被清0,即CY=0;OV标志则反映乘积的位数,若OV=1,表示乘积为16位数;若OV=0,表示乘积为8位数。(六)除法指令 DIV AB ; A商,B余(A)(B) 指令的功能是把累加器A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加器A中,余数存于B中。除法指令执行过程对标志位的影响:CY位总是被清0,OV标志位的状态反映寄存器B中的除数情况,若除数为0,则OV=1,表示本次运算无意义,否则,OV=0。三、逻辑运算类指令在MCS

38、51指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。这类指令有可能会影响CY和P标志位的状态。(一)累加器A的逻辑操作指令 1、累加器A清0CLR A ; A00H 2、累加器A取反CPL A ; A() 【例2-7】 设(A)=33H,执行指令CPL A 结果是:(A)= 0CCH3、累加器A循环左移D7D0RL A 利用左移指令,可实现对A中的无符号数乘2的目的。【例2-8】 执行下列指令后,A中的内容如何变化?MOV A,11H ;(A)=11H(17)RL A ;(A)=22H(34)RL A ;(A)=44H(68)RL A ;(A)=88H(136)RL A

39、;(A)=11H(17)4、累加器A带进位循环左移CYD7D0 RLC A 5、累加器A循环右移 D7 D0 RR A 对累加器A进行的循环右移,可实现对A中无符号数的除2运算。6、累加器A带进位循环右移CYD7 D0 RRC A 7、累加器A半字节交换D7D4 D3D0 SWAP A 功能是将累加器A中内容的高4位与低4位互换。【例2-9】 设(A)=63H,执行指令SWAP A结果为:(A)= 36H。(二)逻辑与指令 ANL A,Rn ;A(A)(Rn) ANL A,direct ; A(A)(direct ) ANL A,Ri ;A(A)(Ri) ANL A,#data ; A(A)

40、#data ANL direct,A ;direct (direct )(A) ANL direct,#data ;direct (direct ) #data 功能是将目的操作数和源操作数按位进行逻辑与操作,结果送目的操作数。在程序设计中,逻辑与指令主要用于对目的操作数中的某些位进行屏蔽(清0)。方法是:将需屏蔽的位与“0”相与,其余位与“1”相与即可。(三)逻辑或指令 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 功能是将目的操作数和源操作数按位进行逻辑或操作,结果送目的操作数。逻辑或指令可对目的操作数的某些位进行置位。方法是:将需置位的位与“1”相或,其余位与“0”相或即可,常用于组合数据。(四)逻辑异或指令XRL A,Rn ;A(A)(Rn) XRL A,direct ; A(A)(direct ) XRL A,Ri ;A(A)(Ri) XRL A,#data ; A(A) #data XRL direct,A ;direct (direct )(A) XRL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论