(单片机应用实例开发)实例二单片机的基本结构及指令系统.ppt
《(单片机应用实例开发)实例二单片机的基本结构及指令系统.ppt》由会员分享,可在线阅读,更多相关《(单片机应用实例开发)实例二单片机的基本结构及指令系统.ppt(249页珍藏版)》请在三一办公上搜索。
1、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、软件调试单个发光二极管的控制电路。设计和制作单个发光二极管控制系统,对电路中的故障现象进行分析判断并加以解决,通过调试得到正确结果。,工作任务 测试单个发光二极管控制电路并对结果进行描述。设计、制作与调试单个发光二极管控制系统。撰写设计文档与测试报告。通过实例一的学习,我们了解了单片机是什么以及使用它的基本方法,但是单片机的资源非常多,用途很广,利用它可以完成的工作也非常多,为了能够更好地学会怎样使用单片机,我们先从它的外围开始学习。,2.1 单个发光二极管的点亮学习目标 理解单个发光二极管控制电路的构成、工作原理和电路中各元器件的作用,并能对电路进行分析和计算。理解51单片机最小系统和I/O
3、口的内部结构,并正确使用51单片机I/O口资源。理解ORG、END、BIT等伪指令的含义并掌握其使用方法。掌握位寻址方式,正确使用MOV传送指令。工作任务 测试单个发光二极管控制电路并对结果进行描述。,2.1.1 数制与编码单片机内部采用的数据系统和计算机的一样,都是二进制,因此,经由单片机计算与处理的数值、字母、符号等都必须采用二进制代码表示,而我们日常所熟悉的是十进制数,要想和单片机沟通,就必须用它能够理解的“话”,所以我们首先要弄清楚它们之间的联系,才能更好地应用。注意:如果你已经掌握了计算机基础知识,那么你可以跳过这一节,直接学习下一节的内容。,1数制数制即进位计数制,常用的数制有二进
4、制、十进制和十六进制。在书写中为了以示区分,通常后缀用不同的字母来代表不同的进制,D(Decimal)代表十进制(可省略),B(Binary)代表二进制,H(Hexadecimal)代表十六进制。1)十进制十进制数的两个基本特点如下:(1)基数为10,每一位数是09这十个数码中的一个。(2)逢十进一,借一当十。,任意一个十进制数的按权展开式为例如,十进制数326.75按权展开为,2)二进制二进制数的两个基本特点如下:(1)基数为2,每一位数只能是0和1这两个数码中的一个。(2)逢二进一,借一当二。,任意一个二进制数的按权展开式为例如,二进制数1101.01B按权展开为,3)十六进制十六进制数的
5、两个基本特点如下:(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转换成十进制数。解:
6、例2-2 将十六进制数E2.4CH转换成十进制数。解:,2)十进制数转换为二进制数、十六进制数十进制数转换为二进制数或十六进制数时,需要将整数部分和小数部分分开进行转换,再将结果组合在一起。其中,整数部分的转换方法是“除基数取余逆序排列”,小数部分的转换方法是“乘基数取整顺序排列”。下面通过具体数据举例进行说明。,例2-3 将十进制数14.375转换成二进制数。解:(1)将整数部分“14”用“除2取余逆序排列”,即将“14”逐次除以2,依次记下余数,直至商为0。其中,第一次除得的余数为二进制数整数部分的最低位,最后一次除得的余数为二进制数整数部分的最高位。得到,14=1110B。,(2)将小数
7、部分“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位二进制
8、数码表示,即可将该十六进制数转换成二进制数,转换结果中最左侧和最右侧的0可以舍去;相反,将二进制数转换成十六进制数的方法是以小数点为界,分别向左、向右每4位二进制数码用一位十六进制数码表示,不足4位的以0补足,其中小数点左侧部分左补0,小数点右侧部分右补0。,例2-5 将十六进制数4A2.3CH转换成二进制数。解:因此,4A2.3CH9 9=010010100010.001111B。,例2-6 将二进制数11001001011.010111B转换成十六进制数。解:因此,11001001011.010111B=64B.5CH。为了方便读者记忆,特将0F这十六个数码与二进制数、十进制数的对应关系制
9、成表2-1。,3编码我们将字和词语按照一定的规律组合起来就构成了能够随意表达心意的句子。二进制代码就是单片机的“字”和“词语”,将它们按一定规律编排,使每组代码具有特定含义,这就是单片机中的编码。下面介绍两种计算机中常用的编码。,1)二十进制编码二-十进制编码又称BCD(Binary Coded Decimal)编码,是指每一位十进制数码均用一组二进制数码来表示的编码。每一位十进制数码(09)可用4位二进制数码表示,也可用8位二进制数码表示(高4位全为0),前者称为压缩BCD码,后者称为非压缩BCD码。对于压缩BCD码,根据编码的选取方法不同,又可分为8421码、5421码、余3码等。其中,最
10、常用的是8421BCD码。表2-2列出了十进制数码与8421BCD码之间的对应关系。,注意:8421BCD码必须在右下角进行标注,否则易与二进制数混淆。例如,1000 0011作为8421BCD码的值是83,而作为二进制数时,其值为131。在以后介绍的实例中,我们经常会利用BCD码格式的数据,所以现在一定要弄明白。例2-7 将十进制数47.85转换成8421BCD码,将8421BCD码1001 0111.0010转换成十进制数。解:,2)字符编码计算机只能对二进制代码进行处理,因此,在计算机内各类字符(包括字母、数字和符号)也必须用二进制代码来表示。目前采用得最普遍的是美国国家信息交换标准字符
11、码,即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码。每一个字节中多余出来
12、的一位(最高位)在计算机内部通常保持为0(在数据传输时可用作奇偶校验位)。注意:单片机中最小的数据单位是位,8位二进制的数据为一个字节,16位二进制的数据为一个字(两个字节)。,4带符号数的表示计算机中的所有信息都是用二进制代码表示的,有符号数也不例外,通常把数(1个字节)的最高位作为符号位,如图2-1所示。在计算机中,带符号数有三种表示方法:原码、反码和补码。,图2-1 符号位指示图,1)原码正数的符号位用“0”表示,负数的符号位用“1”表示,这种表示法称为原码。例如:X1=+18=+0010010,则X1原=00010010X2=18=0010010,在X2原=100100100的原码是不
13、唯一的:+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)补码如果是正数,则其补码与原
14、码、反码相同;如果是负数,则其补码为反码加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接口等)由
15、总线(共分为地址总线AB、数据总线DB、控制总线CB三大类)紧密地联系在一起。这就像我们人体的各个部位都通过神经受大脑的控制,心脏通过周身的血管将新鲜的血液送到身体的各个部位一样。,图2-2 MCS-51单片机的内部结构框图,1中央处理器CPUCPU相当于是单片机的大脑和心脏,负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入/输出功能等操作。1)MCS-51单片机CPU的功能部件MCS-51单片机的CPU主要由运算器和控制器等部件组成,如图2-3所示。,图2-3 CPU的组成部件,(1)运算器。单片机进行的一切算术/逻辑运算均在运算器内部完成。运算器主要包括ALU(算术逻辑部件)
16、、累加器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
17、 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)用户自定义标志。供用户自行定义,用作标记,可用软件使其置位或清零。,RS
18、1、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,则说明乘积没有超过2
19、55,乘积只存放在累加器A中。,进行除法运算时,若除数为0,则OV自动置1,运算不被执行,否则OV清零。P(PSW.0)奇偶校验位。每个指令周期都由硬件来置位或清零,以表示累加器A中“1”的位数的奇偶性。若“1”的位数为奇数,则P自动置位,否则清零。该标志位常用于检验数据传输的正确性。,(2)控制器。控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、指令译码器、程序计数器PC(Program Counter)、数据指针DPTR、堆栈指针SP(Stack Pointer)等。程序计数器PC。程序计数器在物理上是独立的,共16位,用于存放即将执行的指令地址,可对64KB程序存储器直接寻
20、址。PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1,并指向下一条指令。PC本身并没有地址,因而不可寻址,用户无法对它进行读/写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。微型计算机的基本工作过程如下所述。,计算机如何按照我们的要求去执行任务呢?叫人做事,只要对他发布命令就可以,要计算机做事情,也得向它发布命令。当然,计算机能听得懂的命令和我们平时理解的命令不同,我们把它们称为指令。一条条指令组合在一起就构成了程序。计算机工作的过程实质上是执行程序的过程。在计算机工作时,CPU根据指令顺序,一条一条地执行,直到遇到结束运行的指令为止,从而完成一项特
21、定的任务。计算机执行指令的过程又分为取指令、分析指令和执行指令三步,如图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(地址总线)送到存储器的地址译码
22、器,选中程序存储单元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位寄存器来使用,
23、即高位字节寄存器DPH和低位字节寄存器DPL。DPTR主要是用来保存16位地址,在访问64KB外部数据存储器时,可作为间接寻址的地址寄存器使用;在访问程序存储器时,可用作基址寄存器。,堆栈指针SP。堆栈是内部RAM的一个区域,用来存储数据。它的特殊之处在于存取数据必须遵循“先进后出,后进先出”的原则,即只能从栈顶一端存取数据。堆栈指针SP就是指向栈顶的指针。每当执行一次PUSH(入栈)指令时,SP就在原来值的基础上自动加1,每当执行一次POP(出栈)指令,SP就在原来值的基础上自动减1。数据入栈和出栈的过程如图2-7所示。,图2-7 数据入栈和出栈的过程,堆栈用于中断操作和子程序调用时保存数据
24、,也称为断点保护和现场保护。子程序或中断服务程序执行完后,CPU还是要回到主程序中,因此,在转入子程序或中断服务程序前,必须先将现场的数据压入堆栈中保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何。返回时,再从堆栈中恢复当时的数据。,堆栈指针SP的初始值称为栈底,它确定了堆栈的起始位置。例如,单片机复位后SP的值为07H,如果不加更改,则入栈数据将从08H单元开始存储。但是08H1FH这个区域正是MCS-51单片机的工作寄存器区,经常要被使用,这会造成数据的混乱。所以,通常在程序的开始阶段就用指令把栈底设在片内RAM中地址值较高的地方,即把SP的初始值设得较高,如
25、5FH等。,2)MCS-51单片机CPU的时序前面我们提到,单片机执行指令的过程就是顺序地从程序存储器中取出指令,一条一条地执行,然后进行一系列的微操作控制来完成各种指定的动作。那么,如何来对这些复杂的步骤进行统一协调的管理呢?在此我们引出时序的概念。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期。,(1)时钟周期。时钟周期也称为振荡周期,就是单片机外接晶振的倒数(例如12 MHz的晶振,它的时钟周期就是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 应用 实例 开发 基本 结构 指令系统
链接地址:https://www.31ppt.com/p-6217939.html