下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用常州轻工职业技术学院、/4 前言当今,单片微型计算机技术迅速发展,由单片机技术开发的智能化测控设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高。企业迫切需要大量熟练掌握单片机技术,并能开发、应用和维护管理这些智能化产品的高级工程技术人材。单片机以体积小、功能强、可靠性好、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。本教材内容分为十章。以 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单片机指令系统表附录四单片机练习题附录五单片机实验指导书2第一章认识单片机一
3、、什么是单片机单片机是将CPU、存储器、输入/输出接口、定时/计数器等集成在一块芯片上,是目前销量最大、应用面最广、价格最便宜的微型计算机。如图1-1所示:外设图1-1单片机结构框图例1-1单片机彩灯控制系统(单片机控制8个发光二极管每隔0.1秒轮流点亮。)使用单片机实验板进行演示。二、典型单片机产品1 . MCS-51 系列美国Intel公司生产的8位字长单片机。基本型产品有 8051、8031、8751等。2 . AT89C51 系歹U美国ATMEL公司生产的8位字长单片机。与 MCS-51系列单片机兼容,内含 4KB的flash存储器。三、MCS-51单片机的内部的硬件结构及引脚(一)
4、MCS-51单片机内部的总体硬件结构8051单片机的内部基本结构,如图 1-2所示。(二)MCS-51单片机的引脚8051单片机是HMOS工艺制造,外形为40条引脚,如图1-3所示。因为受芯片引脚数量的限制, 有很多引脚具有双功能。1、主电源引脚Vcc:芯片工作电源端,接+ 5V。Vss:电源接地端。2、时钟振荡电路引脚XTAL1 :内部晶体振荡电路的反相器输入端。接法如图1-5。XTAL2 :内部晶体振荡电路的反相器输出端。接法如图1-5。3、控制信号引脚RSTRST为复位信号输入端。外部接复位电路。接法如图1-4。ALEALE为地址锁存允许信号。在不访问外部存储器时,ALE以时钟振荡频率的
5、1/6的固定频率输出,用示波器观察ALE引脚上的脉冲信号是判断单片机芯片是否正常工作的一种简便万法。PSEN外部程序存储器ROM的读选通信号。到外部ROM取指令时,PSEN自动向外发送负脉冲信号。EA为访问程序存储器的控制信号。v v v v外部设备串行通讯1L:全双工 串行口nir-并行I/O端口64K字节总线扩展控制程序存储器4KB ROM数据存储器256B RAM/SFR两个16位定时器/计数器外部时钟源外部计数脉冲外中断V 9V控制图1-28051单片机的内部基本结构4、并行I/O端口引脚P0口(P0.0 P0.7);P1 口(P1.0 P1.7) ; P2 口(P2.0 P2.7)
6、; P3口(P3.0 P3.7)。P1R一1FI. 1 ZPl.2一13PL3-14Fl-4-"5P1.S"'&PUS TP1.7 -aRST/V9RXD/P3.0-TXD/F3,1 1©111NTO/P3.2-21NT1/P3-3-13TQ/P3.4 -14T1/P3.515IfiRDP/PJ, 7 一17KTALZ 一18XTALJ .19w跑一20一 气 -PD.O -FOJ一P0.2 'PO 3 - PO.4PC S PO" 一 PO, 7 一诙Yk -ALE/PROG PSFN F2.7 P2,fi 一F2.5 -PIA
7、 P2. 3P2.2Vw- R 忖?VPD XTALli- 七 XTAL2L1PSEM-ALE/PROG, J 'lI . 4»w(a)引脚图(b)图1-3MCS-51引脚图6031S0S187sl逻辑符号157二三三三三二2(三)复位电路与时钟电路1 .复位电路(1)复位电路单片机的RST引脚是复位信号输入端,RST引脚上保持两个机器周期(24个时钟周期)以上的高电平时,可使单片机内部可靠复位。单片机常用的外部复位电路如图1-4。(2)复位状态复位后困消峭轴榔制的寄存器的内容将被初始化,包括程序计数器PC和特殊功能寄存器,其中(PC) =0000H,特殊功能寄存器的状态见表
8、 1-1。复位不影响片内RAM和片外RAM中的内容。表1-1复位后特殊功能寄存器的初始状态SFR名称初始状态SFR名称初始状态ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0 P3FFHSBUF不确定IPXX X 00000BSCON00HIE0X X 00000BPCON0X X X X X X XB2 .时钟电路时钟电路用于产生时钟信号,时钟信号是单片机内部各种微操作的时间基准,在此基础上,控 制器按照指令的功能产生一系列在时间上有一定次序的信号,控制相关的逻辑电路工作,实现指令的功能。电容容
9、量范围为30PF±10PF,石英晶体频率的范围为 1. 212MHZ ,常用6MHZ或12MHz。3.时序单位OSC时钟ALEXTALi图1-5 8051的外接石英晶体的时钟电路一个机U盾朋S3S5P1|PS|P1|PZ|P1|P2 P1|P2|P1(P2 P,P2P1|P2'P1|P2|P1,P2 Pl Pt Pl产 P1|P2SIPi P31n/WuuimuumjuwmimruuumwimirL图1-6时序图(1)时钟周期(是时钟信号频率 fosc的倒数)时钟周期=1 / fosc(2)机器周期:机器周期=12 X时钟周期(3)指令周期一条指令从被读取到被执行的整个过程所
10、需的时间称为指令周期。思考题:fos扮另为6MHZ和12MHz时,机器周期分别为多少?四、MCS-51单片机的内部硬件的主要功能(一)中央处理单元CPU它由运算器和控制器两部分组成。1 .运算器运算器是进行各种算术运算和逻辑运算的部件。与运算器有关的寄存器包括ACC、B、PSW。(1)累加器ACC (8位寄存器)2 2) B寄存器(8位)(3)程序状态字寄存器 PSW (8位)PSW主要用于存放程序状态信息以及运算结果的标志,所以又称标志寄存器。其格式如下(Di位没有定义):CY进位标志位。D7 D6 D5D4D3 D2 D1 D0CYACF0RS1RS0OV一PAC辅助进位标志位。F0用户标
11、志位RS1、RS0 工作寄存器区选择控制位OV溢出标志位。P奇偶标志位。2 .控制器(1)控制器的组成控制器是由程序计数器 PC、指令寄存器、译码器、定时与控制电路等组成的。(2)程序计数器PCPC是一个16位的寄存器,PC中的内容是下一条将要执行的指令代码的起始存放地址。当单片机复位之后,(PC) =0000H,引导CPU到0000H地址读取指令代码, CPU每读取一个字节的 指令,PC的内容会自动加1,指向下一个地址, 使CPU按顺序去读取后面的指令,从而引导CPU按顺序执行程序。 (二)存储器1 . 8051的存储器分为两大存储空间: 程序存储器(ROM)空间(1)片内4KB的程序存储器
12、,其地址为 0000H0FFFH(2)片外64KB的程序存储器,其地址为0000HFFFFH数据存储器(RAM )空间(1)片内256B的数据存储器,00H7FH为通用的数据存储区,80HFFH为专用的特殊 功能寄存器区(2)片外64KB的数据存储器,其地址为 0000HFFFFH程序存储器内部数据存储器外部数据存储器图1-7 8051的存储器结构与8051不同白是,8751片内包含4KB的EPROM程序存储器,而8031内部不包含程序存储器。2 .程序存储器(1)程序存储器主要用于存放程序和表格常数。(2)程序存储器分为片内、片外两部分,总容量最大为64KB,地址为0000HFFFFH。3
13、3) EA引脚的接法对于8051、8751等片内有程序存储器的芯片,EA引脚应该接高电平;对于 8031这种片内无程序存储器的芯片,EA引脚应该接低电平。3.数据存储器7FH30H2FH20H1FH00H数据存储器主要用于存放各种数据。以下只对内部数据存储器进行介绍。位寻址区(位地址007F)用户区工作寄存器区3 (R0R7> 王柞春荐藉茂2("R0R5,. .-it- < an nt « biiiwmii-Ilr, 工作寄存器区1 (R0R7> 工作寄存器反0 (R0R7>图1-8内部数据存储器的结构(1) 低128B的内部数据存储器按其功能不同划
14、分为三个区域。工作寄存器区(00H1FH )该区均分为四个小区,任何时候,只有一个区的工作寄存器可以工作,称为当前工作寄存 器区。当前区的选择可通过对寄存器PSW中的RS1、RS0两个位的设置来进行,见表1-2。表1-2 当前工作寄存器区的选择RS1RS0当前工作寄存器区000区011区102区113区思考题:单片机复位时,当前工作寄存器区是哪个?位寻址区(20H2FH)位寻址区有16个单元组成,共128个位,每个位具有位地址,表1-3中表格数据是每个位的位地址。每个单元也可作一般的数据缓冲单元使用。位地址映象7FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H
15、71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH
16、0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H表1-3片内RAM的位寻址字节地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H用户区 (30H7FH)为一般数据缓冲区,堆栈区通常也设置在这个区域内。(2)高128字节(特殊功能寄存器区)8051内部有21个特殊功能寄存器(简称SFR),它们均为8位的寄存器,离散分布在80HFFH 区域,剩下107个单元是没有定义的,用户不能使用。见表1-4。有11个SFR的字节地址可被 8整除(地址以0和8结尾),可以位寻址(表中已给出它们的位 地址)。表1-4 特殊功能寄
17、存器地址对照表SPR名称符号D7位地址/位定义D0字节地址B寄存器BF7F6F5F4F3F2F1F0(F0H)累加器AACCE7E6E5E4E3E2E1E0(E0H)程序状态字PSWD7D6D5D4D3D2D1D0(D0)CYACF0RS1RS0OVP中断优先级控制IPBFBEBDBCBBBAB9B8(B8H)PSPT1PX1PT0PX0I/O 端口 3P3B7B6B5B4B3B2B1B0(B0H)P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0中断允许控制IEAFAEADACABAAA9A8(A8H)EAEAET1EX0ET0EX0I/O 端口 2P2A7A6A5A4A3A2
18、A1A0(A0H)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行数据缓冲SBUF(99H)串行控制SCON9F9E9D9c9B9A9998(98H)SW0SW1SW2RENTB8RB8TIRII/O 端口 1P19796959493929190(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)定时/计数器
19、控制TCON8F8E8D8C8B8A8988(88H)TF1TR1TF0TR0IE1IT1IE0IT0电源控制与波特率选择PCON(87H)数据指针高字节DPH(83H)数据指针低字节DPL(82H)堆栈指针SP(81H)I/O 端口 0P08786858483828180(80H)P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0派五、计算机中的数制与编码(一)常用数制数制也就是进位制,计算机中常用的进位制有二进制(B字母结尾)、十进制(D字母结尾,可省略)、十六进制(H字母结尾)等。其中二进制是计算机内部使用的,十进制、十六进制通常是人们书写程序或描述计算机工作过程时使用的。
20、(二)数制间的转换三种进制的对应关系见表 1-5。表1-5三种进制数对照表二进制(B)十八进制(H)十进制(D)二进制(B)十八进制(H)十进制(D)0000001000880001111001990010221010.A100011331011B110100441100C120101551101D130110661110E140111771111F151 .十进制转换为二进制整数部分的转换方法称为除2取余法”。小数部分的转换方法称为乘2取整法2 .二进制转换成十进制将二进制数的各个非零位分别乘以位权之后相加求和。3 .十进制转换成十六进制整数部分的转换方法称为除16取余法”。小数部分的转换方
21、法称 乘16取整法4 .十六进制转换成十进制将十六进制数的各个非零位分别乘以位权后相加求和。5 .二进制与十六进制之间的转换二进制数转换成十六进制数的方法是:4位二进制数对应于1位十六进制数(对应关系见表1-4)。十六进制数转换为二进制数的方法是:将每1位十六进制数用对应的4位二进制数替换。练习:1 .将194转换成二进制数2 .将120转换成十六进制数3,将10101000B转换成十进制数4 .将19BH转换成十进制数5 .将二进制数1011011. 110B转换为十六进制数6 .将十六进制数 7B. 25H转换为二进制数(二)常用二进制编码1 .二进制编码的十进制数十进制编码,即: BCD
22、码(Binary Code十进制数用二进制编码的形式来表示,称为二Decimal)。最常用的是 8421BCD码。表1-5列出了 BCD码(8421码)与十进制数的对照表。互换时,可以按4位对应1位的原则,进行转换。表1-6 BCD (8421)码与十进制数的对照表十进制数BCD码十进制数BCD码00000501011000160110200107011130011810004010091001课堂练习:(1)将79.32转换成BCD码(2)将BCD码10000110. 0101转换成十进制2 . 字符编码(ASCII码)计算机中的各种字符,包才09数字、大小写英文字母、标点符号及用于控制的特
23、殊符号等, 也必须用二进制编码表示。在计算机中一般统一使用ASCII码来表示字符。ASCII码是美国信息交换标准代码的简称。每个字符的ASCII码是由7位二进制数构成,第八位(最高位)通常定为奇偶校验位。例如:数字 09的ASCII码为30H39H;大写字母AZ的ASCII码为41H5AH。(四)带符号数的表示在计算机中是使用数字“0和“1来表示数的符号的。如,"+号用”0表示;”号用”1表示。一个数在计算机中有三种表示方法:原码、反码、补码。下面以8位带符号数为例进行介绍。1、原码最高位(D7位)作符号位,用 “0或“1表示数的正或负,其余位为数值位,用来表示该数的 大小,即绝对值
24、。例:+ 112 原码= 01110000B-112 原码=11110000B原码所能表示的十进制范围是:-127 +127 。2、反码1,数值位是将原码的数值位按位取反(即原来1:数值位是将反码的数值位加1形成。正数的反码与原码相同;负数的反码,符号位为 是“0的,取为“1:原来是“1的,取为"0)'。例:+112反码=01110000B-112反码=10001111B反码可表本的十进制范围是:-127 + 127 o3、补码表示法正数的补码与原码相同;负数的补码,符号位为例: +112 补码 = 01110000B-112补码=10010000B用补码可表不'的十
25、进制范围是:T28 +127。因为带符号数用补码表示,可以简化运算,所以较常用。(五)无符号数无符号的8位二进制数没有符号位,8位均为数值位。即:8位无符号二进制数对应的十进制范围为(0 255 )。35第二章 MCS-51 单片机指令系统一、指令的表达形式每条指令有两种不同的表达形式:1 二进制代码(机器码)指令2 助记符(汇编语言)指令助记符指令: MOV A ,# 30H二进制代码指令: 0111010000110000助记符指令必须转换成二进制代码指令才能存入存储器。本章仅介绍助记符指令格式,对应的机器码格式可参考附录。二、汇编语言指令格式操作码第一操作数 ,第二操作数 ,第三操作数
26、( 1)操作码:用来规定指令进行何种操作,是指令中不能空缺的部分。( 2)操作数:表示参与指令操作的数据或数据所在的地址。为可选项。有两个操作数时,前一个为目的操作数,后一个为源操作数。三、指令中有关操作数符号的说明Rn 工作寄存器 R0R7 (n= 0、1、27)。Ri 工作寄存器 R0和R1 (i=0或1)。Direct 内部 RAM 的单元地址,地址范围为 00FFH 。( data 8位立即数,即常数。( data16 16位立即数。addr16 16位目的地址。Addrll 11位目的地址。四、 MCS-51 单片机指令系统MCS 51的指令按功能分为五大类:数据传送、算术运算、逻辑
27、运算、控制转移和位操作指令。(一) 数据传送类指令注意:源操作数在传送前后保持不变。1 内部数据传送指令指令 功能说明MOVA,Rn;A-(Rn)MOVA, direct;A-direct)MOVA,Ri;A -(Ri)MOVA,#data;A #dataMOVRnA;Rn-A)MOVRndirect; Rn-( direct )MOVRn, # data;Rn # dataMOVdirect ,A;direct<A)MOVdirect ,Rn;direct<Rn)MOVdirect ,Ri ;direct一 (Ri)MOVdirect1,direct2 ; direct1一(di
28、rect2)MOVdirect,#data ; direct -#dataMOVRi,A;( Ri)( A)MOVRi,direct;( Ri)一(direct)MOVRi,#data ;( Ri)-#dataMOVDPTR,#data16;DPTR- #data162-1 】设(30H) =40H ,40H) =10H ,( P1) =0CAH ,试判断下列程序执行后的结果。MOVR0, #30H;R0 #30HMOVA , R0;A (30H), (A) = 40HMOVR1, A;R1 (A) ( R1) =40HMOVB,R1;B (40H) ( B) =10HMOVR1, P1;(R
29、1) (P 1)(40H) =0CAHMOVP2, P1;P2(P1), ( P2) =0CAH结果是:(A) =40H ,B)=10H ,(40H ) =0CAH ,( P2)卜列程序执行后的结果。=0CAH2 外部数据传送指令此类指令完成对片外RAM 单元中数据的读/ 写操作。( 1 )读指令;A ( ( DPTR);A (Ri);(DPTR) (A);(Ri) (A)MOVXA , DPTRMOVXA , Ri2)写指令MOVX DPTR , AMOVX Ri , A注意:用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。 使用时,要先将低8位地址
30、送入Ri (R0或R1),高8位地址送入P2寄存器,然后再用上 述指令。【例2-2】将片外RAM1000H单元中的内容送到2000H单元。方法一MOVDPTR ,#1000H;DPTR- #1000HMOVXA,DPTR;A ( (DPTR)MOVDPTR ,#2000H;DPTR- # 2000HMOVXDPTR , A;(DPTR) (A)方法二MOVP2, #10H;P2#10HMOVR0, #00H;R0 #00HMOVXA,R0;A-( R0 )MOVP2, #20H;P2一#20HMOVX R0, A(R0) - (A)注意:在两个片外RAM单元之间是不能直接进行数据的传送的,必须
31、经过片内的累加器A来间接地传送。3.访问程序存储器的传送指令(查表指令)MOVC A , A+PC ; PO (PC) +1 ,A- ( (A) + (PC)MOVC A , A+DPTR ; A- ( (A) + (DPTR)其功能是到程序存储器中查表格数据送入累加器Ao程序存储器中除了存放程序之外,还会放一些表格数据,又称查表指令。指令中的操作数为表格数据。前一条指令将 A中的内容与PC的内容相加得到16位表格地址;后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。4.数据交换指令XCH A, RnXCH A, directXCH A, RiXCHD A, Ri(A) 一一
32、(Rn )(A) <-> (direct );(A) 一 ( ( Ri);(A) 30 <> ( ( Ri) ) 305.堆栈操作指令在片内RAM的00H7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复场。(1)进栈指令PUSH direct;SP <-(SP) +1;(SP)一(direct);(2)出栈指令POP direct;directC( SP);SP (SP) - 1;二、算术运算类指令注意大部分指令的执行结果将影响程序状态字PSW的后关标志位。(一)加法指令ADD A,Rn;A (A)+ (Rn )ADD A,direct;A (A)+ (di
33、rect)ADD A,Ri;A- (A)+( (Ri)ADD A,# data;A (A)+ dataADDC 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+ (CY)如果把参加运算的两个操作数看作是无符号数(0255),加法运算对CY标志位的影响如下:CPU的工作现(1) 若结果的第7位向前有进位(C7,= 了,CY=1(2) 若结果的第7位向前无进位(C7,= D, CY=0【例2-3】 设有两个无符
34、号数放在 A和R2中,设(A)= 0c6H (198), (R2) = 68H (104),执行指令:ADD A, R2试分析运算结果及对标志位的影响。解:写成竖式(A)11000110198(R2)+ 01101000+ 104(A)1 00101110302结果是:(A) = 2EH , CY=1。(二)加1指令INC A ; A (A) +1INC Rn ; Rn (Rn) +1INC direct ; direct 气 direct) +1INC Ri; ( Ri) 一 ( (Ri) ) +1INC DPTR ; DPTR- (DPTR) +1这组指令的功能是使源操作数的值加1。【例2
35、-4】设有两个16位无符号数,被加数存放在内部 RAM的30H (低位字节)和31H (高位字节)中,加数存放在 40H (低位字节)和41H (高位字节)中。试写出求两数之和,并把结果 存放在30H和31H单元中的程序。MOVR0, #30H;地址指针R0赋值MOVR1, #40H;地址指针R1赋值MOVA, R0;被加数的低8位送AADDA, R1;被加数与加数的低 8位相加,和送A,并影响MOVR0, A;和的低8位存30H单兀INCR0;修改地址指针R0INCR1;修改地址指针R1MOVA, R0;被加数的高8位送AADDCA, R1;被加数和加数的高8位与CY相加,和送AMOVR0,
36、 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)参考程序为:CY标志SUBB A, #data ; A (A) - data - (CY)该组指令的功能是从累加器 A减去源操作数及标志位 CY,其结果再送累加器 A。CY位在减法 运算中是作借位标志。SUBB指令对标志位的影响如下:(1)若第7位向前有借位(C,=1 ,则CY=1 ;(2)若第7位向前无借位(C7,=D ,则CY=0,
37、【例2-5】 在A和R3中存有两个无符号数,设(A) =98H, (R3) =6AH , CY=1 ,执行指令:SUBB A, R3 分析执行结果及对标志位的影响解:98H6AH1(A)10011000(R3)- 01101010CY 1(A)00101101 2DH2.减1指令DEC ADEC RnDEC directDEC Ri结果是:(A) =2DH , CY=0;A (A>1;Rn (Rn-)1;direct (direct);(Ri) 一 (R1)这组指令的功能是使源操作数的值减1。(四)十进制调整指令DA A指令专用于实现BCD码的加法运算,其功能是将累加器A中按二进制相加后
38、的结果调整成BCD码相加的结果。(1) ADD或ADDC指令的结果是二进制数之和。(2) DA 指令的结果是BCD码之和十进制调整指令执行时会对 Cy位产生影响。【例 2-6】 MOV A, #75HMOVR3, #69HADDA,R3;(A)=DEH ,CY=0MOVB,A;( B)= DEHDAA;(A)=44H,CY=1(五)乘法指令MUL AB ; BA(A)X(B)指令的功能是把累加器 A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。乘法运算指令执行时会对标志位产生影响:CY标志总是被清0,即CY=0; OV标志则反映乘积的位数,若OV=1
39、 ,表示乘积为16位数;若OV=0 ,表示乘积为8位数。(六)除法指令DIV AB ; A商,B余(A) + (B)指令的功能是把累加器 A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加 器A中,余数存于B中。除法指令执行过程对标志位的影响:CY位总是被清0, OV标志位的状态反映寄存器 B中的除数情况,若除数为0,则OV=1 ,表示本次运算无意义,否则, OV=0。三、逻辑运算类指令在MCS51指令系统中,逻辑运算类指令有 25条,可实现与、或、异或等逻辑运算操作。这类 指令有可能会影响CY和P标志位的状态。(一)累加器A的逻辑操作指令1、累加器A清0CLR A ; A 00
40、H2、累加器A取反CPL A ; 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;(A)=11H (17)4、累加器A带进位循环左移RLC A5、累加器A循环右移RR A对累加器A进行的循环右移,可实现对 A中无符号数的除2运算。6、累加器A带进位循环右移R
41、RC A7、累加器A半字节交换SWAP AD7D4D3D0功能是将累加器A中内容的高4位与低4位互换。【例2-9】 设(A) =63H,执行指令 SWAP A结果为:(A) = 36H。ANLA,RnANLA,directANLA,RiANLA,#dataANLdirect, A(二)逻辑与指令;A- (A) A ( Rn);A (A) A ( direct );A- (A) A ( ( Ri);A (A) A #data;direct (direct ) A (A)ANLdirect, #data ;direct (direct )A #data功能是将目的操作数和源操作数按位进行逻辑与操作
42、,结果送目的操作数。在程序设计中,逻辑与指令主要用于对目的操作数中的某些位进行屏蔽(清 需屏蔽的位与“皿与,其余位与 “1相与即可。0)。方法是:将(三)逻辑或指令ORL A, RnORL A, directORL A, RiORL A , #data;A- (A) V ( Rn);A (A) V ( direct );A- (A) V ( ( Ri);A- (A) v #dataORLdirect, A;direct (direct )v (A)ORL direct, #data ; direct (direct ) V #data功能是将目的操作数和源操作数按位进行逻辑或操作,结果送目的操
43、作数。逻辑或指令可对目的操作数的某些位进行置位。方法是:将需置位的位与 “1相或,其余位与“0”相或即可,常用于组合数据。(四)逻辑异或指令XRL A , RnXRL A , direct;A- (A)(Rn);A (A)(direct )XRL A , RiXRL A , #data;A- (A)(Ri)A (A) #dataXRLdirect, A; direct (direct )(A)XRLdirect, #data ; direct (direct ) # data功能是将目的操作数和源操作数按位进行逻辑异或操作,结果送目的操作数。逻辑异或指令可用于对目的操作数的某些位取反,而其余位
44、不变。方法是:将要取反的这些位和 “ 1异或,其余位则和” “0异或即可。”【例2-10】将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入 30H。MOVMOVR0, #30H; R0作地址指针A , R2A , #0F0H ;屏蔽低4位ANLMOV B, AMOV A , R3ANL A , #0FHORL A , BMOVR0, A;中间结果存B寄存器;屏蔽高4位;组合数据;结果存30H单元。2-11 】MOVA ,#77HXRLA ,#0FFHANLA ,#0FHMOV P1, #64HANLP1,#0F0HORLA ,P1分析下列程序的执行结果。A ) =77H(
45、A) = 77H FFH = 88H(A) =88H A 0FH = 08HP1) =64H(P1) =64H AF0H = 60H(A) = 08H V 60H=68H四、控制转移类指令转移指令的功能是通过修改程序计数器PC的值,使程序执行的顺序发生变化,从而改变程序执行的方向。(一)无条件转移指令无条件转移指令是使程序无条件转移到指定的地址去执行。1、长转移指令LJMP addr16; PC addr16指令的功能是将指令提供的16位地址(addr16)送入PC,然后程序无条件地转向目标地址( addr16 )处执行。add6可表示的地址范围是(0000HFFFFH)。2、绝对转移指令AJ
46、MP addr11;PO (PC)+2PCi0o addrll指令的功能是先使程序计数器PC 值加 2(完成取指并指向下一条指令的地址),然后将指令提供的addrll作为转移目的地址的低11位,和PC当前值的高5位形成16位的目标地址,程序随即转移到 该地址处执行。3、相对转移指令SJMP rel ; PC (PC)+2 + rel操作数为相对寻址方式。指令的功能是先使PC+2 (完成取指并指向下一条指令地址),然后把PC当前值与地址偏移量rel相加作为目标转移地址。即:目标地址 = PC + 2 + rel = ( PC) + relrel是一个带符号的8位二进制数的补码(数值范围是T28+
47、127),所以SJMP指令的转移范围是:以PC当前值为起点,可向前(“号表示)跳128个字节,或向后(“+号表示)跳127字节。当满足转移范围的条件下,可采用“SJMP add6”形式。4、间接转移指令JMP A+DPTR ; PO (A) + (DPTR)指令的功能是将累加器 A中8位无符号数与DPTR的16位内容相力口,和作为目标地址送入PC,实现无条件转移。(二)条件转移指令条件转移指令要求对某一特定条件进行判断,当满足给定的条件,程序就转移到目标地址去执行,条件不满足则顺序执行下一条指令。可用于实现分支结构的程序。这类指令中操作数都为相对寻址方式,目标地址的形成与SJMP指令相类似。当
48、满足转移范围的条件下,均可用“add6代替“rel。”1、累加器 A 的判零转移指令JZrel;若(A) =0 贝 UPC(PC)+2 + rel ,若(A) w0 则 PO (PC)+2JNZ rel ;若(A)而 贝 U PO (PC)+2 + rel , 若(A) = 0 贝 UPC(PC)+2第一条指令的功能是如果累加器A 的内容为零,则程序转向指定的目标地址,否则程序顺序执行。第二条指令的功能是如果累加器A 的内容不为零,则程序转向指定的目标地址,否则程序顺序执行。【例2-12】将片内RAM的40H单元开始的数据块传送到片外 RAM的1000H开始的单元中,当遇到传送的数据为零则停止传送。;片内RAM 数据块首址;片外RAM 数据块首址;取数;等于零,结束;不为零,送数START : MOV R0, #40HMOV DPTR , #1000HLOOP : MOV A, R0JZ ABDMOVX DPTR , A;地址指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆质押合同模板10篇
- 营养师案例试题及答案
- 学校校园安全隐患大排查大整治实施方案
- 浙江省杭州市萧山区2026年中考模拟英语试卷附答案
- 2025年临床执业医师《临床》卷
- 药品质量管理制度试题及答案
- 医疗机构XX管理制度
- 中职日常考试试题及答案
- 医疗器械经营质量管理规范(GSP)内审培训试题及答案
- 183红色喜庆福字背景的“金龙献瑞”龙年新年主题模板 2
- DB36∕T 1739-2023 养老机构老年人出入院服务规范
- 《药理学》课件-第1章 绪言
- 【《空巢老人的生活现状和服务需求研究-以杭州市XX区为例》9000字(论文)】
- 非结核分枝杆菌病诊断与治疗指南(2025年版)
- 2024-2025学年度南京信息职业技术学院单招《职业适应性测试》模拟试题附参考答案详解(轻巧夺冠)
- GB/T 5563-2025橡胶和塑料软管及软管组合件静液压试验方法
- 上海市经信委课题申报书
- 2024-2025学年度辽宁经济职业技术学院单招数学试题及答案详解一套
- 高压电工安全培训课件
- 哈他瑜伽教学课件
- 铲运机司机岗前考核试卷及答案
评论
0/150
提交评论