(单片机应用实例开发)实例二单片机的基本结构及指令系统

上传人:e****s 文档编号:240778102 上传时间:2024-05-07 格式:PPT 页数:249 大小:3.32MB
返回 下载 相关 举报
(单片机应用实例开发)实例二单片机的基本结构及指令系统_第1页
第1页 / 共249页
(单片机应用实例开发)实例二单片机的基本结构及指令系统_第2页
第2页 / 共249页
(单片机应用实例开发)实例二单片机的基本结构及指令系统_第3页
第3页 / 共249页
点击查看更多>>
资源描述
实例二 单片机的基本结构及指令系统 2.1 单个发光二极管的点亮 2.2 单个发光二极管的闪烁 2.3 单片机端口输出方波 2.4 习题 实例二实例二 单片机的根本结构及指令系统单片机的根本结构及指令系统 实例二 单片机的基本结构及指令系统 学习目标 理解单个发光二极管控制电路的构成、工作原理和电路中各元器件的作用,并对电路进行分析和计算。理解51单片机最小系统和I/O口的内部结构,并正确使用51单片机I/O口资源。正确使用MedWin软件的新建文件、保存、编辑程序、编译、单步调试、生成代码等功能。正确理解程序设计框架、三种根本结构,掌握ORG、END、BIT等伪指令的使用方法。实例二 单片机的基本结构及指令系统 正确使用MOV传送指令、JB/JNB等位操作指令和LJMP/SJMP/AJMP等跳转指令。正确使用Proteus仿真软件调试单个发光二极管的控制电路。设计和制作单个发光二极管控制系统,对电路中的故障现象进行分析判断并加以解决,通过调试得到正确结果。实例二 单片机的基本结构及指令系统 工作任务 测试单个发光二极管控制电路并对结果进行描述。设计、制作与调试单个发光二极管控制系统。撰写设计文档与测试报告。通过实例一的学习,我们了解了单片机是什么以及使用它的根本方法,但是单片机的资源非常多,用途很广,利用它可以完成的工作也非常多,为了能够更好地学会怎样使用单片机,我们先从它的外围开始学习。实例二 单片机的基本结构及指令系统 2.1 单个发光二极管的点亮单个发光二极管的点亮学习目标学习目标 理解单个发光二极管控制电路的构成、工作原理和电路中各元器件的作用,并能对电路进行分析和计算。理解51单片机最小系统和I/O口的内部结构,并正确使用51单片机I/O口资源。理解ORG、END、BIT等伪指令的含义并掌握其使用方法。掌握位寻址方式,正确使用MOV传送指令。工作任务工作任务 测试单个发光二极管控制电路并对结果进行描述。实例二 单片机的基本结构及指令系统 2.1.1 数制与编码单片机内部采用的数据系统和计算机的一样,都是二进制,因此,经由单片机计算与处理的数值、字母、符号等都必须采用二进制代码表示,而我们日常所熟悉的是十进制数,要想和单片机沟通,就必须用它能够理解的“话,所以我们首先要弄清楚它们之间的联系,才能更好地应用。注意:如果你已经掌握了计算机根底知识,那么你可以跳过这一节,直接学习下一节的内容。实例二 单片机的基本结构及指令系统 1数制数制即进位计数制,常用的数制有二进制、十进制和十六进制。在书写中为了以示区分,通常后缀用不同的字母来代表不同的进制,D(Decimal)代表十进制(可省略),B(Binary)代表二进制,H(Hexadecimal)代表十六进制。1)十进制十进制数的两个根本特点如下:(1)基数为10,每一位数是09这十个数码中的一个。(2)逢十进一,借一当十。实例二 单片机的基本结构及指令系统 任意一个十进制数的按权展开式为例如,十进制数326.75按权展开为实例二 单片机的基本结构及指令系统 2)二进制二进制数的两个根本特点如下:(1)基数为2,每一位数只能是0和1这两个数码中的一个。(2)逢二进一,借一当二。实例二 单片机的基本结构及指令系统 任意一个二进制数的按权展开式为例如,二进制数1101.01B按权展开为实例二 单片机的基本结构及指令系统 3)十六进制十六进制数的两个根本特点如下:(1)基数为16,每一位数是09、AF这十六个数码中的一个。(2)逢十六进一,借一当十六。十六进制数中,A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。实例二 单片机的基本结构及指令系统 任意一个十六进制数的按权展开式为例如,十六进制数4B3.2EH按权展开为注意:编写程序代码需使用十六进制数时,如果数的第一个字符是字母,那么字母前必须加上“0,例如0AFH。实例二 单片机的基本结构及指令系统 2数制间的转换数制间的转换1)二进制数、十六进制数转换为十进制数二进制数、十六进制数转换为十进制数的方法很简单,只需将待转换的数按权展开,求出各加权系数的和,即可得到相对应的十进制数。例2-1 将二进制数1100.01B转换成十进制数。解:例2-2 将十六进制数E2.4CH转换成十进制数。解:实例二 单片机的基本结构及指令系统 2)十进制数转换为二进制数、十六进制数十进制数转换为二进制数或十六进制数时,需要将整数局部和小数局部分开进行转换,再将结果组合在一起。其中,整数局部的转换方法是“除基数取余逆序排列,小数局部的转换方法是“乘基数取整顺序排列。下面通过具体数据举例进行说明。实例二 单片机的基本结构及指令系统 例2-3 将十进制数14.375转换成二进制数。解:(1)将整数局部“14用“除2取余逆序排列,即将“14逐次除以2,依次记下余数,直至商为0。其中,第一次除得的余数为二进制数整数局部的最低位,最后一次除得的余数为二进制数整数局部的最高位。得到,14=1110B。实例二 单片机的基本结构及指令系统(2)将小数局部“0.375用“乘2取整顺序排列,即将“0.375逐次乘以2(每次都是小数局部进行乘2),依次记下积的整数局部,直至积的小数局部为0。其中,第一次记下的数为二进制数小数局部的最高位,最后一次记下的数为二进制数小数局部的最低位。得到,0.375=0.011B。因此,14.375=1110.011B。实例二 单片机的基本结构及指令系统 例2-4 将十进制数205.296 875转换成十六进制数。解:(1)整数局部转换:得到,205=CDH。实例二 单片机的基本结构及指令系统(2)小数局部转换:得到,0.296 875=0.4CH。因此,205.296 875=CD.4CH。实例二 单片机的基本结构及指令系统 3)二进制数与十六进制数间的相互转换将十六进制数中的每一位数码分别用4位二进制数码表示,即可将该十六进制数转换成二进制数,转换结果中最左侧和最右侧的0可以舍去;相反,将二进制数转换成十六进制数的方法是以小数点为界,分别向左、向右每4位二进制数码用一位十六进制数码表示,缺乏4位的以0补足,其中小数点左侧局部左补0,小数点右侧局部右补0。实例二 单片机的基本结构及指令系统 例2-5 将十六进制数4A2.3CH转换成二进制数。解:因此,4A2.3CH9 9=010010100010.001111B。实例二 单片机的基本结构及指令系统 例2-6 将二进制数11001001011.010111B转换成十六进制数。解:因此,11001001011.010111B=64B.5CH。为了方便读者记忆,特将0F这十六个数码与二进制数、十进制数的对应关系制成表2-1。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 3编码编码我们将字和词语按照一定的规律组合起来就构成了能够随我们将字和词语按照一定的规律组合起来就构成了能够随意表达心意的句子。二进制代码就是单片机的意表达心意的句子。二进制代码就是单片机的“字和字和“词语词语,将它们按一定规律编排,使每组代码具有特定含义,这就,将它们按一定规律编排,使每组代码具有特定含义,这就是单片机中的编码。下面介绍两种计算机中常用的编码。是单片机中的编码。下面介绍两种计算机中常用的编码。实例二 单片机的基本结构及指令系统 1)二十进制编码二-十进制编码又称BCD(Binary Coded Decimal)编码,是指每一位十进制数码均用一组二进制数码来表示的编码。每一位十进制数码(09)可用4位二进制数码表示,也可用8位二进制数码表示(高4位全为0),前者称为压缩BCD码,后者称为非压缩BCD码。对于压缩BCD码,根据编码的选取方法不同,又可分为8421码、5421码、余3码等。其中,最常用的是8421BCD码。表2-2列出了十进制数码与8421BCD码之间的对应关系。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 注意:8421BCD码必须在右下角进行标注,否那么易与二进制数混淆。例如,1000 0011作为8421BCD码的值是83,而作为二进制数时,其值为131。在以后介绍的实例中,我们经常会利用BCD码格式的数据,所以现在一定要弄明白。例2-7 将十进制数47.85转换成8421BCD码,将8421BCD码1001 0111.0010转换成十进制数。解:实例二 单片机的基本结构及指令系统 2)字符编码计算机只能对二进制代码进行处理,因此,在计算机内各类字符(包括字母、数字和符号)也必须用二进制代码来表示。目前采用得最普遍的是美国国家信息交换标准字符码,即ASCII码(American Standard Code for Information Interchange),如表2-3所示。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 ASCII码采用7位二进制代码对字符进行编码,共有128种不同的组合状态,可以对应表示128个字符,其中包括52个大、小写英文字母,10个阿拉伯数字,32个通用控制符号和34个专用符号。例如,阿拉伯数字8用ASCII码表示为0111000B(38H),大写英文字母Z用ASCII码表示为1011010B(5AH)。虽然标准ASCII码是7位编码,但由于计算机根本处理单位为字节(1字节=8位),因此一般仍以一个字节来存放一个ASCII码。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为0(在数据传输时可用作奇偶校验位)。注意:单片机中最小的数据单位是位,8位二进制的数据为一个字节,16位二进制的数据为一个字(两个字节)。实例二 单片机的基本结构及指令系统 4带符号数的表示带符号数的表示计算机中的所有信息都是用二进制代码表示的,有符号数也不例外,通常把数(1个字节)的最高位作为符号位,如图2-1所示。在计算机中,带符号数有三种表示方法:原码、反码和补码。图2-1 符号位指示图实例二 单片机的基本结构及指令系统 1)原码正数的符号位用“0表示,负数的符号位用“1表示,这种表示法称为原码。例如:X1=+18=+0010010,那么X1原=00010010X2=18=0010010,在X2原=100100100的原码是不唯一的:+0原=00000000,0原=10000000。8位二进制原码所能表示的数值范围是:1111111101111111,即127+127。实例二 单片机的基本结构及指令系统 2)反码如果是正数,那么其反码与原码相同;如果是负数,那么其反码除符号位为1外,其他各数位均将1转换为0,0转换为1。例如:+18原=00010010,那么+18反=0001001018原=10010010,那么18反=11101101+0原=00000000,那么+0反=000000000原=10000000,那么0反=111111118位二进制反码所能表示的数值范围是:1000000001111111,即-127+127。实例二 单片机的基本结构及指令系统 3)补码如果是正数,那么其补码与原码、反码相同;如果是负数,那么其补码为反码加1。例如:8位二进制补码所能表示的数值范围是:1000000001111111,即-128+127。实例二 单片机的基本结构及指令系统【练习】工程:数的各进制形式的转换。工程编号:EX2_1。任务要求:将十进制数83分别转换为二进制、十六进制和8421BCD码。转换结果:(83)D=(1010011)B=(53)H=(10000011)BCD实例二 单片机的基本结构及指令系统 2.1.2 单个发光二极管控制电路的设计8051虽然仅是一块芯片,但它包括了构成计算机的根本部件,因此可以说它是一台简单的计算机。图2-2所示为MCS-51单片机的内部结构框图。图中,单片机内部各个局部(CPU、RAM、ROM、I/O接口等)由总线(共分为地址总线AB、数据总线DB、控制总线CB三大类)紧密地联系在一起。这就像我们人体的各个部位都通过神经受大脑的控制,心脏通过周身的血管将新鲜的血液送到身体的各个部位一样。实例二 单片机的基本结构及指令系统 图2-2 MCS-51单片机的内部结构框图实例二 单片机的基本结构及指令系统 1中央处理器中央处理器CPUCPU相当于是单片机的大脑和心脏,负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入/输出功能等操作。1)MCS-51单片机CPU的功能部件MCS-51单片机的CPU主要由运算器和控制器等部件组成,如图2-3所示。实例二 单片机的基本结构及指令系统 图2-3 CPU的组成部件实例二 单片机的基本结构及指令系统(1)运算器。单片机进行的一切算术/逻辑运算均在运算器内部完成。运算器主要包括ALU(算术逻辑部件)、累加器ACC、存放器B、程序状态字存放器PSW、暂存器TMP1和TMP2、处理位操作的布尔处理器等,如图2-3所示。以下对其中三个专用存放器作简单介绍。累加器ACC(Accumulator)。累加器ACC(助记符为A)是一个8位特殊功能存放器,它在CPU中的工作最为频繁。MCS-51指令系统中多数指令的执行都需要用到它。实例二 单片机的基本结构及指令系统 存放器B。存放器B也是一个8位特殊功能存放器,主要用于乘法和除法操作。在乘法指令中,两个操作数分别取自A和B,运算结果的低8位存放在A中,高8位存放在B中。在除法指令中,被除数取自A,除数取自B,运算结果商数存放在A中,余数存放在B中。程序状态字存放器PSW(Program Status Word)。程序状态字存放器PSW共8位,主要用于存放程序运行过程中的有关状态信息。存放器各位的定义如图2-4所示,其中PSW.1是保存位,未使用。实例二 单片机的基本结构及指令系统 图2-4 程序状态字存放器各位的定义实例二 单片机的基本结构及指令系统 CY(PSW.7)进位标志(助记符为C)。此位有两个功能:一是当累加器A的最高位有进位或借位时,硬件自动将该位置位(即CY=1),否那么该位自动清零;二是在位操作中作“位累加器使用。AC(PSW.6)辅助进位标志。进行加、减运算时,当累加器A的低4位数向高4位数有进位或借位时,AC自动置位,否那么自动清零。F0(PSW.5)用户自定义标志。供用户自行定义,用作标记,可用软件使其置位或清零。实例二 单片机的基本结构及指令系统 RS1、RS0(PSW.4、PSW.3)存放器组选择控制位。MCS-51单片机片内RAM的00H1FH共32个字节被均匀地分为四组,每组相当于八个8位存放器,均以R0R7来命名。CPU只要根据用户定义的RS1和RS0即可选中其中一组存放器。对应的编码关系如表2-4所示。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 OV(PS的W.2)溢出标志。带符号数进行加减运算时,假设结果超出了累加器A所能表示的符号数的有效范围(128+127),那么产生溢出,OV自动置1,说明运算结果错误;如果OV自动清零,那么说明没有产生溢出,运算结果正确。进行乘法运算时,假设乘积超过255,那么OV自动置1,说明乘积存放在A和B两个存放器中;假设OV为0,那么说明乘积没有超过255,乘积只存放在累加器A中。实例二 单片机的基本结构及指令系统 进行除法运算时,假设除数为0,那么OV自动置1,运算不被执行,否那么OV清零。P(PSW.0)奇偶校验位。每个指令周期都由硬件来置位或清零,以表示累加器A中“1的位数的奇偶性。假设“1的位数为奇数,那么P自动置位,否那么清零。该标志位常用于检验数据传输的正确性。实例二 单片机的基本结构及指令系统(2)控制器。控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令存放器、指令译码器、程序计数器PC(Program Counter)、数据指针DPTR、堆栈指针SP(Stack Pointer)等。程序计数器PC。程序计数器在物理上是独立的,共16位,用于存放即将执行的指令地址,可对64KB程序存储器直接寻址。PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1,并指向下一条指令。PC本身并没有地址,因而不可寻址,用户无法对它进行读/写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。微型计算机的根本工作过程如下所述。实例二 单片机的基本结构及指令系统 计算机如何按照我们的要求去执行任务呢?叫人做事,只要对他发布命令就可以,要计算机做事情,也得向它发布命令。当然,计算机能听得懂的命令和我们平时理解的命令不同,我们把它们称为指令。一条条指令组合在一起就构成了程序。计算机工作的过程实质上是执行程序的过程。在计算机工作时,CPU根据指令顺序,一条一条地执行,直到遇到结束运行的指令为止,从而完成一项特定的任务。计算机执行指令的过程又分为取指令、分析指令和执行指令三步,如图2-5所示,即从存储器中取出要执行的指令并送到CPU中,分析指令要完成的动作,然后执行操作。实例二 单片机的基本结构及指令系统 图2-5 程序执行过程实例二 单片机的基本结构及指令系统 下面以“MOV A,#60H为例,简要说明指令在CPU中的执行过程,其指令执行示意图如图2-6所示。图2-6 “MOV A,#60H指令执行示意图实例二 单片机的基本结构及指令系统“MOV A,#60H对应的机器代码为0111010001100000B,假设高8位(74H)和低8位(60H)分别存放于程序存储器的30H和31H两个单元中。a.取指令过程。(a)程序计数器PC中装入地址30H,并通过AB(地址总线)送到存储器的地址译码器,选中程序存储单元30H。然后PC自动加1,为取下一个字节做好准备。(b)CPU通过CB(控制总线)向存储器发出读取数据的控制信号。(c)程序存储器中被选中的30H单元的内容(74H)送到DB(数据总线)上,CPU读入指令代码。实例二 单片机的基本结构及指令系统 b.分析指令、执行指令过程。(a)CPU读取指令代码后进行译码。(b)CPU根据译码结果知道74H表示把它下面一个单元的操作数送至累加器A,因此产生相应的控制信号。(c)执行指令所规定的操作,实现将31H单元内的操作数60H通过DB送至累加器A中。其他指令的执行过程与此类似。实例二 单片机的基本结构及指令系统 数据指针DPTR。数据指针DPTR是一个16位的专用存放器,也可以按两个8位存放器来使用,即高位字节存放器DPH和低位字节存放器DPL。DPTR主要是用来保存16位地址,在访问64KB外部数据存储器时,可作为间接寻址的地址存放器使用;在访问程序存储器时,可用作基址存放器。实例二 单片机的基本结构及指令系统 堆栈指针SP。堆栈是内部RAM的一个区域,用来存储数据。它的特殊之处在于存取数据必须遵循“先进后出,后进先出的原那么,即只能从栈顶一端存取数据。堆栈指针SP就是指向栈顶的指针。每当执行一次PUSH(入栈)指令时,SP就在原来值的根底上自动加1,每当执行一次POP(出栈)指令,SP就在原来值的根底上自动减1。数据入栈和出栈的过程如图2-7所示。实例二 单片机的基本结构及指令系统 图2-7 数据入栈和出栈的过程实例二 单片机的基本结构及指令系统 堆栈用于中断操作和子程序调用时保存数据,也称为断点保护和现场保护。子程序或中断效劳程序执行完后,CPU还是要回到主程序中,因此,在转入子程序或中断效劳程序前,必须先将现场的数据压入堆栈中保存起来,否那么返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何。返回时,再从堆栈中恢复当时的数据。实例二 单片机的基本结构及指令系统 堆栈指针SP的初始值称为栈底,它确定了堆栈的起始位置。例如,单片机复位后SP的值为07H,如果不加更改,那么入栈数据将从08H单元开始存储。但是08H1FH这个区域正是MCS-51单片机的工作存放器区,经常要被使用,这会造成数据的混乱。所以,通常在程序的开始阶段就用指令把栈底设在片内RAM中地址值较高的地方,即把SP的初始值设得较高,如5FH等。实例二 单片机的基本结构及指令系统 2)MCS-51单片机CPU的时序前面我们提到,单片机执行指令的过程就是顺序地从程序存储器中取出指令,一条一条地执行,然后进行一系列的微操作控制来完成各种指定的动作。那么,如何来对这些复杂的步骤进行统一协调的管理呢?在此我们引出时序的概念。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期。实例二 单片机的基本结构及指令系统(1)时钟周期。时钟周期也称为振荡周期,就是单片机外接晶振的倒数(例如12 MHz的晶振,它的时钟周期就是1/12 s),是计算机中最根本、最小的时间单位。(2)机器周期。CPU完成一种根本操作所需要的时间称为机器周期。一个机器周期包含12个时钟周期,分为6个状态,分别用S1S6表示。每个状态又分为两拍,分别用P1和P2表示。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S6P2,如图2-8所示。如果系统时钟的晶振频率为12 MHz,那么它的机器周期为1 s。实例二 单片机的基本结构及指令系统 图2-8 机器周期时序实例二 单片机的基本结构及指令系统(3)指令周期。指令周期是执行一条指令所需要的时间,一般由假设干个机器周期组成。指令不同,所需的机器周期数也不同。MCS-51单片机的指令可以分为单周期指令、双周期指令和四周期指令三种,它们的执行时间依次为1个、2个和4个机器周期。一般地,单字节指令和双字节指令都可能是单周期和双周期,而三字节指令都是双周期,只有乘除法指令是单字节四周期。实例二 单片机的基本结构及指令系统(4)CPU取指令/执行时序。指令的执行分取指令和执行两个阶段,取指令的时间与地址锁存信号(ALE)有关。ALE信号在每一个机器周期出现两次,第一次在S1P2、S2P1期间,第二次在S4P2、S5P1期间,其频率为系统晶振频率的1/6。每当ALE信号出现时,CPU取指令一次。图2-9所示为几种指令的时序。实例二 单片机的基本结构及指令系统 图2-9 MCS-51单片机的取指令时序实例二 单片机的基本结构及指令系统 对于一字节单周期指令,第一次ALE信号时取指令,第二次ALE信号时仍然取指令,但此次所取数据无效,到一个机器周期结束时执行完毕。对于两字节单周期指令,在两次ALE信号时分别读入指令的两个字节,一个机器周期结束时执行完毕。对于一字节双周期指令,除第一次ALE信号时读入的数据有效外,其余三次读入的数据均无效,到两个机器周期结束时执行完毕。依次类推,对于两字节双周期指令,前两次ALE信号时读入有效数据,后两次读入的数据均无效。注意:ALE信号在大局部时间都是周期性的,只有在访问外部RAM时例外,其第二个机器周期的第一个ALE信号并不出现。实例二 单片机的基本结构及指令系统 2存储器存储器是单片机内用于存储数据的地方。为了便于大家理解,可以把一个存储器看做是一个大柜子,这个大柜子里有许多小抽屉,每一个小抽屉都可以用来存放一个数据。51系列单片机处理的数据都是以字节(byte)为单位的,每一字节包含8位二进制数字(0或1),所以,每一个小抽屉里又分成了8格。如果要在单片机内存储一个数据“6,也就是“00000110,那么只要在“抽屉格子里对应地存入“1或“0就可以了(“1或“0依靠电平的高或低来实现)。实例二 单片机的基本结构及指令系统 存储器结构有两种类型:一种是程序存储器和数据存储器统一编址,称为普林斯顿结构;另一种是程序存储器和数据存储器分开编址,称为哈佛结构。MCS-51单片机采用的是哈佛结构。MCS-51单片机的存储器结构如图2-10所示,可分成三个局部,即程序存储器、内部数据存储器和外部数据存储器。实例二 单片机的基本结构及指令系统 图2-10 MCS-51单片机的存储器结构实例二 单片机的基本结构及指令系统 1)程序存储器单片机应用系统中的程序存储器一般用半导体只读存储器,即ROM(Read Only Memory)。这种存储器在计算机运行时只能对其执行读操作(即只能把里面的数据读出来,而不能把外部的数据写进去),即使整机掉电后存于其中的信息也不会丧失,因此,程序存储器主要用于存放不需要经常改动的程序和常数表格。实例二 单片机的基本结构及指令系统 参照图2-10可知,MCS-51单片机的程序存储器可以分为片内和片外两局部。片内有4KB程序存储空间,相当于有4 K个不同的字节可用来存放数据。那么,如何对这4 K个字节进行区分呢?类似于宾馆里每一间房都有一个不同的房门号,我们对这4 K个字节也进行了地址分配,从0000H到0FFFH,刚好4 K个不同的地址代码,一一对应,可以通过地址总线来进行寻址。同理,片外有64 KB的程序存储空间,每一个字节也对应一个地址代码,从0000H开始编址,到FFFFH为止。在地址0000H0FFFH内,片内、片外地址有重叠,由引脚信号来控制内、外程序存储器的选择。实例二 单片机的基本结构及指令系统(1)当引脚接高电平时,CPU可访问内部和外部ROM,并且程序自片内程序存储器开始执行,PC值超出片内ROM容量时,会自动转向片外程序存储器中的程序。(2)当引脚接低电平时,直接寻址外部ROM,且从0000H开始,系统全部执行片外程序存储器中的程序。实例二 单片机的基本结构及指令系统 MCS-51系列单片机程序存储器分为系统使用区和用户使用区,其中0000H002AH为系统使用区,其余为用户使用区。系统使用区中有6个单元地址被固定地用于特定程序的入口地址,其中0000H称为复位单元,单片机复位后(PC)0000H,从而CPU总是从0000H单元开始重新执行程序。其余5个单元用作5个中断源的中断效劳程序入口地址,具体定义见表2-5。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 在编程时,通常在这些入口地址开始的两三个地址单元中放入一条转移类指令,以使相应的程序在转移后的目标地址开始存放。例如,从000BH地址单元开始,放入一条转移到0100H地址单元的转移类指令,那么定时器/计数器0的中断效劳程序就从0100H地址单元开始存放。实例二 单片机的基本结构及指令系统 2)内部数据存储器数据存储器也称为随机存取存储器(RAM),用户既可以从里面读数据,也可以往里面写数据,因此通常用于存放运算的中间结果、数据缓冲以及设置特征标志等。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间:一个是内部数据存储器,另一个是外部数据存储器。实例二 单片机的基本结构及指令系统 内部数据存储器共有256B存储空间,但只有低128B(地址为00H7FH)是真正的数据存储空间,可供用户进行读或写操作,高128B(地址为80HFFH)是单片机的特殊功能存放器区。(1)内部数据存储区。内部RAM的128B地址空间分成不同的区域:工作存放器区(00H1FH)、位寻址区(20H2FH)、堆栈和数据缓冲区(30H7FH),如图2-11所示。实例二 单片机的基本结构及指令系统 图2-11 内部数据存储区实例二 单片机的基本结构及指令系统 工作存放器区(00H1FH)。此区共32字节,又可分为4组,每组8个字节,而每一个字节就是一个工作存放器,可存放一个8位的数据。每组包含的8个工作存放器分别命名为R0R7。工作存放器的使用相当频繁,且每一个工作存放器组都可被选为CPU的当前工作存放器组,用户可以通过改变程序状态字PSW中的RS1、RS0两位来指定,具体对应关系如表2-6所示。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 位寻址区(20H2FH)。此区共16字节,每一字节除了具有字节寻址功能外,其每一位都可以单独寻址。位地址为00H7FH,共128位,分别对应于字节地址20H的D0位至2FH的D7位,如表2-7所示。MCS-51单片机有丰富的位操作指令,可以进行置1、清0、取反等操作。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 堆栈和数据缓冲区(30H7FH)。此区共80字节,通常作为堆栈或数据缓冲区使用。用户可根据需要将堆栈设置在这个范围内(30H7FH),比方将SP的初始值定义为2FH,那么堆栈数据从30H地址单元开始存放。思考:看到上面对字节地址和位地址的编号,大家可能会有这样的疑问,即它们的编号都是重复的,那怎么区分呢?这个问题我们将在2.1.3节中给出答案。实例二 单片机的基本结构及指令系统(2)特殊功能存放器区。MCS-51单片机共有21个特殊功能存放器,简称为SFR(Special Function Registers)。它们离散地分布在80HFFH的地址空间内。这些特殊功能存放器包括累加器A、存放器B、程序状态字存放器PSW、定时器/计数器、I/O接口锁存器以及各种控制存放器等,其地址分配见表2-8。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 从表2-8可知,有些特殊功能存放器不仅可以按字节寻址,还可按位寻址(它们的字节地址均可以被8整除),位地址范围是80HF7H。这些位可用多种形式表示。例如,程序状态字存放器中的进位标志位可以用以下几种不同的形式表示:CY(位助记符)D7H (直接位地址)PSW.7(存放器.位)D0H.7(单元地址.位)一般采用位助记符和“存放器.位这两种形式表示。实例二 单片机的基本结构及指令系统 3)外部数据存储器MCS-51单片机具有扩展64KB外部数据存储器的能力。外部数据存储器编址为0000HFFFFH,有一局部地址与内部数据存储器重叠(0000H0FFFH),由不同的指令形式来区分。实例二 单片机的基本结构及指令系统 4)数据传送指令从程序存储器中读取数据,或者对内部、外部数据存储器进行数据读/写操作时,采用的指令形式各不相同。下面我们通过几个例题来说明。(1)读程序存储器。例2-8 将程序存储器1002H地址单元的内容传送到累加器A。实例二 单片机的基本结构及指令系统 指令:MOV DPTR,#1000H ;将数据1000H传送到DPTR MOV A,#02H ;将数据02H传送到A MOV C A,A+DPTR ;将ROM中1002H地址单元的内容传送到A说明:MOVC是程序存储器数据传送指令的助记符;累加器A是传送的唯一目的地址(不可将程序存储器中的内容直接传送到其他地址单元或存放器);A+DPTR指出以DPTR中的内容(1000H)和累加器A中的内容(02H)相加的和(1002H)为地址的存储器单元中的内容,是传送的源操作数;#表示后面跟的是数据而不是地址。思考:可以将DPTR和A中的数据换成其他吗?实例二 单片机的基本结构及指令系统(2)读/写内部数据存储器。例2-9 将内部数据存储器30H单元的内容传送到31H单元。指令:MOV 31H,30H ;将内部RAM中30H单元的内容传送到31H单元或者:MOV A,30H ;将内部RAM中30H地址单元的内容传送到A(读)MOV 31H,A ;将A的内容传送到内部RAM中31H地址单元(写)实例二 单片机的基本结构及指令系统 说明:MOV是内部数据存储器数据传送指令的助记符。内部数据存储器中两个地址单元的内容可直接进行传送(目的地址放前面,源地址放后面),也可通过中间存放器进行间接传送(比方累加器A、存放器Rn等)。注意,30H前不加“#表示30H是一个地址而不是数据,真正进行传送的是30H这个地址单元内的数据。思考:利用存放器R2来实现本例的要求。实例二 单片机的基本结构及指令系统(3)读/写外部数据存储器。例2-10 将外部数据存储器40H单元的内容传送到2000H单元。指令:MOV R0,#40H ;将数据40H传送到R0 MOVX A,R0 ;将外部RAM中40H地址单元的内容传送到A(读)MOV DPTR,#2000H ;将数据2000H传送到DPTR MOVX DPTR,A ;将A的内容传送到外部RAM中2000H地址单元(写)实例二 单片机的基本结构及指令系统 说明:MOVX是外部数据存储器数据传送指令的助记符,外部RAM中两个地址单元的内容不可直接进行传送,必须通过累加器A,而且,无论是将外部RAM中的数据读到累加器A,还是将累加器A中的数据写到外部RAM,都必须采取间接寻址的方式。其中,存放器R0或R1专用于8位地址的外部RAM存储单元(00HFFH);DPTR专用于16位地址的外部RAM存储单元(0100HFFFFH)。思考:读者可用MedWin软件进行试验,观察仿真结果。实例二 单片机的基本结构及指令系统 3并行输入/输出接口并行输入/输出接口电路是单片机中不可缺少的组成局部,它就像我们的手和脚一样,我们可以通过手和脚触摸到外界的信息,也可以通过手和脚来控制外界的一些东西。那么单片机的I/O怎样实现它的功能呢?下面我们举例说明。假设要利用单片机来点亮一只发光二极管,显然,这只发光二极管必须与单片机的某个引脚相连,这就必须用到并行输入/输出接口。MCS-51系列单片机内部有4个并行双向I/O接口电路:P0、P1、P2、P3。每一个接口电路各有8位,分别用P.0、P.1、P.7表示,都有独立的引脚。如果我们将其中的一位接口P1.3(4号引脚)与发光二极管相连,如图2-12所示(R11是限流电阻),那么当4脚是高电平时,发光二极管不亮,当4脚为低电平时,发光二极管点亮。实例二 单片机的基本结构及指令系统 如何让P1.3变高或变低呢?我们可以通过指令来向单片机发布命令。让一个引脚输出高电平的指令是SETB,让另一个引脚输出低电平的指令是CLR。因此,我们要P1.3输出高电平,只要写SETB P1.3,要P1.3输出低电平,只要写CLR P1.3就可以了。此外,指令CPL可以改变引脚原来的输出状态,假设P1.3原来输出高电平,那么经过CPL P1.3之后,P1.3输出低电平,反之亦然。实例二 单片机的基本结构及指令系统 图2-12 单个发光二极管点亮控制原理图实例二 单片机的基本结构及指令系统 通过这些I/O接口,单片机可外接按键、发光二极管、显示器等外围设备,还可以进行系统扩展。下面详细介绍它们各自的内部结构及工作原理。实例二 单片机的基本结构及指令系统 1)P0口P0口除了作通用I/O口之外,还可在外部扩展存储器时分时复用为地址/数据总线。P0口的位结构图如图2-13所示。P0口的位电路结构由以下几个局部组成:1个数据输出锁存器,用于进行输出数据的锁存;2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MUX,它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出,在控制信号的控制下能实现对锁存器输出端和地址/数据线之间的切换;由两只场效应管组成了输出驱动电路。实例二 单片机的基本结构及指令系统 图2-13 P0口的位结构图实例二 单片机的基本结构及指令系统 当控制信号线为低电平,P0口用作通用I/O口时,需外加上拉电阻。输出(写)时,内部总线上的数据在写信号的控制下,先写入锁存器,经端和V2两次反相后立即以原来的逻辑状态反映到外部引脚;输入(读)时,为保证引脚上的信号能正常读入,应先向锁存器写1,令V1、V2截止,外部引脚信号经输入缓冲器送到内部数据总线。当控制信号线为高电平时,P0口用作外部扩展存储器的数据总线和低8位地址总线。在内部总线信号的作用下,V1、V2交替导通与截止,将数据/地址信息反映到外部引脚。外部数据输入时,经输入缓冲器送到内部数据总线。此时,P0口就不能再作I/O口使用了。实例二 单片机的基本结构及指令系统 2)P1口P1口往往只作为通用I/O口使用,其位结构图如图2-14所示。P1口的位电路结构由以下几个局部组成:一个数据输出锁存器,用于输出数据的锁存;两个三态输入缓冲器,一个用于读锁存器,另一个用于读引脚;数据输出驱动电路,由场效应管和内部上拉电阻组成。P1口作为输出口时,无需外加上拉电阻;作为输入口时,也必须先向锁存器写入1,原理与P0口相同。实例二 单片机的基本结构及指令系统 图2-14 P1口的位结构图实例二 单片机的基本结构及指令系统 3)P2口P2口既可用作通用I/O口,又常用作高8位地址总线。P2口的位结构图如图2-15所示。P2口的位电路结构由以下几个局部组成:一个数据输出锁存器,用于输出数据的锁存;两个三态输入缓冲器,一个用于读锁存器,另一个用于读引脚;一个多路开关MUX,它的一个输入来自锁存器的Q端,另一个输入来自内部地址的高8位;数据输出驱动电路,由非门、场效应管和内部上拉电阻组成。作为通用I/O口使用时,P2口的功能与P1口一样;用作高8位地址输出线应用时,P2口与P0口输出的低8位地址一起构成16位的地址总线,可以寻址64 KB地址空间。当P2口作高8位地址输出口时,其输出锁存器原锁存的内容保持不变。实例二 单片机的基本结构及指令系统 图2-15 P2口的位结构图实例二 单片机的基本结构及指令系统 4)P3口P3口是双功能8位输入/输出口,内部结构中增加了第二输入/输出功能,见表2-9。如图2-16所示,P3口的位电路结构由以下几个局部组成:一个数据输出锁存器,用于输出数据的锁存;3个三态输入缓冲器,一个用于读锁存器,另外两个用于读引脚和第二功能数据的缓冲输入;数据输出驱动电路,由与非门、场效应管和内部上拉电阻组成。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 当第二输出功能信号为高电平时,P3口作为I/O口使用,输入/输出过程与其他口相同;用作第二输出功能时,应先向锁存器写入1,第二输出功能信号经与非门、场效应管输出到引脚;用作第二输入功能时,也应先向锁存器写入1,而且第二输出功能信号自动为1,与非门输出0信号,场效应管截止,引脚信号由三态门输入。这样,不管是作为通用I/O口使用还是第二功能信号输入,电路中的锁存器输出和第二输出功能信号线均应置1。P3口的某位不作为第二功能使用时,那么自动处于通用输出/输入口功能。实例二 单片机的基本结构及指令系统 图2-16 P3口的位结构图实例二 单片机的基本结构及指令系统 其他功能部件在后续内容中介绍。4单片机复位复位是单片机的初始化操作,复位后,片内各存放器的状态如表2-10所示。复位不影响内部RAM中储存的数据。复位后,PC=0000H,即指向程序存储器0000H地址单元,使CPU从0000H地址单元开始重新执行程序,因此,当单片机系统运行出错或操作错误使系统处于死锁状态时,可按复位键重新启动。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 根据前述的单片机复位条件(RST端必须至少保持两个机器周期的高电平),通常采用上电自动复位和按键手动复位两种方式。1)上电自动复位上电自动复位电路利用RC充电来实现复位条件,如图2-17(a)所示。应根据石英晶体振荡频率来合理选取参数。2)按键手动复位图2-17(b)所示电路为兼具了上电自动复位和按键手动复位的复合电路。程序运行时,通过复位按键可强制CPU进入复位状态。实例二 单片机的基本结构及指令系统 图2-17 单片机复位电路(a)上电自动复位电路;(b)复合电路实例二 单片机的基本结构及指令系统【练习】工程:单灯点亮控制电路的绘制。工程编号:EX2_2。任务要求:在Proteus平台中绘制单灯点亮控制电路,并撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,Proteus软件1套。实例二 单片机的基本结构及指令系统 设计步骤:(1)翻开Proteus软件。(2)取用所需元器件,并摆放好位置。(3)连接好电路。(4)计算电路中的主要参数值,并设置好相关器件。仿真图如图2-18所示。实例二 单片机的基本结构及指令系统 图2-18 单个发光二极管点亮控制电路的原理图实例二 单片机的基本结构及指令系统 1参数计算参数计算发光二极管的反向击穿电压约5 V。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:式中,E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。普通发光二极管的正向压降一般为1.01.6 V,一般工作电流为520 mA。实例二 单片机的基本结构及指令系统 2调试结果调试结果为了确定限流电阻的阻值,假定所选发光二极管的正向压降为1.0V,限流电阻(R11)的阻值为 。实例二 单片机的基本结构及指令系统 2.1.3 根本程序设计如果没有程序,那么单片机什么也不会做。程序是单片机的一组指令,经过编译和执行才能最终完成程序设计的动作。程序设计的最终结果是软件。1指令及指令系统概述指令是指挥MCS-51单片机工作的命令,是MCS-51单片机软件设计的根本单元。指令有以下两种表达式:(1)机器码指令:用二进制代码(或十六进制数)表示的指令称为机器码指令或目标代码指令。实例二 单片机的基本结构及指令系统(2)汇编语言指令:为了方便记忆,便于程序的编写和阅读,用助记符来表示每一条指令的功能。用助记符表示的指令不能被计算机硬件直接识别和执行,必须通过汇编程序把它变成机器码指令才能被机器执行。例如,MCS-51单片机执行操作:把数3FH传送到累加器A中,实现这种操作的汇编语言指令形式为:“MOV A,#3FH;A#3FH,数3FH送A中。其中,“#是数3FH的标识符。这条指令的机器码指令为“74H 3FH。实例二 单片机的基本结构及指令系统 指令系统是MCS-51单片机的所有指令的集合。MCS-51系列单片机使用42种助记符,有51种根本操作。通过助记符及指令的源操作数和目的操作数的不同组合构成了111条指令,其中单字节指令49条、双字节指令45条、三字节指令17条。从指令的执行时间来看,这111条指令为单机器周期(12个时钟振荡周期)指令64条,双机器周期(24个时钟振荡周期)指令45条,四机器周期(48个时钟振荡周期)指令2条。实例二 单片机的基本结构及指令系统 1)MCS-51汇编语言指令格式指令格式是指令的书面表达形式。MCS-51汇编语言指令格式与其他汇编语言格式类似,通常由标号、操作码、操作数和注释等项组成,其一般表示格式如下:标号:操作码助记符目的操作数,源操作数;注释要点:操作码与操作数之间必须用空格分隔,操作数与操作数之间必须用逗号“,分开,带方括号的项可有可无,有时可以省略。指令中所用的符号必须在英文输入状态下输入,而不能在中文输入状态下输入。例如:LOOP:MOV P1,#55H;(P1)#55H(2-1)实例二 单片机的基本结构及指令系统 指令中各项的意义如下:标号(指令(2-1)中的LOOP):指令的符号地址。MCS-51汇编语言中使用的标号由18个字符组成,标号中使用的字符可以是英文字符、阿拉伯数字和下划线,但第一个字符必须是字母。一条语句之前是否要冠以标号,要根据程序设计的需要而定。当某条指令可能被调用或作为转移的目的地址时,通常会给该条指令赋予标号。一旦给某条指令赋予了标号,在汇编过程中将给出该标号的实际地址,并且该标号可作为其他指令的操作数使用。实例二 单片机的基本结构及指令系统 要点:标号后面必须加上冒号“:,标号与冒号之间不能有空格,冒号与操作码之间可以有空格;标号不能与汇编语言中已定义的符号名冲突,如指令助记符、存放器名、伪指令;标号只在本程序中有效,并且在同一个程序中不能在不同的指令前使用同一个标号。这就好似我们每个人都有一个名字,如果和别人重名的话就很麻烦了,所以要记住,在同一程序设计中,不同指令前的标号是一定不能重名的。实例二 单片机的基本结构及指令系统 操作码(指令(2-1)中的MOV):表示指令执行的功能,用指令助记符或伪指令形式给出,一般为英语单词的缩写。操作数(指令(2-1)中的P1和#55H):指令操作的对象,即参与操作的数据或地址。目的操作数和源操作数的书写顺序不能颠倒。操作数可以是数字(地址、数据),也可以是标号或存放器名等。实例二 单片机的基本结构及指令系统 要点:指令中的数据可以是十进制、二进制、八进制、十六进制和字符串。十进制数以D结尾(可以省略),如160D或160;二进制数以B结尾,如10100000B;八进制数以O或Q结尾,如240O或240Q;十六进制数以H结尾,假设数据以字母开头,那么其前必须加数字“0,如0A0H。字符用 表示,字符串用“表示,如M表示字符M的ASCII码。注释(指令(2-1)中的;(P1)#55H):对指令功能的说明,便于程序的阅读和维护。它不参与计算机的操作。实例二 单片机的基本结构及指令系统 2)MCS-51系列单片机指令系统常用符号在MCS-51汇编指令系统中,规定了一些指令格式描述中的常用符号,这就像我们使用的标准字一样。Rn选定当前存放器区的存放器R0R7,它在片内数据存储器中的地址由PSW中的RS1和RS0确定,n=07。Ri通过存放器R0或R1间接寻址的片内RAM单元,为间接寻址前缀符号,i=0或1。direct直接地址,一个片内RAM单元地址(8位二进制数)或一个特殊功能存放器。#data8位或16位常数,亦称立即数。#为立即数前缀符号。实例二 单片机的基本结构及指令系统 Addr1616位目的地址,供LCALL和LJMP指令使用。Addr1111位目的地址,供ACALL和AJMP指令使用。rel8位带符号补码数(以二进制补码表示),常用于相对转移指令中的偏移量。bit位地址,内部RAM或特殊功能存放器中的直接寻址位。/位操作前缀,表示该位内容求反。X片内RAM的直接地址或存放器。(X)表示以X为地址的单元中的内容。(X)表示用以X为地址的单元中的内容作为地址的单元中的内容。数据传送的方向。实例二 单片机的基本结构及指令系统 3)寻址方式指令中所规定的寻找操作数的方式就是寻址方式(Addressing Models)。一条指令属于何种寻址方式,通常是依据源操作数的数据形式而定的。MCS-51单片机中存放数据的存储器空间有4种形式,即内部数据存储器(RAM)、特殊功能存放器(SFR)、外部数据存储器(RAM)和程序存储器(ROM),逻辑上分为3个存储空间,即内部RAM和SFR统一编址的256 B片内数据存储器、片内外统一编址的64 KB程序存储器和64 KB片外数据存储器地址空间。为了区分指令中的数据所存储的空间,对于不同存储器的数据存取,采用了不完全相同的寻址方式。实例二 单片机的基本结构及指令系统 MCS-51指令系统的寻址方式有7种:立即寻址(#data)、直接寻址(direct)、存放器寻址(Rn)、存放器间接寻址(Ri、DPTR)、基址变址寻址(A+)、相对寻址(rel)和位寻址(A)。寻址方式与存储空间结构是紧密相关的,表2-11描述了MCS-51汇编语言指令系统各种寻址方式与存储空间及存放器的关系。实例二 单片机的基本结构及指令系统 实例二 单片机的基本结构及指令系统 位寻址是指对内部RAM(20H2FH)和某些特殊功能存放器SFR中的位地址空间进行位操作。在进行位操作时,借助进位位C作为操作累加器。操作数直接给出位地址,然后根据操作码的性质对其进行位操作。例如:MOV C,3DH ;机器码为A2H,3DH3DH这一位是片内RAM中27H单元的第5位。现假设27H中原内容为20H,进位位C为0,那么执行此指令后,它将把3DH这一位的内容传送给进位位C,结果C的内容变为1。该指令执行示意图如图2-19所示。实例二 单片机的基本结构及指令系统 图2-19 位寻址方式指令执行示意图实例二 单片机的基本结构及指令系统 要点:位寻址方式中的位地址与直接寻址方式中的字节地址在形式上是完全一样的,它们是通过操作码来区分的。可以通过在MedWin中仿真以下程序来帮助理解位寻址方式指令的执行情况,仿真过程前面已经说明得很清楚,这里
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!