单片机应用系统设计课件第5章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

80C51单片机软件基础知识本章小结5.180C51单片机指令系统概述5.280C51单片机寻址方式5.380C51单片机指令系统5.480C51汇编语言程序设计5.580C51单片机C51程序设计语言5.6C51的运算符和表达式5.7C51的库函数5.8C51的应用技巧80C51单片机软件基础知识单片机应用系统也是由硬件和软件组成的,这是与一般的数字逻辑电路系统的不同之处。机器语言是计算机唯一能识别的语言,用汇编语言和高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(称为目标程序),计算机才能识别。汇编语言是能够利用单片机所有特性直接控制硬件的唯一语言,对于一些需要直接控制硬件的场合,汇编语言是必不可少的。但汇编语言不是一种结构化的程序设计语言,对于较复杂的单片机应用系统,它的编写效率很低。80C51单片机软件基础知识为了提高软件的开发效率,许多软件公司致力于单片机高级语言C编译器的开发研究,许多型号的单片机内部ROM已经达到64KB甚至更大,且具备在系统编程(ISP,InSystemProgrammable)功能,进一步推动了C语言在单片机应用系统开发中的应用。尽管C语言是一种强大而方便的开发工具,但开发人员要达到用C语言快速编出高效且易于维护的单片机系统应用程序,首先必须对C语言有较透彻的掌握,其次还应该对实际单片机硬件系统有深入的理解。80C51单片机软件基础知识5.180C51单片机指令系统概述实际上汇编语言源程序是由一条条指令(Instruction)组成的,所以首先介绍指令和指令系统。80C51单片机软件基础知识5.1.1指令的概念指令是指挥计算机执行某种操作的命令。一条指令可用两种语言形式表示,即机器语言和汇编语言指令。机器语言指令用二进制代码表示,称指令码,又称机器码,计算机能直接识别并加以分析和执行。汇编语言指令用助记符表示,称汇编语言指令,它便于程序员编写和阅读程序,但不能为计算机识别和执行,必须翻译成机器语言指令。把用汇编语言编写的源程序翻译成机器语言指令的过程称为汇编。这种翻译工具称为汇编程序或汇编器。80C51单片机软件基础知识5.1.2指令系统说明一台计算机所有指令的集合,称为该计算机的指令系统,它是表征计算机性能的重要标志。每台计算机都有它自己特有的指令系统。80C51单片机软件基础知识要让计算机做事,就得向计算机发出指令。但计算机只能懂得数字,如对80C51,要将数据5B送到P1口,必须在ROM中某一位置(如1000H)写上这样的机器码:1000H75905B该指令中75表示操作码,90和5B表示操作数,该机器码的意思是将立即数5B送到P1口,P1口锁存器的内部RAM地址为90。指令的第一种格式就是机器码指令格式,也就是说是数字的形式。80C51单片机软件基础知识但这种形式非常难记,于是有另一种格式,助记符格式如下:MOVP1,#5BH用助记符表示指令的格式称为汇编指令格式。80C51单片机软件基础知识注释不参加汇编,不影响汇编结果,应该养成编写程序时加上注释的良好习惯。例如,一条传送指令的书写格式为:MOVA,38H;(38H)→A80C51汇编语言典型的指令格式为:操作码[操作数];[注释]80C51单片机软件基础知识80C51汇编语言需用40多种助记符表征30多种指令功能。由于功能助记符需定义诸如内部数据存储器、程序存储器、外部数据存储器等,同一种功能需用几个助记符表示(如数据传送指令MOV、MOVX、MOVC等)。通过这些助记符,与指令中的源地址、目的地址组合成80C51的111条指令。80C51单片机软件基础知识5.1.380C51指令系统助记符80C51单片机指令系统操作码助记符按功能可分为五大类1)数据传送类指令(7种助记符)4)控制转移类指令(18种助记符)5)位操作指令(1种助记符)2)算术运算类指令(8种助记符)3)逻辑运算类指令(10种助记符)详见主教材114页80C51单片机软件基础知识5.1.4指令系统中的特殊符号Rn:当前选中的寄存器区的8个工作寄存器R0~R7(n=0~7)。Ri:当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)。80C51单片机软件基础知识Direct:内部数据存储单元的8位地址。包含0~127内部存储单元地址和128~255部分存储单元特殊功能寄存器地址。#data:指令中的8位常数。#data16:指令中的16位常数。addr16:用于LCALL和LJMP指令中的16位目的地址,目的地址可指向64KB程序存储器空间。addr11:用于ACALL和AJMP指令中的11位目的地址,目的地址必须放在与下条指令第一个字节同一个2KB程序存储器的空间之中。5.1.4指令系统中的特殊符号(续)80C51单片机软件基础知识rel:8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节位于下条指令的第一个字节开始的-128~+127范围内。@:间接寄存器寻址或基址寄存器的前缀。/:为操作的前缀,声明对该位取反。DPTR:数据指针。Bit:内部RAM和特殊功能寄存器的直接寻址位。5.1.4指令系统中的特殊符号(续)80C51单片机软件基础知识A:累加器ACC。B:特殊功能寄存器B,用于乘法和除法指令中。C:进位标志位。(x):某地址单元中的内容。((x)):由(x)寻址的单元中的内容。→:表示数据的传送方向。:表示数据交换。5.1.4指令系统中的特殊符号(续)80C51单片机软件基础知识5.280C51单片机寻址方式80C51单片机共有7种寻址方式:5.2.1寄存器寻址方式寄存器寻址是对由指令选定的工作寄存器(R0~R7)进行读/写,由指令操作码字节的最低3位指明所寻址的工作寄存器。MOVA,R2其机器码的二进制数为EA(11101010),其最低3位(010)即为工作寄存器R2的地址。80C51单片机软件基础知识5.2.2直接寻址方式直接寻址方式是由指令直接给出操作数地址。直接寻址方式可访问三种地址空间:●特殊功能寄存器地址空间,这是唯一能寻址特殊功能寄存器的寻址方式。●内部数据存储器RAM的00~7F地址空间。●特定的位地址空间。E562MOVA,62H80C51单片机软件基础知识5.2.3寄存器间接寻址方式寄存器间接寻址方式以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。寄存器间接寻址的存储器空间包括内部数据RAM和外部数据RAM。内部数据RAM共有128B(52子系列有256B),因此用1字节的R0或R1可寻址整个空间。MOVA,@R080C51单片机软件基础知识外部数据RAM最大可达64KB,仅用R0或R1无法寻址整个空间。为此,在80C51单片机指令中,当用R0或R1对外部数据RAM作间接寻址时,由P2端口提供高8位外部RAM地址,由R0或R1提供低8位地址。MOVXA,@R180C51单片机软件基础知识对外部数据RAM的第二种寻址方式是用16位的DPTR作为寄存器间接寻址。如:MOVXA,@DPTR是把DPTR所指向的片外RAM单元中的内容送到A中。80C51单片机软件基础知识寄存器间接寻址的其他例子如下:MOV@R0,A;A内部RAM中以R0为地址的单元MOVXA,@R1;外部RAM中地址为P2R1的单元内容AMOVX@DPTR,A;A外部RAM中以DPTR为地址的单元PUSHACC;SP+1SP,ACC以SP为地址的内部RAM单元POP20H;以SP为地址的内部RAM中的内容20H内部RAM;单元,SP-1SP80C51单片机软件基础知识5.2.4立即寻址方式立即寻址方式由指令直接给出操作数寻址。通常紧跟指令操作码之后的一个或两个字节数,就是寻址所需的操作数。这类指令大都是2B指令,如7462MOVA,#62H;62HA,“#”为立即数指示符号80C51单片机软件基础知识仅有一条是3B指令。它提供2B的立即数,如:902CA5MOVDPTR,#2CA5H;2CA5HDPTR80C51单片机软件基础知识5.2.5变址间接寻址方式基址寄存器加变址寄存器间接寻址方式,是80C51指令集所独有的,它是以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这二者内容之和为有效地址。JMP@A+DPTRMOVCA,@A+PCMOVCA,@A+DPTR这种寻址方式特别适用于查表。DPTR为16位字宽,可指向64KB的任何单元;@A+PC可指向以PC当前值为起始地址的256B单元80C51单片机软件基础知识5.2.6相对寻址方式相对寻址方式以PC的当前值为基准,加上指令中给出的相对偏移量(rel)形成有效转移地址。相对偏移量是一个带符号的8位二进制数,常以补码的形式出现。JCrel;设rel=75H,Cy=180C51单片机软件基础知识5.2.7位寻址方式位寻址方式对位地址中的内容作位操作的寻址。由于单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址(两者统一编址,地址空间为00H~FFH),因此位寻址只能对有位地址的这两个空间做寻址操作。位寻址是一种直接寻址方式,由指令给出直接位地址。但与直接寻址不同之处在于,位寻址只给出位地址,而不是字节地址。SETB20H;120H位MOV32H,C;进位位C32H位ORLC,5AH;C|5AH位C80C51单片机软件基础知识表5.180C51操作数寻址方式和相应寻址空间寻址方式寻址范围寄存器寻址R0~R7ACC、B、CY(位)、DPTR(双字节)、AB(双字节)直接寻址内部RAM的低128B特殊功能寄存器内部RAM中20H~2FH的128位专用寄存器中的128个可寻址位寄存器间接寻址内部数据存储器RAM(@R0、@R1、@SP)内部数据存储单元的低4位(@R0、@R1)外部数据存储器(@R0、@R1、DPTR)立即寻址程序存储器(操作码常数)变址寻址程序存储器(@DPTR+A、@PC+A)80C51单片机软件基础知识5.380C51单片机指令系统5.3.1数据传送类指令1.内部数据传送指令内部数据传送是指在工作寄存器R0~R7、内部数据存储器RAM、累加器A、16位数据指针DPTR、内部特殊功能寄存器SFR之间的数据传送。共有18条指令。详见主教材121-123页。80C51单片机软件基础知识2.外部数据传送指令外部数据传送是指片外数据RAM和累加器A之间的相互数据传送。片外数据存储器只能使用寄存器间接寻址方式,有4条指令,详见主教材123-124页。80C51单片机软件基础知识3.程序存储器数据传送指令(查表指令)由于对程序存储器只能读而不能写,因此其数据传送是单向的,即从程序存储器读取数据,且只能向累加器A传送。这类指令共有2条,详见主教材124页。4.交换指令数据交换的传送操作是指两个数据空间的数据交换操作。有全交换XCH、半交换XCHD和自交换SWAP,共5条指令,详见主教材125页。数据传送类指令一览表见主教材125页表5.280C51单片机软件基础知识表5.2数据传送类指令一览表指令助记符功能简述字节数振荡器周期数MOVA,Rn寄存器送累加器112MOVRn,A累加器送寄存器112MOVA,@Ri内部RAM送累加器112MOV@Ri,A累加器送内部RAM112MOVA,#data立即数送累加器212MOVA,direct直接寻址字节送累加器212MOVdirect,A累加器送直接寻址字节212MOVRn,#data立即数送寄存器212MOVdirect,#data立即数送直接寻址字节324MOV@Ri,#data立即数送内部RAM21280C51单片机软件基础知识MOVdirect,Rn寄存器送直接寻址字节224MOVRn,direct直接寻址字节送寄存器224MOVdirect,@Ri内部RAM送直接寻址字节224MOV@Ri,direct直接寻址字节送内部RAM224MOVdirect,direct直接寻址字节送直接寻址字节324MOVDPTR,#data1616位立即

1 / 126
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功