单片机教案第12章_第1页
单片机教案第12章_第2页
单片机教案第12章_第3页
单片机教案第12章_第4页
单片机教案第12章_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、MCS-51单片机系统结构基本内容: 掌握单片机的概念,了解其发展与应用情况;89C51单片机的功能部件与系统框图;89C51的引脚定义及连接方法;89C51的存储器配置;89C51的时序;89C51的I/O口结构及用途。重点内容:89C51单片机的功能部件与系统框图;89C51的引脚定义及连接方法;89C51的存储器配置;89C51的I/O口用途。基本要求:理解并熟练掌握89C51单片机的功能部件、引脚定义及连接方法及89C51的存储器配置;掌握89C51单片机内部的寄存器功能及用法;理解89C51的时序;了解89C51的I/O口结构;掌握89C51 I/O口的用途。难 点:89C51单片机

2、的引脚定义及连接方法;存储器配置,89C51的时序;89C51的I/O口结构。概述一、单片机的概念 通常,一个微机系统由微型计算机和外部设备构成,而微型计算机则包含有:微处理器CPU、存储器ROM/RAM、I/O接口及其它功能部件和定时器、中断系统等,由3大总线CB、AB、DB连接,而单片机则将上述微机系统的主要部件集中在一个芯片上,所以单片机可以看成是一个不带外部设备的微型计算机。单片微型计算机:Single-Chip Microcomputer One-Chip Microcomputer单片机作为工业控制和数据处理的计算机,也被称为“微控制器”、 “微处理器”(Micro-control

3、ler, Micro-processor)。二、单片机的发展概况从1974年12月,仙童(Fairchild)公司首先推出8位单片机F8,至今经历四代: 第一代:197478,典型代表如Intel公司的MCS-48型8位单片机,采用8位CPU、2个 I/O口、8位定时器/计数器、64 RAM/ 1K ROM、简单中断,寻址小于4K,且无串行口。第二代:197883,高档8位单片机,如MCS-51,MC6801,Zilog公司的Z8等。增加功能:串行I/O、多级中断、16定时/计数器、片内RAM/ROM增大,寻址64K,片内带A/D转换器接口。第三代:198390年代初,16位单片机出现,如MC

4、S-96系列的8096、8098芯片。增加性能:16位CPU,RAM/ROM增大,中断能力增强、A/D、HSIO等第四代:90年代至今,高档16位产品和32位产品的出现,如80196,MC8300等,性能、速度大大提高。三、单片机的应用 (1) 测控系统。 (2) 智能仪表。 (3) 机电一体化产品。 (4) 智能接口。 (5) 智能民用产品。 单片机发展日新月异,在众多产品中,MCS-51系列是继ZILOG公司280单片机之后在工业控制应用广泛的一种系列,如8031(无ROM)、8051(4KROM)、8751(4KEPROM)。89C51与51兼容、功耗低、价格便宜,内置FLASH ROM

5、,是目前应用最广泛的机型,所以本课程主要以ATMEL、PHILIPS、SST等公司生产的89C51为典型进行学习。 * 89C51单片机的基本组成要达到运用单片机的目的,必须熟练掌握其主要功能部件。课本P17图2-1为便于记忆总结如下:一、一个可编程的全双工串行口二、2个16位的定时/计数器 8位CPU 三、3个基本部分 程序存储器ROM (4KB FLASH ROM) 数据存储器RAM (256B RAM/SFR)四、4个8位可编程的并行I/O口五、5个具有2优先级的中断源其它:振荡器及时序电路,20多个特殊功能寄存器SFR,64K总线扩展控制器*89C51芯片的内部结构主要包括中央处理单元

6、、存储器、I/O接口组成。(画结构图讲解)中央处理单元1)运算器(1)算术逻辑单元ALU (Arithmetic Logic Unit)是运算器的主要组成部分,是一个纯粹的运算部件,没有寄存功能。 (2)累加器A (Accumulator)是CPU中使用最忙的关键寄存器。ALU进行运算时一个操作数必需来自累加器,同时也是运算结果的寄存场所。(3)程序状态字PSW(Programe State Word) 存放微机执行一条指令后所处状态的信息。不同的计算机,标志有所不同。常用的标志有:C、AC、OV、P等。(4)寄存器B 一般寄存器,参与乘除运算,也可作为普通寄存器使用。2)控制器功能:完成指令

7、译码,并发出各个操作的控制信号,包括:(1)程序计数器PC(Program Counter) 共16位,可分为PCL、PCH两个8位。存放要读取的指令所在地址的专用寄存器。(2)指令寄存器IR (Instruction Register) 存放CPU从ROM中取出的正要被执行的指令,使整个分析执行的过程,一直在该指令的控制下,而指令的操作码送ID,指令中的操作数,一般为参加运算的地址,被送到地址缓冲寄存器。(3)指令译码器ID (instruction decoded) 接收IR送来的操作码并译码,生成与指令相应的特定操作的启动信息。(4)定时控制逻辑PLA(Programmable Logi

8、c Array) 又称可编程逻辑阵列。ID送出的电平信号与外部时钟脉冲在该电路中组合,形成各种内部CON信号和外部控制信号。(5)振荡及定时电路存储器程序存储器 (Flash Rom)4KB,地址从0000H开始。用于存放程序和表格常数数据存储器(RAM)128B(解释为何与前面介绍的256B不同),00H7FH,存放中间结果、数据暂存与数据缓冲。I/O接口4个 8位并行准双向口和一个全双工串行口。 *89C51的引脚及功能采用2种封装形式1、40引脚的双列直插形式DIP2、44引脚的方形封装PLCC(1,12,23 ,34为空引脚)1主电源引脚VSS(20)接地VCC(40)接+5V电源2外

9、接晶体引脚XTAL1,XTAL2接外部晶体。3控制引脚 1)RST复位信号输入当此引脚上出现2个机器周期的高电平时,将使单片机复位。复位是初始化操作。功能:把PC初始化位0000H(所以单片机从0000H处开始执行程序),端口寄存器为0FFH,堆栈指针为07H,SBUF不定,内部RAM不定。具体课参考P37P38。 2)ALE/地址锁存器允许信号及编程脉冲输入访问外部存储器时,ALE输出低电平将地址锁存,非访问外部存储器时,此引脚输出正脉冲信号,频率为振荡频率的1/6。对单片机编程时此引脚用于输入编程脉冲。3)程序存储器选通信号,低电平有效 从外部ROM取指令或常数时,每个机器周期出现2次低电

10、平。从内部ROM取指时不产生。可带8个LS型TTL门电路。4)/VDD访问内部ROM与外部ROM选通信号 =0:只访问外部ROM;=1:访问内部ROM;PC值超过0FFFH(4KB)时,自动转向外ROM。VPP -在片内ROM编程期间,为12V编程电源输入端。4多功能I/O引脚 1)P0 P0.0P0.7此8位引脚作为8位双向I/O接口,是地址/数据引脚,用于传输低8位地址和8位数据。 2)P1 8位双向I/O接口 3)P2 8位双向I/O接口 用于做高8位地址输出(有外部存储器),当无外部存储器时,即地址范围在0255时,此口可做通用I/O接口。 4)P3 P3.0P3.7 可做通用I/O

11、接口,输入输出8位信息,还可有第二功能:P3.0 RXD 串行数据接受端P3.1 TXD 串行数据发送端P3.2 外部中断0请求端,低电平有效P3.3 外部中断1请求端,低电平有效P3.4 T0 定时器0外部事件记数脉冲输入端P3.5 T1 定时器1部事件记数脉冲输入端P3.6 外部数据存储器写选通端,低电平有效P3.7 外部数据存储器读选通端,低电平有效.根据下图讲解3大总线的工作原理根据下图讲解I/O的基本工作原理及为什么做I/O输入时先向其写1*13 89C51的存储器配置微机原理中学到,计算机存储器分两大类:内部存储器、外部存储器。内部存储器可分ROM、RAM,其中ROM中数据写入后只

12、能读出,不能写入,掉电后信息不丢失,而RAM是可读写的,掉电后,信息丢失。ROM和RAM在同一个队列里分配不同的地址空间,即每个地址对应唯一的存储单元,可以是ROM也可以是RAM,称为普林斯顿结构。单片机的存储器主要也有这两种,由于ROM 的非易失性,常常在ROM存储始终保留的固定程序和一些常用不变的数据。一般,ROM又称为程序存储器;RAM中数据易丢失,并且可以改写,一般用来存放程序运行过程中所需的数据和中间结果。在物理上有4个存储器空间:片内ROM、片外ROM、片内RAM、片外RAM。采用ROM和RAM分开的结构形式成为哈佛结构。在逻辑上有3个存储器空间:片内外统一的64KB的ROM空间(

13、0000H0FFFFH)、256B的内部RAM空间(00H0FFH)及64KB的外部RAM空间(0000H0FFFFH)。地址重复,如何区别访问?访问ROM用MOVC指令,访问内部RAM时用MOV指令,访问外部RAM时用MOVX指令下面我们逐一详述:1.3.1 程序存储器ROM用于存放编制的程序及表格常数当系统程序较大超过4K时,必须进行扩展。MCS-51由P2口提供16位地址,所以最大扩展为64K,那么扩展后,系统是如何区别访问内部ROM与外部ROM 的呢?(通过16位程序计数器PC访问),之前我们讲过,51的引脚有一个/VP0,当接+5V时先访问内部ROM,地址超过4K/8K时自动转向外部

14、ROM访问。若无片内ROM ,所以此引脚必须接地。为什么在0000H处存放一条绝对转移指令?系统复位后,PC值为0000H,而单片机对内外ROM寻址时都是用16位程序计数器寻址的,复位后CPU从0000H处执行程序,但是在ROM的0003H002BH处存放有6种中断源的入口地址,为防止在不该执行中断时进入中断服务程序,所以在系统开始执行时应跳过这一区域。一般情况下,用指令如此安排ROM空间:ORG0000H AJMPSTARTORG0003HLJMPINT0ORG 002BHLJMP INT-T2ORG 0100HSTART:RETINT0: INT-T2:1.3.2数据存储器 存放运算的中间

15、结果、数据暂存与缓存、标志位等。由于内部数据存储器容量有限(256B),当涉及到大量数据的程序运行时,容量不够,此时必须扩展外部RAM。 P28图2-6 访问内部RAM时用MOV指令,访问外部RAM时用MOVX指令片内RAM分为两大部分:低128字节(00H7FH)为真正的RAM区;高128字节(80HFFH)为特殊功能寄存器区SFR。 1)内部低128字节RAM区(00H7FH):00H1FH32个字节做工作寄存器组,每组有R0R7八个工作寄存器,某一时刻只能用其中一组,不用的可以为RAM用于存放数据(由PSW决定用哪一组)。RS1RS0寄存器组片内PAM地址通用寄存器名称000组00H07

16、HR0R7011组08H0FHR0R7102组10H17HR0R7013组18H1FHR0R720H2FH16字节单元。既可按字节操作,也可按位进行操作(单独分配有位地址00H7FH)。30H7FH80个字节单元,只能按照字节进行操作。*位寻址区和低128B RAM的地址范围一样都是00H7FH,如何区别访问呢?位寻址区采用位寻址方式,低128B RAM采用直接寻址和间接寻址。2)高128字节RAM区(80FFH)特殊功能寄存器区即SFR,包括I/O锁存器、定时器、串行口、中断、状态、控制寄存器等共21个。离散地分布在80FFH中(不包括PC)。详见课本图29及表25。 特殊功能寄存器中,有1

17、1个具备位寻址能力(字节地址能被8整除的)内部除了有工作寄存器组、程序计数器外还有其他寄存器。下面逐一介绍。累加器ACC8位寄存器运算时的暂存寄存器,用于存放操作数及运算结果。指令中用A表示大多数的加、减、乘、除都是通过A来完成的。寄存器B8位寄存器一般用于乘、除指令,与A配合使用,存放第二操作数、存放高八位乘积和除法的余数。程序状态字PSW8位寄存器,可位寻址用于存放当前指令执行后的状态信息许多指令执行后都影响到其相应的状态标志位CyAcF0RS1RS0OVPCy (PSW.7) 高位进位标志运算时,最高位产生进位借位时,Cy置1。指令中用C表示CYAc (PSW.6) 辅助进位标志半字节进

18、位标志运算时,从D3位向D4位产生进位借位时,Ac置1。F0 (PSW.5) 用户标志位由用户定义,如:可以作为电机正反转标志位RS1(PSW.4) 工作寄存器组选择位RS0(PSW.3) 在低128BRAM区中的00H1FH区是4个工作寄存器组,应该用哪一组中的R0R7呢?由这两位决定。OV (PSW.2) 溢出标志位产生溢出时,OV1(微机原理中讲过,此不多说)PSW.1 无定义P (PSW.0) 奇偶标识位跟踪累加器A中1的个数。1的个数为偶数时,P0 ,奇数时P1 一般在串口通讯时用于校验。堆栈指针SP8位寄存器 指出当前栈顶在RAM中的位置(00H7FH)与微机原理中的堆栈有概念上的

19、区别堆栈式在内部RAM中开辟的一段连续的存储单元。由低到高生成,SP越小,堆栈越深(以弹夹进行比喻)执行PUSH指令后,SP1,执行POP指令后。SP1 (微机原理中,PUSH后SP2,POP后SP2)原则上,堆栈可以在内部RAM中的任意区域,但是由于在001FH为工作寄存器区为了避免冲突,SP最好大于1FH,由于系统复位后SP07H,所以使用堆栈时最好先行设定SP的值,使其大于1FH。数据指针DPTR16位寄存器 可以分成两个8位来使用DPH、DPL。用于保留16位地址,用来对64K外部RAM寻址。端口P0P3将端口当作寄存器来使用 ,不作为专门IN、OUT指令。定时计数器的寄存器TH0、T

20、L0、TH1、TL1、TH2、TL28位寄存器 单独使用,但不能将TH0、TH1合并为16位使用其它寄存器相关内容以后详细讲述*14 89C51的时序振荡脉冲频率常为024MHz,C1、C2常用30pF。时钟周期:振荡器输出的时钟脉冲频率的倒数。为单片机中最小、最基本的时间单位。状态周期:振荡信号经2分频后获得的信号周期,称S,显然,S为时钟周期的2倍。机器周期:12个时钟周期为一个机器周期,对应计算机执行一个基本操作所需的时间。指令周期:执行一条指令所需的时间,至少包含一个机器周期。在MCS51中,每个机器周期由六个状态周期构成,每个状态周期划分为2个节拍,由P1、P2两个相位。所以每个机器

21、周期可依次表示为:S1P1、S1P2、S2P1、S2P2、S3P1、S3P2S6P1、S6P2共12个相位,对应12个振荡周期(画出第一行)。ALE地址锁存允许信号在非访问外部存储器期间,每个机器周期出现两次,一次出现在S1P2、S2P1,另一次出现在S4P2、S5P1期间(画第二行)一般情况下,算术逻辑操作发生在P1期间,内部寄存器间传送发生在P2期间。在51系列单片机中,指令经过汇编后一般可占用单字节、双字节和三字节。CPU 执行单字节、双字节指令时,可能需要单周期、双周期和三周期;CPU执行三字节指令时,需要两个机器周期,为双周期指令。下面大概介绍,不必死记,了解即可 单字节 S1P2读

22、入操作码,S4P2读入单是舍去PC不计数(画第三行)单周期 双字节 每个机器周期的S1P2、S4P2读入操作码 (画第四行) 单字节 两机器周期读四个,但是后三个舍去,S1P2、S4P2S1P2、S4P2(画第五行)双周期 双字节 第一机器周期的S1P2、S4P2读完,后两次舍去 三字节 S1P2、S4P2、S1P2读完,S4P2舍去特殊:MOVX指令 单字节双周期指令对外部RAM访问读写数据,此时在S1P2读入操作码后,S4P2读入下一个操作码丢掉,在S5相位开始,此时ALE为高电平,将地址锁存,接着开始读写数据,第二个机器周期则不进行取址操作(如图下所示)。89C51的指令系统基本内容:指

23、令基本概念;指令格式;寻址方式;指令系统重点内容:89C51单片机的寻址方式和指令系统基本要求:了解单片机常用的编程语言;掌握89C51的指令格式;掌握并熟练应用7种寻址方式;能熟练使用每一条指令。难 点:寻址方式,控制转移指令中相对地址计算,堆栈操作以及简单程序阅读2.1 指令格式及其操作寻址方式一、指令格式机器指令:用2进制数0、1表示的命令代码。常以16进制表示。机器语言:由机器指令描述的程序语言。用二进制代码表示,不便于记忆,编程难,不易读助记符指令:用助记符、符号和数字代替机器指令形成的符号指令。助记符语言:由助记符指令形成的程序语言,又称汇编语言。可读性好,易于掌握,但机器不可以直

24、接执行,必须经过汇编软件编译后才能执行。如汇编语言机器语言MOV A,#0AHADD A,#14H74 0A24 14单片机汇编语言指令格式:标号: 操作码 操作数(目的操作数,源操作数) ;注释指令格式与微机原理中的相同:标号:用来指定该条指令所在的地址,可以直接用此标号来代替该地址,标号与操作数之间用若干空格分开。 其他项作简要介绍。二、寻址方式存储器拥有大量的字节存储单元,每个单元赋予一个号码,即地址码,用来确定指令代码或数据存放的具体位置。而单片机的存储器RAM中一部分是按位寻址的,每个位也赋予一个地址即位地址。在数据存储器中,数据往往是任意存放的,这就存在如何尽快找到这个操作数的地址

25、单元的问题。在程序存储器中,转移指令和调用指令也要以最快的速度找到目标地址的问题,即寻址问题。在89C51单片机中,设有7种基本寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器寻址,相对寻址和位寻址。1) 寄存器寻址方式对指定的工作寄存器R0R7或专用寄存器A,B,DPTR等进行操作。其中对哪一组R0R7寻址由PSW中的RS1、RS0决定。特点:被寻址寄存器的内容就是操作数。例:MOV A,R3;将R3的内容送入A。2) 直接寻址方式 特点:由指令直接给出操作数的地址(片内RAM)。 内容:RAM中的低128字节,SFR 例:MOV A,direct; MOV

26、direct,direct ;(与微原区分开) MOV 65H,A ;将A 的内容送RAM的65H单元。* 对于特殊功能寄存器SFR,既可以使用它们的地址也可以使用它们的名字MOV A,P1 = MOV A,90H 3)立即寻址方式特点:8位或者16位操作数由指令直接给出。例 :MOV A,#62H ;#为立即数指示符号 注意区别和MOV A,62H4)寄存器间接寻址特点:指令指出的寄存器的内容为地址,该地址内的单元内容为操作数。MCS-51规定:R0,R1做间接寻址寄存器访问内外RAM中的256 B; DPTR做间接寻址寄存器访问外部RAM中的64K字节单元。例:MOV A,R0 ;若R0=

27、10H,内部RAM 10H单元内容送A MOVX A,R0 ;若R0=10H,外部RAM 10H单元内容送AMOVX A,DPTR ;5)基址加变址寻址特点:以程序计数器PC或数据指针DPTR为基址寄存器,以累加器A为变址寄存器,以两者之和为有效地址进行寻址。多用于查表例:MOVC A,A+PCMOVC A,A+DPTR ;两者区别?JMP A+DPTR ;用于多目标转移6)相对寻址方式特点:以当前PC为基准,加上指令中给出的相对偏移量形成新的有效地址,REL为带符号的8位二进制数127128。目的地址原地址2(相对转移指令的字节数)REL例:JC REL;设CY=1,REL=75H,PC=1

28、002H;则执行后系统从1077H处执行程序。7)位寻址方式单片机中两个位寻址区:片内RAM中的20H2FH的16个单元中的128个位寻址位字节地址能被8整除的特殊功能寄存器两种寻址方法:直接使用位地址。如:MOV C,BIT对于SFR,可以直接使用寄存器名称位。如:CPL PSW.32.2 89C51的指令系统一、数据传送类指令格式: MOV ,功能:将源数内容送入目数,源数内容不变。1)以A为目的的传送指令例:MOV A,Rn ;将Rn内容送累加器A (A)(Rn);Rn指工作寄存器组中的R0R7,具体用哪一组由PSW 中RS1、RS0决定。MOV A,Ri ;以Ri的内容为地址,内部RA

29、M中此地址单元内容送累加器A,Ri为8位Reg,可对整个内部RAM(0255)访问。注意:Ri表示当前工作寄存器组中的R0,R1 ,不能是其他寄存器。MOV A,DIRECT ;DIRECT为直接地址,8位,可对内部RAM 0127单元 ;(A)(DIRECT) 128255的某些单元进行访问注意:DIRECT也可以是其他寄存器。如MOV A, B , MOV A,P1MOV A,#DATA ;(A) 立即数DATA DATA为不带符号的8位二进制数2)以寄存器Rn为目的的传送指令MOV Rn, AMOV Rn, DIRECTMOV Rn, #DATA3) 以direct为目的操作数MOVdi

30、rect,Rn MOVdirect,AMOVdirect1,direct2 ;(direct1)(direct2)MOVdirect, Ri ;(direct)(Ri)MOVdirect,#DATA4) 以Ri为目的操作数MOVRi,directMOVRi, A ;(Ri)(A)MOVRi, #data ;(Ri) data5) 16位数据传送指令MOV DPTR, #data16;高8位送DPH,低8位送DPL.仅此一条指令6)查表指令MOVC A,A+DPTR 可访问整个ROM的64KB空间,表格可放在任何位置MOVC A,A+PC 表格只能存放在查表指令以下的256个单元内DPTR与PC

31、为址REG, A为变址REG, 两者之和为地址,此地址单元内容送AINC A04HMOVC83HRET22H0的ASCII码30H1的ASCII码31H9的ASCII码39H例:累加器A中为一个BCD数9,现查表求其ASCII码。 MOV A,#9H INC AMOVC A,A+PCRETTAB:DB 30H,31H,32H DB 33H,34H,35H,36H,37H,38H,39H 为什么要有INC A? 使PC的值为表格的首地址,因RET占一字节 或用MOV A,#9HMOV DPTR,TABMOVC A,A+DPTR TAB:30H,31H,39H 好处:不必考虑表格地址位置,而用PC

32、时,表格距当前指令应在0255范围内7)累加器A与外部RAM传送指令MOVX A,Ri MOVX Ri,A ;Ri中为8位地址,对外部RAM 0255单元MOVX A,DPTR MOVX DPTR,A;DPTR中为内部地址,对外部064K所以,对外部RAM中0255单元可用Ri或DPTR做间址寄存器但当大于255时,用DPTR8)栈操作指令PUSH DIRECT (SP)(SP)+1 (SP)(DIRECT)POP DIRECT (SP)DIRECT (SP)-1(SP)注意:与微机原理中操作不同例 PUSH DPL ;设执行前DPL的内容为23H,SP的内容为10H,;执行后 SP=11H,

33、10H内容为23h9)交换指令字节交换指令XCH A,RnXCH A,DIRECTXCH A,Ri将第二操做数的寻址内容与A中内容互换,相当于微愿中XCHG指令。半字节交换指令XCHD A,Ri ;将Ri间接寻址单元内容与A中的低4位交换,高四位不变。注:只此一条指令,不能用XCHG A,B 等其他格式累加器A高四位低四位互换SWAP A ;将A中的高四位与低四位交换,相当于循环移动四位。例 设(A)=50H,(R0)=5CH,内部RAM中的50h内容为0BHXCH A,R0 ;(R0)=50H,A=5CHXCHD,A,R0 ;(A)=5BH,(50H)=0CHSWAP A ;(A)=0B5H

34、二、算术数运算指令加法类指令 1)加法指令(1) ADD A,Rn ADD A,DIRECT ADD A,Ri ADD A,#DATA ADDC A,Rn ADDC A,DIRECT ADDC A,Ri ADDC A,#DATA与微原中的一样,讲略。(2)加1指令 INC A,INC Rn,INC DIRECT,INC Ri,INC,DPTRADD与ADDC指令影响标志位 C AC P OV微原中已讲过,C是无符号数溢出标志(0255),OV是有符号数溢出(-128127) C:第7位产生进位C=1 AC:第3位产生进位AC=1 OV:第6位第7位只有一位产生进位OV=1例:(A)=OC3H,

35、(Ro)=OAAH,(C)=1 执行ADDC A,R01100 0011+ (C) 0000 0001 1100 0100 R0 1010 1010 1 0110 1110 C=1,AC=0,OR=1而INC指令不影响标志位如:(A)=0FFH,INC A后,A为00H,而C不变。2)二十进制调整指令(BCD调整) DA A ;将A中高4位低4位分别判断,若有4位大于9,则将此4位加6,即将A中值转成BCD码。使用条件:(1)只能紧跟在加法指令(ADD/ADDC)后进行(2)两个加数必须已经是BCD码(3)只能对累加器A中结果进行调整2减法类指令带借位减法:SUBB A,Rn SUBB A,D

36、IRECTSUBB A,Ri SUBB A,#DATA 影响标志位OV C AC P 同加法减1指令 DEC Rn DEC Ri DEC DIRECT DEC A不影响标志位3乘法指令 A 乘积的低八位MUL AB (A)*(B)B 乘积的高八位1)若乘积大于256,OV=1;否则OV=0;2)CY总是清“0”。4除法指令DIV AB A 商 A中值除以B中值,商在A,余数在B, (A)/(B) B 余数C总为0,若除数B为0时,此时OV=0。思考题:减法时没有BCD码调整指令,该如何实现BCD码减法?方法:被减数减数 =(9AH-减数)+被减数,然后DA例:R0中为BCD码11,R1中为BC

37、D码2,试求二者之差。(R0) 00010001 程序:CLD C ;带借位减法,清C (R1) 00000010 MOV A,#9AH 00001101 13错误 SUBB A,R1 ADD A,R0 DA A9AH 1001 1000 CLR C R1 0000 0010 1001 1000 +R0 0001 0001 1010 1001DA 0101 0000 0000 1001 9正确三、逻辑运算类指令单操作数逻辑运算指令 累加器A清0指令CLR A ;不影响标志位 结果:(A)=00H累加器A取反指令CPL A ;对A的内容逐位取反 (A)=()3)累加器A循环左移指令RL A 循环

38、左移一位操作: a7a0 不影响标志位。例:设(A)=0C5H,执行RL A后,(A)=8BH4)累加器A带进位循环左移指令RLC A ; A最高位进入C,C移入A的最低位。操作: C A7A0 例:设(A)=45H,(C)=1,执行RLC A后1 01000101 0 10001001 (A)=8BH,(C)=0累加器A循环右移指令RR A累加A带进位循环右移指令RRC A C a7a0 双操作数逻辑运算类指令逻辑与指令ANL A,Rn ANL A,DIRECT ANL A,Ri ANL A,#DATAANL DIRECT,A ANL DIRECT,#DATA操作:将源操作数与目的操作数进行

39、与操作,结果放在目的操作数。用途:常用来屏蔽某些不用位,方法:将该位用0相与。例: ANL A,#01000100B (A) 1100 0011结果:除第二位,第6位不变外,其它位为0。 ANL 0100 0100 0100 0000 2) 逻辑或操作ORL A,Rn ORL A,DIRECT ORL A,Ri ORL A,#DATAORL DIRECT,A ORL DIRECT,#DATA 操作:将源操作数与目的操作数进行或操作,结果放在目的操作数。用途:常用来将某些位置1方法:将该位用0相或1100 0011ORL0100 0100 1100 0111 例:ORL A,#01000100B

40、 结果:将第二位第六位置1。3)逻辑”异或”操作。XRL A,Rn XRL A,DIRECT XRL A,Ri XRL A,DATAXRL DIRECT,A XRL DIRECT,#DATA用途:常用来对某操作数的某些位取反。方法:将该位与1相异或XRL A,#0100 0100B 1100 0011 XRL 0100 0100 1000 0111 取反此指令也可判断两数是否相等。 XRL A,Rn, 若相等,则结果为0,不等则结果不为0 四、 控制转移类指令为适应复杂测控系统需要无条件转移指令子程序调用类指令(1)绝对调用指令格式 ACALL ADDR11 操作:(PC)(PC)+2(SP)

41、(SP)+1(SP)(PC0-PC7)(SP)(SP)+1(SP)(PC8-PC15)PC0PC11ADDR11 11位地址,被调子程序应在2K范围内PC11PC15不变例:设SP=07H,符号地址PROG1对应的ROM地址为0345H,在PC=0123H处执行ACALL PROG1。结果:(PC)+2=0125H 入栈(08H)=25H (09H)=01H0345H送入PC,程序转向0345H,开始执行程序。(2)长调用指令格式:LCALL ADD16操作:(PC)(PC)+3(SP)(PC0PC15)(SP)(SP)+1(SP)(PC0PC7)(SP)(SP)+1(SP)(PC8-PC15)PC0PC15ADDR11(3)返回类指令 格式:RET 操作:PC8-PC15((SP))(SP)(SP)-1PC0-7((SP))SP(SP)-1RETI 中断返回指令,操作与RET相同,但同时也清除中断服务标志。转移类指令绝对无条件转移指令AJMP ADD11(PC)(PC)+2 PC0PC10ADD11 PC11PC15不变长转移指令LJMP ADD16 (PC)(PC)+3 PC0PC15ADD16 对转移指令SJMP REL(PC)(PC)+2 (PC)(PC)+REL REL是8位有符号数与前两者区别:SJM

温馨提示

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

最新文档

评论

0/150

提交评论