单片机原理及应用(08)_第1页
单片机原理及应用(08)_第2页
单片机原理及应用(08)_第3页
单片机原理及应用(08)_第4页
单片机原理及应用(08)_第5页
已阅读5页,还剩263页未读 继续免费阅读

下载本文档

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

文档简介

1、主编 黄劼2008 2第一章 绪绪 论论 一、 计算机发展简史v第一台计算机ENIAC诞生于1946年2月15日v以电子管为基本元件,时钟频率100KHz, 运算速度5000次加法/每秒v计算机经过了几代的更新换代,到今天已经形成了一个庞大的计算机家族。1.1单片机与微型计算机的区别单片机与微型计算机的区别 第一台电子计算机电子计算机技术的发展到现在,已电子计算机技术的发展到现在,已经经历了五代:经经历了五代:v电子管计算机;v晶体管计算机;v集成电路计算机;v大规模集成电路计算机;v超大规模集成电路计算机。 计算机可分为不同类型,通常所说的“计算机”,本课程将要学习的 电子计算机 数字式电子

2、计算机 数字式微型电子计算机微 机二、冯诺依曼结构微机基础结构v匈牙利籍数学家冯诺依曼提出了以储存器为中心的计算机结构方案v1946年6月,他又提出了“程序存储”和“二进制运算”的思想v现在的计算机大部分仍是这种结构,即即硬件部分由运算器、控制器、存储器、输入设备和输出设备五大功能部件组成v微型计算机通过印刷电路板和电缆把上述功能部件有机地连接在一起,以“系统”的形式出现,在软件配合下,实现相应的计算和控制功能。v单片机则是把构成一台微型计算机所必需的功能部件集成到一个芯片内,以“芯片”的形式出现,在软件配合下,实现计算和控制功能。v单片机在本质上仍然是一种冯诺依曼结构的数字式微型电子计算机,

3、其全称是单片微型计算机Single chip computer,又称为微控制器 Microcontrollerv微型计算机的基本理论和有关概念微型计算机的基本理论和有关概念同样适用于单片机系统同样适用于单片机系统三、单片机和微型计算机的区别 v微型计算机多用于科学计算和事务处理等方面,计算复杂且要求计算速度快,因此微机的特点是存储容量大且运算速度快v单片机集成度高、体积小、功耗低、实时处理能力强,主要应用于控制领域v单片机和微型计算机的区别不在单片机和微型计算机的区别不在本质上,而在于针对性及适用对本质上,而在于针对性及适用对象的不同象的不同v第一阶段(19741978)单片机形成 以Inte

4、l公司MCS48系列单片机为代表v第二阶段(19781983)性能完善提高 以Intel公司MCS51系列单片机为代表v第三阶段(19831990) 16位单片机和高性能8位机并行发展 以Intel公司MCS96系列单片机为代表12 单片机的发展历史和趋势单片机的发展历史和趋势 v第四阶段(1990) 1990年2月,i800860超级单片机问世,运算速度为1.2亿次/秒,可进行32位整数运算和64位浮点运算,片内具有3维图形处理器。 实质是将大型计算机单片化,可完成更为复杂的控制功能。 1.3 MCS51单片机的特点和型号体系 v基本系列:8051子系列: 包括8031/8751/8051三

5、个具体型号; v增强系列:8052子系列: 包括8032/8752/8052三个具体型号 vCOMS基本系列: 包括80C31/87C51/80C51三个具体型号v所有型号指令和引脚完全兼容所有型号指令和引脚完全兼容 不同系列的差异在于:v基本系列: 片内程序存储器4K,片内数据存储器128Byte,2个定时计数器; v增强系列: 片内程序存储器8K,片内数据存储器256Byte ,3个定时计数器;vCOMS系列: COMS工艺制造,功耗低,电压范围广。又可分为C51和C52两个子系,区别同上。同系列不同型号的差异在于:v805X片内有4K的ROM作为程序存储器;v875X片内有4K的EPRO

6、M作为程序存储器;v803X没有片内程序存储器;v其它功能部件完全一样,指令和引脚也其它功能部件完全一样,指令和引脚也完全兼容完全兼容。 v近年多家公司购买了8051的内核,推出了众多兼容机型,使用较广泛的有: ATMEL公司融入FLASH存储器技术的AT89系列Philips公司的80C51、80C552系列; 华邦公司的W78C51、W77C51高速低价系列 ADI公司的ADC8xx高精度ADC系列; Cygnal公司的C8051F系列高速SOC单片机。 MCS-51单片机常用型号性能 1.4 MCS51单片机的应用领域 v工业过程实时控制 v数据采集与处理 v机电一体化产品 v办公自动化

7、设备 v智能仪器 v家电控制 v汽车电子产品 v商业营销设备 第2章 MCS51单片机硬件组成单片机硬件组成 v本章将介绍MCS51单片机的基本组成;单片机存储器的组织结构;I/O接口的结构和工作原理;单片机的基本工作方式以及单片机的基本时序v通过本章的学习,应该对单片机的整体结构和工作原理有全面的了解,上述内容是学习和使用单片机指令系统以及设计单片机控制系统的基础。 2.1 MCS51单片机内部资源单片机内部资源 v一个8位微处理器(CPU) v128B片内数据存储器(RAM)v4K片内程序存储器(ROM)v21个专用寄存器,实现对内部功能部件的控制和数据运算v4个8位并行I/O接口(P0、

8、P1、P2、P3) v两个16位定时/计数器v一个全双工串行口v一套完善的中断管理和处理系统 v不同的具体型号,可能在以下方面有所不同片内数据存储器容量不同片内程序存储器容量和器件类型不同定时器数量不同串口数量不同MCS51单片机的基本结构示意 MCS51单片机的基本结构示意 vMCS51单片机的P0、P2和P3并行接口在CPU控制下,可构成地址、数据和控制总线,用于外部设备扩展,MCS51单片机可以扩展:片外数据存储器单元和I/O接口地址共64KB64KB片外程序存储器 2.2 单片机的中央处理器单片机的中央处理器 v单片机的CPU字长为8位,即对数据的处理、传输均按8位二进制数(一个字节)

9、进行vMCS51系列单片机是8位机 vMCS51系列单片机的CPU由运算器、控制器及相应的专用寄存器组成运算器运算器v运算器由算术/逻辑部件(ALU)为核心,加上累加器ACC、暂存寄存器、程序状态字寄存器PSW以及布尔处理器、BCD码运算调整电路等构成v运算器的功能包括:算术运算;逻辑运算;位操作。控制器控制器 v控制器是CPU的指挥调度中枢,它包括:定时控制逻辑、指令寄存器、指令译码器、数据指针DPTR、程序计数器PC、堆栈指针SP、地址寄存器、地址缓冲器等v运行时控制器对指令进行译码,然后通过定时和控制电路在规定时刻发出所需的内、外部控制信号,协调各部分的工作,完成指令规定的操作。 程序计

10、数器程序计数器PC(Program Counter) v程序计数器PC是16位的寄存器,用来存放即将要执行的指令地址v可对64KB程序存储器直接寻址。v读取指令时,PC内容的低8位经P0口输出,高8位经P2口输出。v当CPU按照PC指示的地址取出一条指令后,PC值将自动增加,指向下一条指令的首字节地址。 指令寄存器指令寄存器 v指令寄存器用来存放指令代码。vCPU执行指令时,由程序存储器中读取的指令代码送入指令存储器,经指令译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。 MCS51控制器示意图2.3 MCS51单片机存储器体系结构单片机存储器体系结构 v存储器是微型计算机的重要

11、组成部分,将要或正在执行的程序代码、运算的原始数据、中间结果以及与外部设备进行交换的信息都需要存储在存储器中v存储器中哪里存放数据,哪里存放指令或者哪个存储器存放数据,哪个存储器存放指令以及存储器地址与I/O口地址如何区分是微型计算机设计时必须解决的问题,这一问题是通过存储器的配置方式来解决的 2.3.1 微型计算机存储器的配置方式 v微型计算机存储器的配置方式有两种: Harvard结构与非Harvard结构 vMCS51系列单片机的存储器配置方式采用Harvard结构;vMCS-98系列单片机以及80X86系列微处理器采用非Harvard结构的存储器配置方式。 2.3.2 51单片机存储器

12、体系结构 v存储器配置方式采用Harvard结构,单片机的存储器有程序存储器和数据存储器之分;v片内已经集成了一定容量的存储器,如果片内存储器容量不够时,51系列单片机允许在片外扩展存储器;v51单片机系统在物理上有4个独立的存储空间,它们分别是:一. 片内程序存储器片内程序存储器vMCS51单片机片内有4K程序存储器,地址范围为0000H0FFFHv8051采用只读存储器(Read Only Memory,ROM)作程序存储器;v8751采用紫外线擦除、可编程只读存储器(EPROM);v8031片内没有程序存储器v近年推出的新型号的兼容机型一般采用闪存(FLASH Memory)作程序存储器

13、。2.3.2.1单片机的物理存储空间单片机的物理存储空间vMCS51单片机可扩展64K片外程序存储器,地址范围为0000H0FFFFHv对片外程序存储器的读取由/PSEN信号控制。二. 片外程序存储器片外程序存储器 三三. 片内数据存储器片内数据存储器 MCS51单片机内部有一定数量的RAM单元用于存放数据,称为片内数据存储器,片内数据存储器数量的配置因子系列不同略有区别:v51子系列:片内有128个(地址为00和7FH)RAM单元,高128个单元中(地址为80和0FFH)零星地分布着21个特殊功能寄存器(SFR)。v52子系列:片内有256个(地址为00和0FFH)RAM单元,高128个单元

14、中(地址为80和0FFH)零星地分布着26个特殊功能寄存器(SFR)。 片内数据存储器的功能划分 v片内数据存储器在分为数据存储单元和特殊功能寄存器区两大部分的基础上,对低128字节的RAM单元又进一步划分为工作寄存器区位寻址区一般数据存储区(包括堆栈区)工作寄存器区v片内RAM 00H1FH 32个字节作为工作寄存器;v这32个字节分成4组,作为4个工作寄存器组。每组包含8个字节,分别称为R0、R1R7,作为8个工作寄存器使用 ;v由于每一组中都有R0、R1R7等8个工作寄存器,因此每个Rn在物理上都对应着4个不同的存储器单元,而一个工作寄存器到底对应于哪个RAM单元是由“当前工作寄存器组”

15、的设定决定的;v任一时刻只有一组工作寄存器是“当前工作寄存器”,当前工作寄存器组可用程序状态字PSW中的RS1和RS0两位选择。 工作寄存器与RAM单元的对应关系 位寻址区 v位寻址区位于片内RAM的20H到2FH 共16个字节单元,每个单元8位均可位寻址,共有128个可直接寻址位;v这128个位从20H字节单元的第0位到2FH字节单元的第7位,依次赋予地址00H7FH v这些地址称为位地址,注意与字节地址的区别片内RAM位寻址区地址表字节地址位地址D0D1D2D3D4D5D6D720H00H01H02H03H04H05H06H07H21H08H09H0AH0BH0CH0DH0EH0FH22H

16、10H11H12H13H14H15H16H17H23H18H19H1AH1BH1CH1DH1EH1FH24H20H21H22H23H24H25H26H27H25H28H29H2AH2BH2CH2DH2EH2FH26H30H31H32H33H34H35H36H37H27H38H39H3AH3BH3CH3DH3EH3FH28H40H41H42H43H44H45H46H47H29H48H49H4AH4BH4CH4DH4EH4FH2AH50H51H52H53H54H55H56H57H2BH58H59H5AH5BH5CH5DH5EH5FH2CH60H61H62H63H64H65H66H67H2DH68H

17、69H6AH6BH6CH6DH6EH6FH2EH70H71H72H73H74H75H76H77H2FH78H79H7AH7BH7CH7DH7EH7FH3.普通数据存储区 v30H7FH为普通数据存储区,可用于输入/输出和中间运算结果的暂存;v如果程序结构简单,不需要多个寄存器组交换,部分工作寄存器区也可作为普通数据存储区使用;v如果系统不需要进行位操作,位寻址区也可作为普通数据存储区使用;v注意:堆栈也安排在片内数据存储器内,使用时要避免堆栈区和普通数据存储区冲突。 4.特殊功能寄存器 v片内有21个特殊功能寄存器,离散地分布在片内RAM区的80H0FFH单元,特殊功能寄存器可分为以下几类:与

18、运算器相关的寄存器:ACC,B,PSW 指针类寄存器:SP,DPTR 与并行口相关的寄存器:P0,P1,P2,P3 与中断相关的寄存器:IE,IP 与定时/计数器相关的寄存器:TMOD,TCON,TH0,TL0,TH1,TL1与串行口相关的寄存器:SBUF,SCON,PCON PSW位地址及位名称vCY:也可写作C,进位标志。vAC:辅助进位标志。vF0:用户标志位。vRS1、RS0:当前工作寄存器组选择位vOV:溢出标志位。vP:奇偶标志位。特殊功能寄存器地址分布表符 号名 称字节地址* P0P0口输入输出寄存器80HSP堆栈指针81HDPL数据指针DPTR低字节82HDPH数据指针DPTR

19、高字节83H* TCON定时/计数器控制寄存器88HTMOD定时/计数器方式寄存器89HTL0定时/计数器0初值寄存器低字节8AHTL1定时/计数器1初值寄存器低字节8BHTH0定时/计数器0初值寄存器高字节8CHTH1定时/计数器1初值寄存器高字节8DH* P1P1口输入输出寄存器90HPCON电源控制寄存器97H* SCON串行口控制寄存器98HSBUF串行口数据缓冲器99H* P2P2口输入输出寄存器A0H* IE中断允许寄存器A8H* P3P3口输入输出寄存器B0H* IP中断优先级寄存器B8H* PSW程序状态字D0H* ACC累加器E0H* BB寄存器F0H按字节访问,但每位有规定

20、含义按字节访问,但每位有规定含义位地址/位名字节地址位地址/位名字节地址四. 片外数据存储器 v当片内数据存储器不够用时,可通过三总线结构,最多扩展64K片外数据存储器,地址范围为0000H0FFFFH。v对片外数据存储器的读写由/RD和/WR信号控制v具体系统可在64K限度内根据需要扩展,对于片外程序存储器的扩展也是按这一原则进行。vMCS51的I/O接口和片外数据存储器共用64K地址空间,扩展时要存储器和I/O数据读写冲突。2.3.2.2 MCS51单片机的逻辑存储空间 v单片机系统中,内部数据存储器和外部数据存储器不仅在物理上存在,而且可以同时使用;v内部程序存储器和外部程序存储器空间虽

21、然在物理同时存在,但在具体系统中,两个程序存储器空间的低4K只能任选其一,不能同时使用,v具体使用哪4K由/EA引脚决定: /EA接地,使用片外低4K;反之使用片内低4K。v因此,单片机在逻辑上只有3个存储空间,即内部数据存储器、外部数据存储器和程序存储器。 存储空间结构示意图 片内数据存储器程序存储器外部数据存储器0000H0FFFH 存储器结构小节 MCS51单片机的存储器的体系结构比较复杂, 该体系结构是硬件系统设计和控制软件编制的基础!vMCS51单片机的存储器按所在位置不 同有片内和片外之分: 片内存储器集成在芯片内部; 片外存储器又称外部存储器,是根据系统需要,用存储器芯片扩展而成

22、51系统可扩展64K程序存储器和64K数据存储器具体系统中,片外存储器的容量可能不同v MCS51单片机的存储器按在系统中的作 用分为程序存储器和数据存储器:程序存储器:用于存放编写的程序,CPU从程序存储器获取指令、进行译码和执行 数据存储器:存放运算的中间结果、输入/输出的数据等4“数据”和“指令”在本质上都是二进制代码,51单片机根据二进制代码所在的存储器空间不同,对其有不同的解释vMCS51单片机的存储器使用的器件可以 是ROM、RAM、EPROM、EEPROM 以及FLASH 等不同器件的存储特性不同,与其在系统是程序存储器还是数据存储器没有必然联系所有类型的存储器芯片都既可作数据存

23、储器也可作程序存储器用ROM、EPROM、EEPROM作程序存储器,用 RAM作数据存储器 由于单片机存储器有内外和程序/数据之分,所以单片机在物理上有物理上有 4 个存储空间,且地址有重叠。在使用是要特别注意: 1)在具体系统中,片内、外程序存储在具体系统中,片内、外程序存储器的低器的低4K只能任选其一,不能同时使用。只能任选其一,不能同时使用。 具体使用哪4K由/EA引脚决定: /EA接地,使用片外低4K; 反之使用片内低4K 。因此,单片机在逻辑上只有逻辑上只有 3 个存储空间。2)访问不同的地址空间指令不同。)访问不同的地址空间指令不同。 分别使用分别使用MOV,MOVX,MOVC指令

24、访问内部指令访问内部数据存储器、外部数据存储器和程序存储。数据存储器、外部数据存储器和程序存储。3)使用MOV,MOVX,MOVC指令访问不同存储访问不同存储器空间时,单片机器空间时,单片机CPU发出的控制信号不同发出的控制信号不同:vMOVC访问片外程序存储器时,产生/PSEN信号;vMOVX读写片外数据存储器时产生/RD和/WR信号。4)访问程序存储器和片外数据存储器时使用16位地址,访问片内数据存储器时使用8位地址容易混淆的概念:容易混淆的概念:数据存储器与RAM;程序存储器与ROM。 数据存储器与程序存储器是指它在单片机系统中所处的地位和功能,取决于受控于单片机CPU的何种信号。 RA

25、M与ROM是指不同类型的存储器器件,它们特性不同。 在51单片机系统中一般用一般用RAM作数据存储器,ROM作程序存储器。 但两者概念完全不同完全不同。 一个存储器芯片在单片机系统中到底是程序存储器还是数据存储器不取决于它是ROM/RAM/EPROM或是其他器件,而仅仅取决于它受控于单片机什么信号受控于PSEN信号的是程序存储器;受控于RD/WR信号的是数据存储器。 2.4 MCS51单片机的并行单片机的并行I/O接口接口 2.4.1 P0口的结构 它由一个输出锁存器、两个三态输入缓冲器和输出驱动及控制电路组成P0口既可作一般I/O口使用,也可作低8位地址线和数据线使用P0口作一般I/O口使用

26、时,内部控制端为低电平P0口的位结构图 P0口作一般I/O口使用时,是准双向口2.4.2 P1口的结构 vP1口是通用准双向静态口,输出有锁存vP1口内部用上拉电阻代替了P0口的场效应管T1,因此作输出时不需外接上拉电阻vP1口有输入、输出和读修改写3种工作方式 2.4.3 P2口的结构 vP2口既可作通用I/O口,又是高8位地址总线v和其它口区别在于多了IO/地址转换部分2.4.4 P3口的结构 当处于第一功能时,第二功能输出线为1P3用作第二功能使用 当CPU不对P3口进行字节或位寻址时,内部硬件自动将口锁存器的Q端置1,这时,P3口作为第二功能使用。I/O口第第 二二 功功 能能I/O口

27、第第 二二 功功 能能P3.0串行数据接收端P3.4T/C0外部脉冲输入端P3.1串行数据发送端P3.5T/C1外部脉冲输入端P3.2外部中断0输入P3.6写片外数据存储器P3.3外部中断1输入P3.7读片外数据存储器2.4.5 并行I/O口小结 1.驱动能力vP0P3口可兼容CMOS和TTL电平vP0口的每一位口线可以驱动8个LSTTL负载。在作为通用 I/O口时,由于输出驱动电路是开漏方式,需外接上拉电阻;当作为地址/数据总线使用时,口线输出不是开漏的,无须外接上拉电阻。vP1、P2、P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路内部有上拉电阻,所以可以方便地由集电极开路(OC

28、门)电路或漏极开路电路驱动,无须外接上拉电阻。2.各端口的应用功能vP0口:不进行系统扩展时,可作一般I/O口使用;进行系统扩展时,是低8位地址和数据分时复用总线vP1口:单纯I/O口vP2口:不进行系统扩展时,可作一般I/O口使用;进行系统扩展时,作高8位地址总线vP3口:双功能口,其第二功能是大部分控制总线v某位作第一功能输入或作第二功能使用时,其内部锁存器必须置1(复位后内部锁存器已经置1)v复位后,32个引脚均为高电平,故在初始化时应考虑是否满足外接电路外接电路的要求。2.5 MCS51单片机引脚介绍 1.电源引脚 2.外接晶振引脚3.控制信号和其他电源引脚4.输入输出引脚1. 电源引

29、脚vVCC:电源端,单片机的工作电源,接5V;vVSS:接地端;vVPP:与/EA引脚复用,对内部有EPROM的芯片编程时的编程电压输入端;v/PROG:与ALE引脚复用,内部EPROM的芯片编程时的编程脉冲入端;vVPD:与RST引脚复用,备用电源输入端,当主电源下降或断点时, VPD可为片内数据存储器提供电源,实现掉电保护; 2. 控制信号引脚vALE(Address Latch Enable):地址锁存允许信号输出端 v/PSEN(Program Select Enable):外部程序存储器输出允许控制信号v/EA:程序存储器低端部分选择控制端,/EA =0,程序存储器低端部分在片外;/

30、EA =1,程序存储器低端部分在片内vRST:复位信号输入3.并行I/O接口引脚vP0.0P0.7:P0口,数据/低八位地址复用总线端口vP1.0P1.7:P1口,静态通用端口vP2.0P2.7:P2口,高八位地址总线端口vP3.0P3.7:P3口,双功能静态端口 4. 时钟电路引脚内部振荡方式外部时钟源接入方式HMOS型CHMOS型vXTAL1:内部振荡电路输入端; vXTAL2:内部振荡电路输出端。2.6 MCS51单片机时序基本概念 时 序vCPU不间断地从程序存储器取出指令,然后执行指令,其速度可达每秒数十万条指令。因此,CPU及相关部件必须按照一定节拍协调运行。而CPU及相关部件的相

31、互协调是由CPU发出的相关信号控制的。v把CPU发出的相关信号(反映在单片机相应管脚上)的电压波形以相同的时间横轴绘在同一个波形图中,称为时序图,简称时序。v要在实时控制领域应用计算机控制必须了解 CPU 的时序。vCPU发出的时钟脉冲控制信号有两类:一类用于计算机内部,和外部无直接关系;另一类送到片外,用于控制/联络扩展的外部存储器和外部设备,这类信号和硬件设计和软件编程有直接关系!(1)振荡周期 为单片机提供时钟信号的振荡源的周期,是所有信号的最小单位(2)时钟周期 又称为状态周期S ,MCS51单片机规定两个晶振周期作为一个时钟周期,这两个晶振周期分别称为P1和P2节拍。(3)机器周期

32、6个状态周期为一个机器周期,是单片机完成一个基本操作的最短时间v有关概念和术语(4)指令周期 CPU执行一条指令所需的时间 不同的指令执行时间不一样,即指令周期不一样 MCS51的指令周期有1、2、4个机器周期3种 若外接晶振频率为12MHz,则 振荡周期1/12MHz= 1/12us=0.0833us 时钟周期2振荡周期0.167us 机器周期6时钟周期12振荡周期1us 指令周期14us有关周期信号关系图2.6 单片机的复位方式及初始状态v上电开机时 ,或者因为程序本身错误,或者受到外部干扰而“死机”,需要对计算机进行复位; vMCS51单片机的复位目的:完成设置PC指针初值设定有关特殊功

33、能寄存器的初值,是相关的功能部件复位后有一个确定的初始状态。v复位由RST引脚上持续两个以上机器周期的高电平实现。 常用复位电路上电复位电路上电复位和按键复位电路 特殊功能寄存器复位初值 特殊功能寄存器初始状态特殊功能寄存器初始状态A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0P3FFHSBUFBIP00000BSCON00HIE000000BPCON0Bv指令是规定CPU执行某类操作的命令vCPU具有的全部指令的集合称为指令系统v指令系统是人机交互的纽带v本章将介绍以下几方面的内容:单片机指令系统

34、的格式、标识及其助记符;单片机指令系统的寻址方式;单片机指令系统的分类以及每条指令的意义。 第第3章章 MCS51单片机指令系统单片机指令系统 3.1 单片机指令系统的特点 vMCS51单片机的指令系统包含5种类型的指令,有7种寻址方式,其机器语言共有255种操作代码,即机器码v汇编语言使用42种助记符表示指令的功能v每种功能的指令所涉及的操作数可能有不同的寻址方式,因此,各种功能的指令与该指令所涉及的操作数可能有的寻址方式相组合,共构造出111条指令v即:MCS51单片机的指令系统一共有42种助记符,111条汇编语言指令,且用255个机器码表示。 例如: ADD 加法助记符ADD A,RnA

35、DD A,Ri寻址方式不同具体操作数有8个,所以机器码有8个 具体操作数有2个,所以机器码有2个 汇编指令助记符机器码3.1 单片机指令系统的特点v指令系统长度:单字节指令49条;双字节指令45条;三字节指令17条。v指令执行时间:单机器周期指令64条;双机器周期指令45条;只有乘、除两条指令需要4个机器周期。v指令系统特点: 对存储空间要求较少且执行速度较快,可用较小的存储空间存放完成功能较复杂的控制程序,精简和高效,适于在实时测控领域使用。3.2 汇编语言格式及机器码表示方法3.2.1 指令系统的汇编语言格式v指令通常包含操作码(Operation Code)和操作数(Operand)两个

36、部分操作码指明执行的操作的性质与功能,即指示计算机执行何种操作;操作数指出参加操作的数据或数据所在单元的地址。v指令系统的汇编语言格式为: 标号: 操作助记符 目的操作数 ,源操作数 ;注释 3.2.2 指令系统的机器码表示方法一、单字节指令v单字节指令中既包含操作码的信息,也包含操作数的信息,单字节指令包括两种情况:一种是指令的含义和对象都很明确,用一个字节已能完全表示,即没有与这条指令功能相同而操作对象不同的指令。 例如,将累加器A的内容加1的指令 INC A即为单字节指令,指令的编码为:0000 0100B,这类指令的机器码编码格式为:另一种情况是8位编码含有操作码和寄存器编码。 例如:

37、将当前工作寄存器R0中的数据传送到累加器A中的指令:MOV A,R0,机器码为1110 1000B,这类指令的机器码编码格式为:二.双字节指令v双字节指令中,用第一字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。vMCS51指令系统中有45条双字节指令。这类指令的指令编码格式为:MOV A,01HMOV A,02H MOV A,0FFH操作数本身一字节三. 三字节指令v三字节指令的第一字节是操作码,后两个字节是操作数。v操作数可以是数据(立即数),也可以是存放数据的地址,因此,三字节指令的编码形式有以下四种情况:操作码操作码操作码操作码立即数地 址立即数地 址立即数立即数地 址地

38、 址例如:MOV 20H,#50Hv编码为01110101B,00100000B,01010000B。十六进制表示为75H,20H,50H。v功能是将数据“50H”传送到内部数据存储器的20H单元中。v这类指令中的存储单元有256个,需用一字节表示,数据也有256个,也需用一字节表示,因此需要用3个字节表示指令的具体功能3.2.3 指令中的符号标识v为了方便讲解指令系统,本书用一些符号标识来代替若干相似的操作数,以用一条“指令”代表若干条同类指令,v在后续章节中用到的符号标识及含义如下: Rn(n=07)-当前选中的工作寄存器组中的寄存器R0R7之一;Ri(i=0,1)-当前选中的工作寄存器组

39、中的寄存器R0或R1; -间址寄存器前缀; #data -8位立即数;#data16-16位立即数;direct-片内数据存储器地址及SFR地址(可用符号名称表示);addr11-11位目的地址;addr16-16位目的地址;rel-补码形式表示的8位地址偏移量,值在128127范围内; bit-片内数据存储器可位寻址单元的位地址、SFR的位地址(可用符号名称表示); /位操作数的取反操作前缀;() 表示 地址单元或寄存器中的内容; 将箭头右边的内容送入箭头左边的单元中。 将箭头左边的内容送入箭头右边的单元中。 3.3 MCS51单片机指令系统的寻址方式 v指令执行时,得到参与操作的数据或者数

40、据所在的地址单元的方法就是寻址方式。v51指令系统有七种寻址方式,即:寄存器寻址、立即寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。v一条指令执行时,对源操作数和目的操作数都要寻址,本章针对源操作数对寻址方式进行介绍。3.3.2 直接寻址 v在指令中直接给出操作数的地址,即指令中操作数部分是存放操作数的地址,这种寻址方式称为直接寻址。v直接寻址的寻址空间为片内数据存储区,即地址为00H7FH的RAM单元和地址在80H0FFH的21个特殊功能寄存器v对于特殊功能寄存器一般采用其符号名称,这主要是为了程序可读性好,不论使用符号名称还是具体地址,指令的功能和对应的机器码都完全一样 v直

41、接寻址还可用于对片内数据区中可位寻址单元的位和可位寻址的特殊功能寄存器的位进行寻址v的特殊功能寄存器的位的位地址表示方法与特殊功能寄存器地址的表示方法类似:既可用其位名称也可用位地址,为了使程序可读性好,一般使用位名称代表其具体地址。 使用直接寻址要注意两个问题 v 注意区分操作数是字节地址还是位地址 MOV A,30HMOV C,30H v 注意寄存器寻址与直接寻址的区别 INC A机器码为04H INC ACC 机器码为05E0H INC 0E0H 3.3.3 立即寻址 v指令编码中直接给出操作数(数据)的寻址方式称为立即寻址。v立即数可以为一个字节,也可以是两个字节,并要用符号“#”来标

42、识v由于立即数是一个常数,所以只能作为源操作数。v立即寻址所对应的寻址空间为程序存储器。 例:MOV A,#5AH 5AH特殊功能寄存器区A74H5AH程序存储器3.3.4 寄存器间接寻址 v指令中给出寄存器名,以该寄存器中的内容为地址,从该地址去取操作数的寻址方式称为寄存器间接寻址。v寻址的存储空间为片内数据存储器或片外数据存储器。 v为了和寄存器寻址相区别,寄存器名前加“”符号v寻址片内数据存储器时,数据传送采用“MOV”类指令,CPU不产生访问外部数据存储器的读/写信号,间接寻址寄存器采用寄存器R0或R1(堆栈操作时采用SP);v寻址片外数据存储器时,数据传送采用“MOVX”类指令,CP

43、U将产生访问外部数据存储器的读/写信号,这时间接寻址寄存器有两种选择:采用R0和R1作间址寄存器,这时R0或R1提供低8位地址(外部数据存储器多于256字节采用页面方式访问时,由P2口未使用的I/O引脚提供高位地址);采用DPTR作为间址寄存器,提供16位地址,可访问整个片外数据存储器的64K空间。 例:假设DPTR内容为2000H, 片外数据存储器2000H单元内容为30H,片外数据存储器累加器A执行 MOVX A,DPTR将以DPTR的内2000H为地址,把片外数据存储器2000H单元内容30H传送到累加器A3.3.5 变址寻址v以一个基地址加上一个偏移量形成操作数地址的寻址方式称为变址寻

44、址。v基址寄存器可以是数据指针DPTR或程序计数器PC,基地址则是基址寄存器的内容;v累加器A作为偏移量寄存器,其内容为偏移量v基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址。变址寻址的寻址空间为程序存储器。变址寻址的指令只有两条,即: MOVC A,A+PC MOVC A,A+DPTR v两条指令均访问程序存储器3.3.6 相对寻址 v相对寻址用于转移类指令,该寻址方式以程序计数器PC的当前值(指读出该2字节或3字节的转移指令后,PC指向的下条指令的地址)为基准,加上指令中给出的相对偏移量 rel 形成目标地址,并将目标地址送入PC,使程序转移到目标地址继续执行 v目标地址源地址转移

45、指令的字节数rel v假设转移指令 SJMP 08H从程序存储器2000H单元开始存放,因为这条指令是两字节指令,所以v目标地址2000H208H200AH3.3.7 位寻址 v对位地址中的内容进行操作的寻址方式称为位寻址。v采用位寻址指令的操作数是8位二进制数中的某一位。下列指令均是位寻址指令:MOV C,20HSETB 30HCLR RI v位寻址指令中,操作数部分是要操作的数的位地址,因此,位寻址实质上是直接寻址。 位地址的表示方法1. 用位名称(限特殊功能寄存器) 例如: CLR RS02. 用位地址(通用) 例如: CLR 0D3H3. 用“字节地址.位”的形式(通用) 例如: CL

46、R 0D0H.3 4. 对于可位寻址的特殊功能寄存器,可用“特殊功能寄存器名.位” 例如: CLR PSW.35.通过BIT伪指令给位地址赋予名称,然后使用名称对位进行操作 例如: FLAG BIT 30H MOV C,FLAG 3.4 指令系统分类介绍指令系统分类介绍 v指令系统的111条指令,按照指令功能,可大致分为v数据传送类指令、v算术操作类指令、v逻辑操作类指令、v程序转移类指令、v位操作指令。注意v不同的指令寻址的存储区不一样,要操作某个地址单元中的数据,不仅地址要正确,还必须保证所使用的指令能寻址数据所在的那个逻辑存储区。v必须清楚指令中源操作数和目的操作数所对应的逻辑存储区 3

47、.4.1 数据传送类指令 v传送类指令是最基本,使用最多的一类指令,可实现数据传送、存储和交换等操作v这类指令一般不影响标志寄存器PSW的状态,v例外:将数据传送到累加器A时,会影响奇偶标志P 1.以累加器以累加器A为目的操作数的传送指令为目的操作数的传送指令 v源操作数的寻址方式可以是寄存器寻址、直接寻址、寄存器间接寻址、和立即寻址四种基本寻址方式 MOV A , Rn ; (A)(Rn)MOV A , direct ;(A)(direct)MOV A , Ri ;(A)(Ri)MOV A, #data ;(A)#data 例:已知(A)30H,(R0)=40H,片内数据存储区40H单元的内

48、容为(40H)=50H:MOV A,R0 ;将R0中的数据取出送入A,(A)=40HMOV A,40H ;将40H单元数据送入A,(A)=50HMOV A,R0 ;以R0为间址寄存器,将其内容40H作为地址,再把该地址单元(片内数据存储区40H单元)的内容送入A,(A)=50H。2.以寄存器Rn为目的操作数的传送指令 vMOV Rn,direct; Rn (direct)vMOV Rn,#data; Rn #datavMOV Rn,A; Rn A 例:若片内数据存储器50H单元的内容(50H)=40H, 执行指令 MOV R6,50H 后,(R6)40H。 3.以直接地址为目的操作数的传送指令

49、以直接地址为目的操作数的传送指令 vMOV direct,A;(direct) (A)vMOV direct,Rn;(direct) (Rn)vMOV direct,direct1;(direct)(direct1)vMOV direct,Ri ;(direct)(Ri)vMOV direct,#data;(direct) #data 4. 以间接地址为目的操作数的传送指令以间接地址为目的操作数的传送指令 vMOV Ri , A ; (Ri) (A)vMOV Ri , direct ; (Ri) (direct)vMOV Ri , #data ; (Ri) #data 5. 查表指令查表指令

50、vMOVC A,A+DPTR ;(A)(A)+(DPTR) vMOVC A,A+PC ;(PC)(PC)+1,(A)(A)+(PC) 问题: 1 两条指令寻址的存储空间是哪个空间? 2 两条指令的查找范围各是多大?6. 外部数据存储器传送指令 MOVX A,DPTR ;(A) (DPTR)MOVX DPTR,A ;(DPTR) (A)MOVX A,Ri ;(A) (P2Ri)MOVX Ri,A ;(P2Ri)(A) v注意:v 该组指令既可访问外部数据存储器,也可访问I/O单元v 注意每条指令的数据传输方向1. 注意每条指令的16位外部地址的形成方法7.数据交换类指令vXCHA , Rn ;

51、(A) (Rn)vXCHA , direct ; (A)(direct)vXCHA , Ri ; (A)(Ri)vXCHDA , Ri ; (A03)(Ri)03)vSWAPA ; (A03)(A47) 交换类指令数据传送示意图片内数据存储器片内数据存储器8. 16位数据传送指令 MOV DPTR, #data16 ;(DPTR) #data16 9. 堆栈操作类指令堆栈操作类指令 PUSH direct ; (SP)(SP)+1,(SP)(direct) POP direct ; (direct)(SP),(SP) (SP)1v压栈时堆栈指针SP先加1,然后进行数据传送;v弹栈时先进行数据传

52、送,然后堆栈指针SP减1 v使用堆栈时要注意压栈和弹栈的顺序,并保证堆栈平衡传送类指令小节 v内数据存储器数据传送使用MOV、XCH、XCHD、SWAP、PUSH、POP等助记符;v程序存储器数据传送或称查表指令使用 MOVC助记符,共两条指令。v片外数据存储器数据传送使用 MOVX助记符,共四条指令;内部数据传送途径3.4.2 算术运算类指令 v该类指令可以完成加、减、乘、除以及加1、减1和十进制调整等运算v这类指令多数以A为源操作数之一,同时又使A为目的操作数。 1. 加法指令 vADD A, #data;(A) (A) + #data vADD A , Rn;(A) (A) + (Rn)

53、vADD A , direct;(A) (A) + (direct)vADD A , Ri;(A) (A) + (Ri)2.带进位加法指令带进位加法指令ADDC A , Rn ; (A) (A) + (Rn) + (CY)ADDC A , direct ; (A) (A)+(direct)+ (CY)ADDC A , Ri ; (A) (A)+ (Ri)+ (CY)ADDC A , #data ; (A) (A) + #data + (CY)3.带借位加法指令带借位加法指令SUBB A , Rn ; (A) (A) (Rn) (CY)SUBB A , direct ; (A) (A) (dir

54、ect) (CY)SUBB A , Ri ; (A) (A) (Ri) (CY)SUBB A , #data ; (A) (A) #data (CY)4.加1和减1指令INC A ;(A)(A)+1INC Rn;(Rn)(Rn)+1INC direct ;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR ;(DPTR)(DPTR)+1DEC A ;(A)(A)1DEC Rn;(Rn)(Rn)1DEC direct ;(direct)(direct)1DEC Ri;(Ri)(Ri)1DEC DPTR ;(DPTR)(DPTR)15.十进制调整指令 DA A ;把

55、A中的二进制数调整为BCD码v调整要完成的任务:1)当累加器A中的低4位数出现了非BCD码(10101111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。2)当累加器A中的高4位数出现了非BCD码(10101111)或高4位产生进位(CY=1),则应在高4位加6调整,以产生高4位正确的BCD结果。v执行本指令后,PSW中的CY表示结果的百位值。例:设A的内容为BCD码56,R3内容为BCD 码69 ,要求两数按10进制相加执行指令 ADD A,R3 DA A01010110011010011011111101100110 调整 001001011结果 12

56、5 10进制6.乘除指令乘除指令乘法 MUL AB ;(B)158(A)70 (A)(B)v乘数、被乘数分别存于A、Bv乘积低字节存于A。如果乘积大于0FFH,则高字节存于B,且置位溢出标志,否则溢出标志清零v进位标志CY总是为零 除 法DIV AB ;(A)商 (B)余数 (A) /(B) v运算前,被除数、除数分别存于A、B;v运算后,商存于A,余数存于B;v进位标志CY清零;v若除数为零,置位溢出标志OV,否则清零OV。 3.4.3逻辑操作类指令1.逻辑与指令ANL A, Rn ;(A)(A)(Rn)ANL A, direct ;(A)(A)(direct)ANL A, Ri ;(A)(

57、A)(Ri)ANL A, #data ;(A)(A) #dataANL direct, A ;(direct)(direct)(A)ANL direct, #data ;(direct)(direct) #data2.逻辑或指令ORL A, Rn ;(A)(A)(Rn)ORL A, direct ;(A)(A)(direct)ORL A, Ri;(A)(A)(Ri)ORL A, #data ;(A)(A) #data ORL direct, A ;(direct)(direct)(A)ORL direct, #data ;(direct)(direct)#data3. 逻辑异或指令XRL A,

58、 Rn ;(A)(A) (Rn)XRL A, direct ;(A)(A) (direct)XRL A, Ri ;(A)(A) (Ri)XRL A, #data ;(A)(A) # data XRL direct, A ;(direct)(direct)+(A)XRL direct, #data ;(direct)(direct) # datav与、或、异或三类指令都是按位进行逻辑运算,不影响CY、AC和OV标志位;v以A为目的操作数的指令影响P标志位。v如果操作数direct或Ri是并行I/O口地址,则内容取自I/O口锁存器而非引脚内容;v当目的操作数direct是并行I/O口地址是,这类指

59、令是“读修改写”指令4. 累加器清零及取反指令CPL A ;(A)(/A)CLR A ;(A)0v这两条指令影响P标志位;v第二条指令还影响Z标志5. 移位指令v所有移位指令只能对累加器A内容进行操作 v循环左移指令 RL A ;(An1)(An),(A0)(A7)CyA7 A0v 循环右移指令 RR A ;(An)(An1),(A7)(A0) v 带进位位循环左移指令 RLC A ;(An1)(An),(CY)(A7), (A0)(CY) CyA7 A0v 带进位位循环左移指令 RRC A ;(An)(An1),(CY)(A0), (A7)(CY) CyA7 A03.4.4 控制转移类指令

60、v控制转移类指令可改变程序执行的顺序,是实现判断、分支以及循环等程序结构的必需指令v控制转移类指令,可分为无条件转移指令、条件转移指令、调用子程序及返回指令及一条空操作指令1. 无条件转移指令 LJMP addr16 ;PC addr16SJMP rel ;PC PC + 2 + relAJMP addr11 ;PC100 addr11 JMP A+DPTR;PC A + DPTRv第一条为长转移指令,直接给出16位目标地址,可转移到64K程序存储器的任何单元 v第二条为相对转移指令,操作数为偏移量,即目标地址与相对转移指令的下一条指令之间的差值,因为该指令本身是一条两字节指令 ,所以:目标地

温馨提示

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

评论

0/150

提交评论