《单片机原理》第二章.ppt
《《单片机原理》第二章.ppt》由会员分享,可在线阅读,更多相关《《单片机原理》第二章.ppt(159页珍藏版)》请在三一办公上搜索。
1、第2章 MCS-51指令系统与汇编语言程序设计,2.1 概述2.2 寻址方式2.3 MCS-51指令系统2.4 汇编语言程序设计2.5 高级语言Keil C51简介,2.1 概述,单片机程序设计语言的种类 汇编语言指令格式及常用伪指令 MCS-51指令的分类 MCS-51指令中常用的符号,2.1 概述,单片机程序设计语言的种类,按照语言的结构及其功能可以分为三种:,(1)机器语言(Machine Language)直接用机器码(0、1代码)编写程序、能够为计算机直接执行的机器级语言。机器码是一串由二进制代码“0”和“1”组成的二进制数据,其执行速度快,但是可读性极差。机器语言一般只在简单的开发
2、装置中使用,程序的设计、输入、修改和调试都很麻烦。,2.1 概述,(2)汇编语言(Assembly Language)指用指令助记符代替机器码的编程语言。汇编语言程序结构简单,执行速度快,程序易优化,编译后占用存储空间小,是单片机应用系统开发中最常用的程序设计语言。汇编语言的缺点是可读性比较差,只有熟悉单片机的指令系统,并具有一定的程序设计经验,才能研制出功能复杂的应用程序。,单片机程序设计语言的种类,按照语言的结构及其功能可以分为三种:,2.1 概述,(3)高级语言(High-Level Language)在汇编语言的基础上用接近人的自然语言的语句来编写程序,例如PL/M-51、C51等,程
3、序可读性强,通用性好,适用于不熟悉单片机指令系统的的用户。高级语言是面向过程而独立于机器的通用语言。缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这一点在存储器有限的单片机应用系统中没有优势。,单片机的汇编语言不但不会被高级语言完全取代,甚至还将继续占据重要地位。,2.1,单片机程序设计语言的种类,按照语言的结构及其功能可以分为三种:,2.1 概述,汇编语言指令格式及常用伪指令,1、常用单位与术语 位(bit):位是计算机所能表示的最小的、最基 本的数据单位,通常是指一个二进制 位。字节(Byte):一个连续的8位二进制数码称为 一个字节,即1Byte=8bit。字(Word):通常
4、由16位二进制数码组成,即 1Word=2Byte。字长:字长是指计算机一次处理二进制数码位的 多少。MCS-51型单片机是8位机,即它的字长为8位。,2、汇编语言指令格式,标号:操作码 操作数,操作数;注释,2.1 概述,汇编语言指令格式及常用伪指令,其中:项是可选项。标号:指本条指令起始地址的符号,也称为指令的符号地 址。代表该条指令在程序编译时的具体地址。操作码:又称助记符,它是由对应的英文缩写构成的,是 指令语句的关键。它规定了指令具体的操作功 能,是一条指令中不可缺少的内容。操作数:它既可以是一个具体的数据,也可以是存放数据 的地址。,Start:MOV A,#0FH;将循环次数初值
5、送累加器,3、常用伪指令,2.1 概述,汇编语言指令格式及常用伪指令,伪指令(也称为汇编程序的控制命令)是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制信息,不产生可执行的目标代码,是CPU不能执行的指令。,(2)结束汇编伪指令END 格式:标号:END 表达式 功能:放在源程序的末尾,表明源程序的汇编到此结束。,2.1 概述,(1)定位伪指令ORG 格式:ORG n 其中:n为绝对地址,可以是十六进制数、标号或表达式。,例 ORG1000H START:MOV A,#20H MOV R0,#30H
6、,MOVX DPTR,A END,3、常用伪指令,汇编语言指令格式及常用伪指令,(3)赋值伪指令EQU 格式:字符名称x EQU 赋值项n 功能:将赋值项n的值赋予字符名称x。,2.1 概述,ORG 1000HLEDMAP:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h;,LEDBuf EQU 60h;显示缓冲,(4)定义字节伪指令DB 格式:标号:DB x1,x2,xn 功能:将8位数据(或8位数据组)x1,x2,xn顺序存放 在从当前程序存储器地址开始的存储单元中。,2.1,3、常用伪指令,汇编语言
7、指令格式及常用伪指令,1、按指令字节数分类 单字节指令、双字节指令和三字节指令。,2.1 概述,2.1.3 MCS-51指令的分类,MCS-51指令系统有111条指令,可按下列3种方式分类:,2、按指令执行时间分类 单机器周期指令、双机器周期指令和四机器周期指令。,1、按指令字节数分类,2.1 概述,2、按指令执行时间分类,3、按指令功能分类,2.1,2.1.3 MCS-51指令的分类,MCS-51指令系统有111条指令,可按下列3种方式分类:,2.1.4 指令中的常用符号,Rn(n=07):表示当前工作寄存器R0R7中的任一个。Ri(i=0或1):表示当前寄存器组中用于间址的R0或R1。#d
8、ata:表示8位立即数。#data16:表示16位立即数。direct:表示片内RAM的8位单元地址。addr11:表示11位目的地址,用于ACALL和AJMP指令中。addr16:表示16位目的地址,用于LCALL和LJMP指令中。rel:用补码形式表示的8位二进制地址偏移量,取值范围 为128+127,主要用于相对转移指令。,2.1 概述,bit:表示片内RAM的位寻址区,或者是可以位寻址的 SFR的位地址。A(或ACC)、B:表示累加器、B寄存器。C:表示PSW中的进位标志位Cy。:在间接寻址方式中,是间址寄存器指针的前缀标志。$:表示当前的指令地址。(X):表示由X所指定的某寄存器或某
9、单元中的内容。(X):表示由X间接寻址单元中的内容。,2.1.4 指令中的常用符号,2.1 概述,2.1,寄存器寻址 直接寻址 立即数寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址,2.2 寻址方式,在指令的操作数位置上,用于表征寻找操作数的方法定义为“寻址方式”。正确地理解、掌握寻址方式,是学习、使用指令的关键。在MCS-51单片机中,共使用了以下7种寻址方式,2.2.1 寄存器寻址,指令中含有一个存有操作数的寄存器Rn(n=07),2.2 寻址方式,【特点】寄存器寻址方式的指令大多是单字节指令。寄存 器的3位代码与操作码OP共同占用一个指令字节。,例:MOV A,Rn;将寄存器Rn中的内
10、容送累加器A中 MOV Rn,A;将累加器A中的数据送寄存器Rn,以MOV A,R7为例,使用R7寄存器,所以 r r r=111,即指令的机器码为:0EFH,1 1 1 0 1 r r r,操作码OP,寄存器代码111,E8HEFH,MOV A,Rn,ROM的一个字节,2.2,2.2.2 直接寻址,指令本身直接给出操作数在RAM中存放的地址。,2.2 寻址方式,MOV A,direct;将内存地址direct中的内容送入累加器MOV direct1,direct2;将内存地址direct2的内容送入direct1中,例如:MOV A,30H;将RAM 30H单元数据送累加器A,【特点】直接寻
11、址方式的指令为23字节指令。每个直接地址 自身占用一个指令字节。,n,n+1,30H,累加器A,X,使用直接寻址应注意的两个问题:,1、当地址恰好在SFR区域时,地址也可用寄存器名来表示。,2.2.2 直接寻址,2.2 寻址方式,如:MOV A,80H 可以写成 MOV A,P0 后者用SFR中寄存器的名字取代它的物理地址80H。后者更容易阅读和交流,所以提倡使用SFR中寄存器名称来代替直接地址。,如:MOV A,SBUF;串口数据缓冲器数据送A MOV TH1,#0FEH;为定时器1赋初值,MOV A,00H;将RAM中00H单元数据送累加器AMOV A,R0;将工作寄存器R0的内容送累加器
12、A,返回,2.2.2 直接寻址,2.2 寻址方式,2、当直接地址是在工作寄存器区中时,可以使用两种寻址方式来访问。如:,使用了不同的寻址方式,指令的结构与字节数也不相同。前者是:11100101(0E5H)、00000000(00H)双字节。后者是:11101000(0E8H)单字节;,最好用寄存器寻址方式来访问,类似的还有累加器A:INC A 寄存器寻址方式(单字节);INC ACC 直接寻址方式(双字节);INC 0E0H 直接寻址方式(双字节)。,2.2,2.2.3 立即寻址,指令中直接含有所需要的操作数data。,2.2 寻址方式,MOV A,#data;将8位立即数送累加器A MOV
13、 DPTR,#data16;16位立即数送DPTR寄存器,【特点】立即数寻址的指令长度为2或3个字节。,ROM,DPTR,例:MOV DPTR,#2000H,n,n+1,n+2,注:对于16位立即数指令,汇编时高8位在前,低8位在后。,【注意】MOV A,#30H与 MOV A,30H 两者的区别。,n,n+1,ROM,累加器A,MOV A,#30H,n,n+1,ROM,累加器A,MOV A,30H,30H,RAM,2.2.3 立即寻址,2.2 寻址方式,2.2,2.2.4 寄存器间接寻址,指令中含有保存操作数地址的寄存器(Ri或DPTR)。CPU首先从寄存器中找到操作数地址,然后再从该地址中
14、找到操作数。,2.2 寻址方式,MOV A,Ri;MOVX A,Ri;MOVX DPTR,A,寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)、外部RAM。对于外部低256单元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间址寄存器。,下列的程序正确吗 MOV R1,#80H MOV A,R1,MOV R0,#30H;立即数送R0寄存器 MOV A,R0;从RAM的30H单元取数送累加器A,30H,R0,00H,累加器A,1,2,3,2.2.4 寄存器间接寻址,【注意】MOV A,R0 和 MOV A,R0 指令的区别。,2.2,2.2 寻址方式,MOV A,R0
15、执行过程示意图,指令使用DPTR或PC中的内容作为基地址,再与累加器A的内容相加,其和作为操作数地址。如:MOVC A,A+PC;PC内容为基地址与A的内容相加得 操作数地址,并将此操作数送A MOVC A,A+DPTR;DPTR内容为基地址与A的内容相 加得操作数地址并将此操作数送A,2.2.5 变址寻址,这是访问程序存储器ROM中数据的唯一的寻址方式。,变址寻址方式用于查表操作,而数据表是建立在程序存储器ROM中。,2.2 寻址方式,【例】已知ROM中的0300H-0309H 为09的平方表,编程求 A中数据的平方(设A=02H)。,02H,0300H,0302H,累加器A,DPTR,03
16、00H(DPTR)+02H(A)0302H,MOVC A,A+DPTR,0300H,平方表,ALU,解:MOV DPTR,#0300H;指针DPTR赋表头地址 MOVC A,A+DPTR;从0302H单元取数4送A,ROM,变址寻址,2.2,2.2 寻址方式,相对转移指令使用的一种寻址方式。,2.2.6 相对寻址,SJMP short_lable,2.2 寻址方式,无条件转向短标号short_lable地址 该指令操作码为80H,操作数为偏移量rel(+127-128),它由汇编程序汇编时自动计算填入。计算公式为:rel=short_lable地址-PC值,或:rel=short_lable地
17、址-相对转移指令地址-相对转移指令字节数,即相对转移指令中给出一个转移地址的偏移量rel。在执行中将当前PC值(执行当前指令后的PC值)与偏移量rel(补码)相加,形成实际转移的目标地址 相对寻址方式。,【例】ORG 0100H S1:CLR A MOV R0,#45H SJMP S2 SETB C SETB 00H S2:MOV A,#0FH.,0100H,0106H,0103H,0105H,0108H,Short_lable,PC值,rel值,0105H+03H0108H,2.2 寻址方式,2.2,指令的形式同直接寻址相似,不同的是:指令中的地址是“位地址”,而不是字节地址。MOV C,b
18、it,2.2.7 位寻址,如:MOV C,02H;将位地址为02H中的内容送Cy中类似的还有逻辑运算指令等。,除了RAM中的位寻址区外,大多SFR(地址能够被8整除的)都可以按位寻址,这对编程尤为重要。,2.2 寻址方式,作为嵌入式控制器,CPU更多的是处理“开关量”而不单纯是字节结构的数据。因此MCS-51在指令设计上刻意设计了大量的“布尔操作”即位操作,这为系统应用带来了很大的方便。,MCS-51单片机控制、检测系统,驱动器,电动机,外设1,外设2,状态信号,状态信号,控制信号,2.2.7 位寻址,2.2 寻址方式,【举例】:SETB 90H;将P1口的D0位置1 为了增加程序的可读性,凡
19、在SFR中的位地址都可以使用符号来替代。如本例中,完全可以使用下面的指令格式:SETB P1.0;将P0口的D0位置1又如:SETB EA(SETB 0AFH);开中断 SETB TR0(SETB 8CH);启动定时器 这种指令在编译时,是要先将符号地址进行转换的。,2.2,2.2.7 位寻址,2.2 寻址方式,2.3 MCS-51指令系统,预备知识:WAVE仿真开发软件安装与使用 数据传送指令 算逻运算与移位指令 控制转移和位操作指令,WAVE仿真开发软件把源程序编辑、编译、下载、调试等操作全部集中在一个环境下进行,支持MCS-51、PIC两大系列、不同种类的单片机。具有软件模拟执行功能,除
20、输入、输出操作外,均可在软件模拟环境下完成绝大部分应用程序的调试。,2.3.0 WAVE仿真软件的安装与使用,2.3 MCS-51指令系统,1、WAVE仿真软件功能简介,2.3 MCS-51指令系统,2、WAVE仿真软件的安装,1)从WAVE网站/download.htm(南京伟福实业有限公司)下载WAVE6000 for Windows(支持LAB2000)仿真开发软件(ZIP压缩文件格式),经 ZIP解压后,运行其中的SETUP.EXE文件即可,该安装程序将引导用户完成WAVE 6000仿真开发软件的安装过程。2)从课件邮箱下载应用程序文件“wave6000_G”,双击安装即可。,2.3.
21、0 WAVE仿真软件的安装与使用,1、WAVE仿真软件功能简介,1)安装后,从“WAVE6000_GBIN”子目录下双击wave图标进入界面;,2.3 MCS-51指令系统,3、WAVE仿真软件的使用,2、WAVE仿真软件的安装,2.3.0 WAVE仿真软件的安装与使用,1、WAVE仿真软件功能简介,2)新建一个汇编语言的源程序(如:f1.asm);3)编译、调试。,完成安装后,首次启动看到的界面,2.3.0 WAVE仿真软件的安装与使用,2.3 MCS-51指令系统,2.3,2.3.1 数据传送指令,2.3 MCS-51指令系统,内部数据传送类指令 外部数据传送类指令 堆栈操作指令 数据交换
22、指令,数据传送是编程中使用最多、最主要的操作。在传送过程中,源地址的内容不被改变(COPY)。传送类指令除了以累加器A为目标的传送对PSW的P有影响外,其余的传送类指令对PSW一概无影响。,指令通式:MOV,2.3,特点:单片机内部各单元之间的内部数据传送,指令的源操作数和目的操作数都在单片机内部。,1、立即寻址型传送指令2、直接寻址型传送指令3、寄存器寻址型传送指令4、寄存器间址型传送指令5、内部数据传送类指令的使用,2.3.1.1 内部数据传送指令,2.3,2.3.1 数据传送指令,1、立即寻址型传送指令,【特点】源操作数是立即数,处在指令的第二或第三字 节,所以这类指令都是多字节指令,有
23、如下4条。MOV A,#data;A data(双字节指令)MOV Rn,#data;Rn data(双字节指令)MOV Ri,#data;(Ri)data(双字节指令)MOV direct,#data;direct data(三字节指令),这类指令多用于程序的初始化。如:MOV R0,#20H;R0#20H MOV A,#00H;累加器A清零,2.3.1 数据传送指令,2.3.1.1 内部数据传送指令,【例】已知:R0=20H,试问单片机执行如下指令后,累加器A、R7、20H和21H单元中的内容各是什么。MOV A,#18H MOV R7,#28H MOV R0,#38HMOV 21H,#4
24、8H,2.3.1 数据传送指令,1、立即寻址型传送指令,2.3.1.1 内部数据传送指令,【特点】指令中至少含有一个源操作数或目的操作数的地址。是2个或3个字节的指令格式,其中直接地址在第2或第3个字节上。这类指令有如下5条:,2、直接寻址型传送指令,2.3.1.1 内部数据传送指令,MOV A,directMOV direct,AMOV Rn,directMOV Ri,directMOV direct2,direct1【注意】direct为内部RAM和SFR的地址,即direct 适用于片内所有的地址。,2.3.1 数据传送指令,MOV A,30H;内存RAM30h单元数据送AMOV 50H
25、,A;A中内容送RAM的50h单元MOV R6,31H;RAM的30h 内容送R6寄存器MOV Ri,30H;RAM30h内容送Ri指定的RAM单元MOV P1,32H;RAM32h内容送P1口(p1:符号地址)MOV 90H,32H;(同上,试比较两种表示方法,一个 指令两种写法),2.3.1 数据传送指令,2、直接寻址型传送指令,2.3.1.1 内部数据传送指令,【特点】指令中含有存放操作数的寄存器名Rn,其中(n0,1,2,3,4,5,6,7)。共有如下4条:MOV A,RnMOV Rn,AMOV direct,Rn MOV Rn,direct,3、寄存器寻址型传送指令,2.3.1.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理 单片机 原理 第二
链接地址:https://www.31ppt.com/p-5897193.html